cURL - это популярный инструмент для загрузки файлов и данных с URL-адресов. Он также работает с URL-адресами HTTPS/SSL/TLS, но требует наличия действующего сертификата SSL/TLS на сервере назначения. В противном случае он выдаст ошибку сертификата. Кроме того, по умолчанию cURL и другие инструменты загрузки файлов выдают ошибку, если на URL установлены самоподписанные сертификаты. По умолчанию cURL будет проверять все SSL-соединения, используя пакет сертификатов CA, установленный на сервере URL. Но иногда вам может понадобиться проигнорировать ошибки ssl-сертификата в cURL и все равно загрузить небезопасный URL. В таких случаях вы можете выполнить действия, описанные в этой статье.
Как игнорировать ошибки SSL-сертификата в cURL
Допустим, вы хотите загрузить файл data.tar.gz с сайта www.example.com, который имеет недействительный SSL-сертификат. Вот типичная команда cURL для этого.
1 | curl -O https://www.example.com/data.tar.gz |
В таких случаях вы увидите следующее предупреждение о недействительных SSL-сертификатах.
1 2 3 4 5 6 7 8 9 10 11 12 13 | curl: (60) SSL certificate problem: Invalid certificate chain More details here: https://curl.haxx.se/docs/sslcerts.html curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option. If this HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verification probably failed due to a problem with the certificate (it might be expired, or the name might not match the domain name in the URL). If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option. |
Чтобы отключить вышеуказанные предупреждения и сообщения об ошибках, вы можете использовать опцию -k или -insecure.
1 | curl -k url |
1 | curl --insecure url |
1 | curl --insecure [options] url |
1 | curl --insecure -I url |
Например, вы можете модифицировать предыдущую команду cURL, как показано ниже, чтобы игнорировать ошибки SSL сертификата.
1 | curl -O -k https://www.example.com/data.tar.gz |
ИЛИ
1 | curl -O --insecure https://www.example.com/data.tar.gz |
Если вы хотите просмотреть только заголовок URL, то для отображения информации о заголовке необходимо использовать опцию -k или -insecure вместе с опцией -header.
1 | curl -O -k --header https://www.example.com/data.tar.gz |
ИЛИ
1 | curl -O --insecure --header https://www.example.com/data.tar.gz |
Приведенная выше команда работает только для указанного URL, но если вы хотите игнорировать все SSL ошибки/предупреждения для всех URL, вам необходимо внести изменения в конфигурационный файл cURL. Откройте его в текстовом редакторе с помощью команды ниже.
1 | nano $HOME/.curlrc |
Добавьте в этот файл следующую директиву.
1 | insecure |
Сохраните и закройте файл, чтобы применить изменения. Иногда для применения изменений может потребоваться запуск новых сеансов. Однако не рекомендуется отключать проверку SSL для всех URL.
Заключение
Хотя мы описали, как игнорировать ошибки SSL-сертификата в cURL, мы настоятельно рекомендуем не использовать небезопасные URL. Почти каждый сайт использует действующие SSL-сертификаты. Это позволяет клиенту убедиться, что он действительно общается с нужным сервером. Если вы проигнорируете ошибки SSL-сертификата, злоумышленники могут использовать атаку "человек посередине", перехватить ваше соединение с сервером на полпути и выдать себя за нужный вам сайт, тем самым отправив вам не тот файл. Поэтому, пожалуйста, не загружайте файлы и данные с недействительными, просроченными или самоподписанными сертификатами.