我已購買有效證書:
例如,該網站驗證了它: 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 實驗室報告這裡.)