我已在多个网站上设置了 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=
---
答案1
当您有多个站点使用单独的 SSL 证书时,有一个名为 SNI 的 SSL 扩展允许客户端和服务器协商应验证哪个主机名。
为了让 s_client 使用 SNI,您需要在命令行中使用选项指定它 -servername
。
例子:
openssl s_client -connect example.com:443 -servername www.example.com