У меня есть один сервер в ферме, которая внезапно не может правильно обработать сертификаты SSL. Попытка сделать вихревую команду как curl -v https://google.com
результаты в:
curl -v https://google.com
* About to connect() to google.com port 443 (#0)
* Trying 74.125.137.101... connected
* 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, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Используя openssl s_client
немного более подробно.
# openssl s_client -host google.com -port 443
CONNECTED(00000003)
depth=2 /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
verify error:num=20:unable to get local issuer certificate
Переустановка ca-certificates
- уже имейте последнюю доступную версию, согласно aptitude
, Version: 20130906ubuntu0.12.04.1
.
Реконфигурирование ca-certificates
через dpkg-reconfigure
. Это, кажется, перехеширует /etc/ssl/certs
папка, но не имеет никакого эффекта на проблему.
Используя update-ca-certificates --fresh
повторно создавать символьные ссылки в той папке
Захват последнего Mozilla приблизительно связывается от curl.haxx.se
- путем помещения этого .pem файл в /etc/ssl/certs
и выполнение команды обновления.
Сертификат это curl
требования, которые это не может найти, находятся действительно в пути сертификации.
# ls -l /etc/ssl/certs/*Geo*
lrwxrwxrwx 1 root root 57 Apr 7 15:57 /etc/ssl/certs/GeoTrust_Global_CA.pem -> /usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt
...
Файл сертификата, на который ссылаются, имеет те же полномочия как любое поле в моей сети, а именно, 644.
# ls -l /usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt
-rw-r--r-- 1 root root 1216 Feb 20 11:49 /usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt
Другие безопасные сайты, такие как шоу GitHub идентичные проблемы с различными сертификатами. Я выполняю абсолютную последнюю версию, доступную из всех пакетов для Ubuntu 12.04.4, включая curl
, openssl
, и ca-certificates
.
Что продолжается здесь?
Эта проблема прекратила происходить после пары обновлений. Похоже, что файл сертификатов CA, обеспеченный в Ubuntu repos, пропускал промежуточный сертификат для GeoTrust.
Я также имею эту проблему, пробую это:
openssl s_client -host google.com -port 443
эта команда также распечатает цепочку сертификата, последний:
s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
, таким образом, Вам также нужно https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.pem.
Этот путь сертификата отличается с путем сертификата, показал в браузере (IE, Firefox, Chrome), я не знаю, почему, но это решает мою проблему.