Я отвечаю за веб-сервер, на котором запущен apache, на котором размещается около 15 разных сайтов. Теперь один сайт должен взаимодействовать с другим, наши разработчики пытаются подключиться к нему через curl с помощью PHP. Это не работает. Я попытался отладить его в командной строке через:
curl --verbose https://deutsche-unterstuetzungskasse.de
И это дает мне ошибку 60 (указанную в заголовке темы), что довольно странно b / c со всеми другими страницами, на которых он работает.
Более подробный:
* About to connect() to deutsche-unterstuetzungskasse.de port 443 (#0)
* Trying 195.244.228.197...
* connected
* Connected to deutsche-unterstuetzungskasse.de (195.244.228.197) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection #0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html
...
Все наши страницы оснащены как работающим ssl-сертификатом, так и тем, который не работает. Единственная разница, похоже, в том, что у этого нет подстановочного сертификата. Если я установлю параметр завитка --cacert /etc/ssl/certs/ca-certificates.crt
он работает нормально, но на самом деле не решает проблему. Вот подробный вывод:
* About to connect() to deutsche-unterstuetzungskasse.de port 443 (#0)
* Trying 195.244.228.197...
* connected
* Connected to deutsche-unterstuetzungskasse.de (195.244.228.197) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using ECDHE-RSA-AES256-GCM-SHA384
* Server certificate:
* subject: C=DE; postalCode=22303; ST=Hamburg; L=Hamburg; street=Barmbeker Stra�e 2-6; O=Cevo Systemhaus AG; OU=IT; CN=deutsche-unterstuetzungskasse.de
* start date: 2017-10-19 00:00:00 GMT
* expire date: 2019-01-17 23:59:59 GMT
* subjectAltName: deutsche-unterstuetzungskasse.de matched
* issuer: C=GB; ST=Greater Manchester; L=Salford; O=COMODO CA Limited; CN=COMODO RSA Organization Validation Secure Server CA
* SSL certificate verify ok.
> GET / HTTP/1.1
> User-Agent: curl/7.26.0
> Host: deutsche-unterstuetzungskasse.de
> Accept: */*
>
...
Может ли кто-нибудь помочь мне в этом? Я нахожусь в конце моих знаний
РЕДАКТИРОВАТЬ:
Итак, я провел дополнительное исследование и нашел этот аккуратный тест SSL-сервера:
https://www.ssllabs.com/ssltest/analyze.html?d=deutsche-unterstuetzungskasse.de
Похоже, это показывает мою проблему. Каким-то образом сервер дает * c-core.de в качестве альтернативных имен во втором сертификате. Как я могу это исправить?
Мне удалось исправить эту проблему! Как заявил Саймон Гринвуд, это может иметь какое-то отношение к старому программному обеспечению, что имело место, но curl уже был обновлен. Я обновил Apache и openssl, после чего получил еще одну ошибку:
.. "процедуры сертификата: X509_STORE_add_cert: сертификат уже в хэш-таблице"
Я не мог найти много в Google или в другом месте, но где-то кто-то сказал, что команда
c_rehash
может это исправить. И в конце концов это произошло! У меня все еще есть проблема с неправильными именами в сертификате, но, похоже, это больше не беспокоит завиток.
Подстановочные сертификаты от одного и того же эмитента? Судя по свидетельствам, похоже, что у вас нет действующего CA для Comodo. В вашей конфигурации apache у вас обычно есть настройки для SSLCertificateFile и SSLCertificateChainFile, поэтому проверьте это.