Моя проблема заключалась в том, что срок действия сертификата действительно истек, но не этот конкретный, а один в цепочке подписи.
Например, для Google эта команда openssl s_client -showcerts -connect google.com:443 </dev/null | openssl x509 -noout -dates
показывает:
notBefore=Oct 6 12:37:54 2016 GMT
notAfter=Dec 29 12:28:00 2016 GMT
Однако только openssl s_client -showcerts -connect google.com:443 </dev/null
показывает не 1, а 3 сертификата (заключенных в ---BEGIN/END CERTIFICATE---
частях), первый из них принадлежит google и именно он проверен. Чтобы убедиться в этом, я скопировал (вероятно, должен быть менее ручной способ) первый в /tmp/google
и последний в /tmp/geotrust
, теперь запуск openssl x509 -noout -dates < /tmp/google
дает мне:
notBefore=Oct 6 12:37:54 2016 GMT
notAfter=Dec 29 12:28:00 2016 GMT
Что соответствует выводу первой команды и openssl x509 -noout -dates < /tmp/geotrust
:
notBefore=May 21 04:00:00 2002 GMT
notAfter=Aug 21 04:00:00 2018 GMT
Что отличается и не было показано ранее. Итак, в конце концов, моя проблема заключалась в том, что один из сертификатов высшего органа действительно устарел.
И кстати, поскольку в комментарии к вопросу предлагается обновить ОС, чтобы решить эту проблему, я полагаю, что причина та же. ОС поставляется с кучей корневых сертификатов, поэтому, если у вас сумасшедшая старая ОС, срок действия некоторых из них может истечь, вы можете либо обновить эти корневые сертификаты, либо всю ОС, чтобы решить проблему.
Также полезно знать, что запуск без showcerts
дает вам хорошее представление о цепочке сертификатов - openssl s_client -connect google.com:443 </dev/null
:
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.google.com
i:/C=US/O=Google Inc/CN=Google Internet Authority G2
1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
Все это не должно быть просрочено.
21.10.2016