У меня есть установка Plesk с несколькими сайтами. При доступе в браузере Plesk отлично обслуживает соответствующий сертификат SSl.
Но затем, когда я перехожу к нему через openssl с помощью
openssl s_client -connect mysite.com:443
, я получаю обратно SSL другого сайта. Это другой сайт на сервере, но не для этого домена.
Это ошибка, которую я получаю при использовании этого вызова openssl.
CONNECTED(00000003)
depth=0 /OU=Domain Control Validated/CN=*.example.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.example.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.example.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/OU=Domain Control Validated/CN=*.example.com
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certificates.go
daddy.com/repository/CN=Go Daddy Secure Certification Authority/serialNumber=
---
Когда у вас есть несколько сайтов, использующих отдельные сертификаты SSL, существует расширение SSL под названием SNI, которое позволяет клиенту и серверу согласовывать, какое имя хоста следует проверить.
Чтобы s_client мог использовать SNI необходимо указать в командной строке с помощью параметра -servername
.
Пример:
openssl s_client -connect example.com:443 -servername www.example.com