我已经购买了一个有效的证书:
例如,这个网站validation它: https : //sslanalyzer.comodoca.com/?url=www.example.com
但是当我用openSSLtesting它时,像这样:
openssl s_client -showcerts -connect https://www.example.com:443
我明白了
validation返回码:18(自签名证书)
你已经陷入了SNI洞 。
SNI是服务器名称指示 。 这可以让你有多个不同的主机名在同一个共享的IP上。 如果您实际上没有将服务器名称指定给启用了SNI的服务器,则会返回默authentication书。 (这是“SNI洞”部分)
除非您告诉OpenSSL,否则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)
如果你不这样做,那么你得到该主机的默authentication书。 这里是一个自签名证书。 (我不认为它也应该在那里,没有意义提供一个自签名的证书。)
$ 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实验室在这里报告)