為您解碼網(wǎng)站建設(shè)的點點滴滴
發(fā)表日期:2018-10 文章編輯:小燈 瀏覽次數(shù):3946
由于我們的部分業(yè)務(wù)場景是在微信(WebView)中打開https的web頁面,在測試過程中卻發(fā)現(xiàn)了一個問題,在Chrome中測試完全正常的https頁面,在iOS的微信(WebView)中表現(xiàn)正常,但在Android中,不論是哪個版本的安卓系統(tǒng),都不能正常打開頁面,要么就是一片白,要么就是直接無法打開,解決這個問題,需要在服務(wù)器上配置完整的SSL證書鏈。
之后在Android自帶的瀏覽器中測試,幾乎所有的手機都出現(xiàn)下面這樣的情況
證書鏈
看來Andorid的WebView不能打開頁面應(yīng)該是與這有關(guān),造成這個問題的主要原因是我們服務(wù)器配置證書的證書鏈不全造成的。
證書鏈其實就是描述證書的簽名環(huán)節(jié),就比如是 A 頒發(fā)證書給 B ,B頒發(fā)證書給C,然后我們手里的就是證書C。當證書鏈不完整的情況下,也就是沒有描述我們手中的證書C是由誰辦法的,所以導(dǎo)致的瀏覽器不認為你這個證書是可信的授權(quán)證書。
每個設(shè)備中都會存有一些默認的可信的根證書,但很多CA是不使用根證書進行簽名的,而是使用中間層證書進行簽名,因為這樣做能更快的進行替換(這句可能不對,原文是 because these can be rotated more frequently)。
如果你的服務(wù)器上沒有中間件證書,這樣的結(jié)果就是你的服務(wù)器上只有你的網(wǎng)站的證書,客戶端的瀏覽器里只有CA的根證書,這樣就會導(dǎo)致證書信任鏈不全,才導(dǎo)致了上面那兩個截圖中的問題。這種中間層證書不全的問題多出現(xiàn)在移動端的瀏覽器上(就我目前看,iOS8 iOS9 都沒有出現(xiàn)問題,Andorid各個版本都有這個問題)。
當你服務(wù)器上的證書中的信任鏈不全的情況下,瀏覽器會認為當前的鏈接是一個不安全的,會阻止頁面的打開。
解決方案
說清楚了原因,解決問題就很簡單了,只要把我們的證書鏈補全就可以了。
從SSL證書服務(wù)商那里,你獲得的crt證書文件大概是這個樣子的:
<pre style="margin: 15px 0px; padding: 10px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; font-size: 12px; line-height: 18px; font-family: Consolas, monospace, serif; color: rgb(68, 68, 68); tab-size: 4; overflow: auto; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background: rgb(245, 245, 245);">-----BEGIN CERTIFICATE-----
# 證書內(nèi)容
-----END CERTIFICATE-----
</pre>
在你補全中間層證書和根證書后,新的crt證書文件看起來是這樣的:
<pre style="margin: 15px 0px; padding: 10px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; font-size: 12px; line-height: 18px; font-family: Consolas, monospace, serif; color: rgb(68, 68, 68); tab-size: 4; overflow: auto; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background: rgb(245, 245, 245);">-----BEGIN CERTIFICATE-----
# 證書內(nèi)容 1
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
# 證書內(nèi)容 2
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
# 證書內(nèi)容 3
-----END CERTIFICATE-----
</pre>
這里包含了你的證書,以及從你的證書向上遞歸直至根證書的全部證書,這樣就可以向瀏覽器證明你的鏈接是安全的。
補全證書鏈
比較方便的是使用這個在線的工具:
https://certificatechain.io
進入這個網(wǎng)站,粘貼進你的證書(只包含你的用戶證書),或者上傳你的證書,他就會給出補全后的證書文件,你只需要粘貼回你的文件或者下載覆蓋就可以了,然后在服務(wù)器上重新部署就可以解決問題。
由于這里只需要上傳證書,所以是安全的,不需要擔(dān)心不安全的問題。
如果不喜歡用在線的工具,可以使用下面這個本地的工具,PHP寫的,在命令行中運行:
Github ssl-certificate-chain-resolver
PS:
一般情況下
cert.pem 是證書
chain.pem 是證書鏈編碼
fullchain.pem 是cert.pem和chain.pem的證書集合
privkey.pem 是私鑰文件
1
日期:2018-04 瀏覽次數(shù):6776
日期:2017-02 瀏覽次數(shù):3451
日期:2017-09 瀏覽次數(shù):3676
日期:2017-12 瀏覽次數(shù):3544
日期:2018-12 瀏覽次數(shù):4842
日期:2016-12 瀏覽次數(shù):4594
日期:2017-07 瀏覽次數(shù):13659
日期:2017-12 瀏覽次數(shù):3522
日期:2018-06 瀏覽次數(shù):4279
日期:2018-05 瀏覽次數(shù):4456
日期:2017-12 瀏覽次數(shù):3569
日期:2017-06 瀏覽次數(shù):3995
日期:2018-01 瀏覽次數(shù):3958
日期:2016-12 瀏覽次數(shù):3923
日期:2018-08 瀏覽次數(shù):4441
日期:2017-12 瀏覽次數(shù):3730
日期:2016-09 瀏覽次數(shù):6444
日期:2018-07 瀏覽次數(shù):3221
日期:2016-12 瀏覽次數(shù):3241
日期:2018-10 瀏覽次數(shù):3392
日期:2018-10 瀏覽次數(shù):3502
日期:2018-09 瀏覽次數(shù):3592
日期:2018-02 瀏覽次數(shù):3611
日期:2015-05 瀏覽次數(shù):3537
日期:2018-09 瀏覽次數(shù):3318
日期:2018-06 瀏覽次數(shù):3447
日期:2017-02 瀏覽次數(shù):3884
日期:2018-02 瀏覽次數(shù):4347
日期:2018-02 瀏覽次數(shù):4191
日期:2016-12 瀏覽次數(shù):3587
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.