HTTPS中證書鏈不完整的解決方案

2021-09-01 02:57:31 字數 1730 閱讀 3816

tomcat8.5配置pfx格式ssl證書後,https可以正常訪問,但是(問題與下面這個情況相同):

myssl的證書測試反饋缺少中間證書:

ssllab的證書測試更詳細,完全截圖的話圖太多,就只貼兩張關鍵位置的:

chain issues 這裡會顯示certificate chain incomplete(圖是問題解決後截的)

握手模擬這裡的絕大多數android版本(低版本)會像下圖第一行一樣 no fs,也就是說android瀏覽器打不開**(圖也是後來截的,沒查到fs是什麼意思,大佬求告知)

看了下面這些介紹差不多能有個大體的認識,想完全理解還需要多下功夫

**ssl/tls協議-阮一峰的網路日誌

主流數字證書都有哪些格式?

der、crt、cer、pem格式的證書及轉換

根證書和中間根證書之間的區別

中間證書的使用

其中crt與cer可以理解成相同的格式,乙個用於linux,乙個用於windows.

證書鏈certificate chain與中間證書指的應該是同乙個東西

證書鏈其實就是描述證書的簽名環節,就比如是 a 頒發證書給 b ,b頒發證書給c,然後我們手裡的就是證書c。當證書鏈不完整的情況下,也就是沒有描述我們手中的證書c是由誰辦法的,所以導致的瀏覽器不認為你這個證書是可信的授權證書。

每個裝置中都會存有一些預設的可信的根證書,但很多ca是不使用根證書進行簽名的,而是使用中間層證書進行簽名,因為這樣做能更快的進行替換(這句可能不對,原文是 because these can be rotated more frequently)。

如果你的伺服器上沒有中介軟體證書,這樣的結果就是你的伺服器上只有你的**的證書,客戶端的瀏覽器裡只有ca的根證書,這樣就會導致證書信任鏈不全,才導致了上面那兩個截圖中的問題。這種中間層證書不全的問題多出現在移動端的瀏覽器上(就我目前看,ios8 ios9 都沒有出現問題,andorid各個版本都有這個問題)。

當你伺服器上的證書中的信任鏈不全的情況下,瀏覽器會認為當前的鏈結是乙個不安全的,會阻止頁面的開啟。

問題的原因是沒有配置中間證書,那解決方案自然是加上中間證書

從ssl證書服務商那裡,獲得的crt證書檔案大概是這個樣子的:

-----begin certificate-----

# 證書內容

-----end certificate-----

在你加上中級證書後,新的crt證書檔案看起來是這樣的:

-----begin certificate-----

# 證書內容 1

-----end certificate-----

-----begin certificate-----

# 證書內容 2

-----end certificate-----

然後再用這個新的證書和key檔案轉化出pfx格式證書就ok了

HTTPS中證書鏈不完整的解決方案

證書鏈 看來andorid的webview不能開啟頁面應該是與這有關,造成這個問題的主要原因是我們伺服器配置證書的證書鏈不全造成的。證書鏈其實就是描述證書的簽名環節,就比如是 a 頒發證書給 b b頒發證書給c,然後我們手裡的就是證書c。當證書鏈不完整的情況下,也就是沒有描述我們手中的證書c是由誰辦...

證書鏈不完整的解決方法

有一次在做安卓專案,開啟安卓應用總是提示ssl證書報錯,於是使用這個 查詢了下證書的狀態,報告中指出,證書鏈不完整。於是在證書申請 找到了下面資料 安裝伺服器證書 1.獲取伺服器證書檔案 將證書簽發郵件中的包含伺服器證書 的文字複製出來 包括 begin certificate 和 end cert...

C 解決串列埠接收資料不完整

使 用快取機制完成。首先通過定義乙個成員變數listbuffer new list 4096 用來存放所有的資料,在接收函式裡,通過buffer.addrange 方法不斷地將接收到的資料加入到buffer中,並同時對 buffer中的資料進行檢驗,如果達到一定的長度並且校驗結果正確 校驗方法在傳送...