瀏覽器中導致SSL證書不被信任的原因有:1、SSL證書不是來自公認的證書頒發機構,導致SSL證書不被信任;2、數字證書信任鏈配置錯誤,就會被標記為不受信任;3、SSL證書的域名匹配程度不完整,會提示該證書不是這個域名的;4、SSL證書已經過了有效期,導致SSL證書不被信任;5、客戶端不支持SNI協議,導致SSL證書不被信任。
具體內容如下:
1.SSL證書不是來自公認的證書頒發機構(CA)
了解過SSL證書的朋友都明白,我們自己就可以給自己頒發數字證書(SSL證書、郵件證書、客戶端證書、代碼證書等),自己簽發的證書不需要一分錢。然而自簽發的數字證書默認是不受到客戶端操作系統信任的,所以他們訪問我們的站點的時候就會提示不信任。另一方面,公認的證書頒發機構的CA證書就是默認內置在我們的操作系統或者瀏覽器當中的,也就是客戶端操作系統默認信任的證書。所以,我們首先需要購買可信的證書頒發機構頒發的數字證書,這一點很重要。常見的公認數字證書頒發機構有Startcom、Comodo、Geotrust、Globalsign等。
2.數字證書信任鏈配置錯誤
我們接觸了很久的數字證書,基本很少有頒發機構會使用他們的根證書直接簽發客戶端證書(End User Certificate), 這可能是出于安全考慮,當然也不排除部分證書頒發機構支持這樣做(但是價格很驚人),他們都選擇用自己的二級證書進行頒發客戶端證書。如果不配置中級CA,操作系統就無法確定SSL證書的真正頒發者是誰。這個時候我們的證書和被受到信任的根證書就存在一個中間證書,這個叫中級證書頒發機構CA。如果操作系統默認只內置了根證書頒發機構,而我們直接安裝的是自己的域名證書。這個時候證書鏈就不完整,就會被標記為受信任。為了解決這個問題,我們需要在服務器配置安裝SSL證書的時候也同樣要使得我們的證書鏈完整,才能正常使用。
3.證書的域名匹配程度不完整
多數情況下我們的證書頒發機構都會為我們的域名做完整的匹配,但有些時候某些證書頒發機構可能會疏忽,我就遇見過。當我們為自己的域名比如londry.cn申請數字證書的時候,我們的CSR當中僅定義了londry.cn這一個頂級域名,并未添加更多域名DNS(可叫證書備用名稱)記錄。那么當你證書頒發的時候訪問www.londry.cn就不會受到信任,會提示你該證書不是這個域名的。這個時候你應該聯系證書頒發機構或證書提供商進行重新簽發并包含該域名,默認情況下的單域名證書是同時包含www.londry.cn和londry.cn的。
4.證書已經過了有效期
如果你的證書不是新買的,你應該注意你的數字證書已經過了有效期或這靠近有效期截止日期,你應該聯系提供商進行續費。另外如果你的證書來自某些不正常的渠道,你也應該要確定一下你的證書是否已經被吊銷,任何情況你都應該立即聯系你的證書服務提供商。
5.客戶端不支持SNI協議
這種事情只會發生在客戶使用的操作系統是WindowsXPSP2以下,Android4.2以下的情況,因為這些操作系統實在是太早了。當時系統廠商并未有支持這個SNI協議。SNI協議就是讓多個支持SSL證書的域名共享同一個獨立IP地址的技術,現在已經被幾乎所有主流操作系統和瀏覽器支持了。在很多年以前,SSL證書是需要綁定到獨立IP地址使用的,由于IPv4地址池的逐漸不夠分配,SNI技術應運而生了。