2017-05-04 203 views
-1

我在Centos6/Apache上安裝了一個新的SSL證書,並且我的Web瀏覽器不斷提取舊證書。爲了測試我的設置,我使用「openssl s_client」,但是我看到基於「-servername」參數的不同結果。沒有人看起來這個參數,它不出現在手冊頁,但我看到它在這裏提到OpenSSL: Check SSL Certificate Expiration Date and More在openssl中使用'-servername'參數s_client

如果我運行此命令:

echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -issuer -subject -dates

我拿到證書的正確日期。

(notBefore = 4月20日00:00:00 2017 GMT notAfter = 4月20日23點59分59秒2018 GMT)

但是,如果我的intruduce參數-servername到條命令

echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -issuer -subject -dates

然後我得到我的瀏覽器中顯示的截止日期 -

(notBefore =年04月20日00:00:00 GMT 2016 = notAfter 4月20日23:59:59 2017年GMT)

任何人都可以解釋爲什麼會發生這種情況,因爲這必須與我的SSL證書在瀏覽器中顯示爲過期的原因相關。

感謝 Ø

+0

Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[Unix&Linux堆棧交換](http://unix.stackexchange.com/)會是一個更好的地方。另請參閱[我在哪裏發佈有關Dev Ops的問題?](http://meta.stackexchange.com/q/134306) – jww

+0

您通常需要使用'-tls'開關之一和'-servername'。 SNI是TLS 1.0(及以上)的擴展。 – jww

回答

1

的服務器名稱參數的s_client.First是記錄(簡述)此頁上:

https://www.openssl.org/docs/man1.0.2/apps/s_client.html

本質上講,它的工作原理有點像在HTTP「主機」頭,即它導致請求的域名作爲SSL/TLS握手的一部分進行傳遞(在SNI - 服務器名稱指示擴展中)。然後服務器可以在一個IP後面託管多個域。它將根據請求的域名以相應的證書作出響應。

如果您沒有請求特定的域名,服務器不知道要提供哪個證書,那麼最終會出現一個默認域名。在您的情況下,服務器爲您的域提供的其中一個證書已過期,但默認證書沒有。

您需要確保您正在爲您的域更新正確的VirtualHost條目,例如,請參閱:

https://www.digicert.com/ssl-support/apache-multiple-ssl-certificates-using-sni.htm

+0

謝謝馬特 - 那是我需要的確切答案。我看着你發給我的手冊頁鏈接,沒有你的解釋,我仍然會撓撓我的腦袋。再次感謝! – user1398017

+0

太棒了!很高興你把事情解決了。請你能標記我的答案是正確的嗎? –