SNI-Дыра

SNI-Дыра

Я приобрел действительный сертификат:

Например, этот сайт это подтверждает: https://sslanalyzer.comodoca.com/?url=www.example.com

Но когда я тестирую его с помощью openSSL, вот так:

openssl s_client -showcerts -connect https://www.example.com:443

я получил

Проверьте код возврата: 18 (самозаверяющий сертификат)

решение1

SNI-Дыра

Вы попали вотверстие 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/[email protected]
 issuer=/O=americanfuturegate.com/CN=*.americanfuturegate.com/[email protected]
     Verify return code: 18 (self signed certificate)

Проверьте правильность установки

Примечание: Я настоятельно рекомендую вам отключить SSL3. (Отчет SSL Labsздесь.)

Связанный контент