Я купил действительный сертификат:
Например, этот сайт проверяет его: https://sslanalyzer.comodoca.com/?url=www.example.com
Но когда я тестирую его с openSSL, как это:
openssl s_client-showcerts - соедините https://www.example.com:443
Я добираюсь
Проверьте код возврата: 18 (сам подписанный сертификат)
Вы попали в дыру SNI .
SNI - это указание имени сервера . Это позволяет иметь несколько разных имен хостов, живущих на одном общем IP. И если вы на самом деле не укажете имя сервера для сервера с поддержкой SNI, вы получите сертификат по умолчанию. (Это часть «дыры SNI».)
И OpenSSL не будет предоставлять имя сервера серверу TLS, пока вы не сообщите ему об этом. Для этого используйте параметр -servername
.
$ echo '' | openssl s_client -showcerts -connect www.unival-logistics.com:443 -servername www.unival-logistics.com 2>/dev/null | grep -Ei 'subject|issuer|return'
subject=/C=US/OU=Domain Control Validated/CN=www.unival-logistics.com
issuer=/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Domain Validation CA - SHA256 - G2
Verify return code: 20 (unable to get local issuer certificate)
Если вы его не укажете, то получите сертификат по умолчанию для этого хоста. А вот и самоподписанный сертификат. (И я не думаю, что он должен быть там. Нет смысла доставлять самозаверяющий сертификат.)
$ echo '' | openssl s_client -showcerts -connect www.unival-logistics.com:443 2>/dev/null | grep -Ei 'subject|issuer|return'
subject=/O=americanfuturegate.com/CN=*.americanfuturegate.com/emailAddress=REDACTED1@example.com
issuer=/O=americanfuturegate.com/CN=*.americanfuturegate.com/emailAddress=REDACTED1@example.com
Verify return code: 18 (self signed certificate)
Примечание: я настоятельно прошу вас отключить SSL3. (Отчет SSL Labs здесь .)