Невозможно получить cURL или wget для проверки некоторых сертификатов SSL

Я заметил, что наша программа проверки ссылок, которая использует cURL, все чаще и чаще не проходит проверку сертификатов SSL. Я пытаюсь докопаться до сути.

Например, https://www.bgetem.de/ прекрасно открывается в любом браузере (IE 11, Firefox, Opera, Chrome) на моем компьютере с Windows 7, но cURL (и wget) на моем CentOS 6 и Ubuntu 16.04 не могут подтвердить сертификат.

Вот подробный вывод cURL из CentOS (Версия curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2)

* About to connect() to www.bgetem.de port 443 (#0)
*   Trying 193.104.3.166... connected
* Connected to www.bgetem.de (193.104.3.166) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* Peer's certificate issuer is not recognized: 'CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB'
* NSS error -8179
* Closing connection #0
* Peer certificate cannot be authenticated with known CA certificates

И Ubuntu (Версия curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3):

* found 173 certificates in /etc/ssl/certs/ca-certificates.crt
* found 695 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384
* server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
* Closing connection 0
curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Любая идея, в чем проблема и как я могу это исправить?

1 ответ

Решение

Как уже объясняется в сообщении об ошибке: сертификат сервера не может быть аутентифицирован с помощью известных сертификатов CA из CAfile: /etc/pki/tls/certs/ca-bundle.crt (поскольку сертификат сервера выдается центром сертификации, неизвестным вашей системе).

Две довольно распространенные причины такого сообщения:

  • Сертификат действительно подписан неизвестным центром сертификации (например, внутренним центром сертификации).
  • Сертификат подписан промежуточным сертификатом CA от одного из известных CA, и удаленный сервер неверно настроен в связи с тем, что он не включает этот промежуточный сертификат CA в качестве цепочки CA, на которую он реагирует.

Спасибо за включение доменного имени: это позволяет нам протестировать сервер SSL и подтвердить: цепочка ЦС неполная:

Как администратор этого сервера, вы можете / должны исправить файл цепочки, чтобы предотвратить эти "лишние загрузки" в разделе сертификации.

Если вы не являетесь администратором этого сервера и хотите исправить эту клиентскую сторону: загрузите этот промежуточный сертификат самостоятельно и добавьте его в локальное хранилище доверенных сертификатов.

Другие вопросы по тегам