此連線並非私人連線? 檢查你的SSL設定等級! - huskylin

文章推薦指數: 80 %
投票人數:10人

日前網站被回報說用Safari 開啟時會顯示「此連線並非私人連線」 一開始是覺得很奇怪,憑證應該是沒有問題的(不是自簽的而且是政府單位核發的) Board 隨手記錄學習筆記 Tags Android1Back-End3CSS2Docker1Front-End4Gitlab1JavaScript1Leaflet1MySQL2Node.js5Python1Ubuntu1hadoop2impala2ubuntu2新奇分享1部屬6 TagCloud AndroidBack-EndCSSDockerFront-EndGitlabJavaScriptLeafletMySQLNode.jsPythonUbuntuhadoopimpalaubuntu新奇分享部屬 Archive 六月20211二月20212一月20212十一月20201十月20201七月20201六月20204七月20191十月20181九月20181五月20181 RecentPosts 好香的框架!NestJSZerotoHero線上課程學習筆記 2021-06-17 利用Angular動態元件,製作高彈性客製化頁面!(下) 2021-02-19 利用Angular動態元件,製作高彈性客製化頁面!(上) 2021-02-18 此連線並非私人連線?檢查你的SSL設定等級! 2021-01-28 備份在Docker中的Gitlab資料(BackupGitlabinDocker) 2021-01-01 此連線並非私人連線?檢查你的SSL設定等級! 2021-01-28 Front-End Comments WordCount:937(words) ReadCount:3(minutes) 此連線並非私人連線?檢查你的SSL設定等級!問題日前網站被回報說用Safari開啟時會顯示「此連線並非私人連線」一開始是覺得很奇怪,憑證應該是沒有問題的(不是自簽的而且是政府單位核發的)透過Chrome或是Firefox開啟時,都是沒有問題的當然是可以透過把這個網站的憑證加入到Mac的鑰匙圈存取上手動信任這個網站來規避問題不過還是要解決才來得痛快 檢查原因要檢查自己的SSL設定是否完善可使用SSLLabs檢測的服務他會偵測你SSL設定存在哪些問題、疑慮並且給出一個安全等級的分數 我的檢測結果為B級原因是檢查出「Thisservers’scertificatechainisincomplete.」的問題 什麼是CertificateChain? CertificateChain中文可翻作憑證串鏈、信任鏈、數位憑證鏈…等等 憑證主要分三種: 根憑證(RootCertificate) 中繼憑證(IntermediateCertificate) 終端憑證(End-EntityCertificate) “通常”是階級式的驗證,像資料結構的樹一樣,根憑證就是根節點,終端憑證是葉節點,其他都是中繼憑證。

使用網頁瀏覽器造訪一個網站,會執行認證路徑驗證演算法,使用該主機提供的電子憑證,驗證是否能夠對應到預先安裝的根憑證,從而驗證從根憑證到終端節點的路徑是否為一條有效的信任鏈,確保TLS安全連接中的身分。

簡單來說,憑證是否安全有效,是由一連串的憑證驗證組成的 解決問題在一般情況下,瀏覽器會自動找到對應的CertificateChain(憑證中會含有簽發者個資訊,可以一路找下去)所以在Chrome及Firefox中才沒有遇到這個問題 不確定為什麼Safari會有這個問題但是除了Safari以外如果是用cURL或是在沒有internet環境的網路也無法透過網路去找到CertificateChain所以最好的做法就是加上完整的中繼憑證 加上中繼憑證根據StackOverflow上的一篇解答SSL:Serverscertificatechainisincomplete openyoursiteinabrowser clickongreenpadlockanddisplaycertificateproperties exporteverycertificateinthechain installnewcertonserver testnginxcofigurationnginx-t restartserverservicenginxrestart 提到一個快速的解法是在可以成功連線的瀏覽器上直接匯出金鑰練並且加入到你目前的憑證中然後重啟Nginx設定 操作範例以Firefox為例來操作找到檢視憑證後的地方後可以看到上面那一串就是這個憑證的CertificateChain瀏覽器有提供下載金鑰練的功能 打開後的結構會是一連串的 -----BEGINCERTIFICATE----- 憑證內容 -----ENDCERTIFICATE----- -----BEGINCERTIFICATE----- 憑證內容 -----ENDCERTIFICATE----- ... 看你有幾個憑證節點就會有幾個BEGIN…END 最終更新原本網站的憑證然後刷新Nginx設定(reload後才會生效) 完成後再測驗一次拿到了A級(最高可以到A+的100分,不過也會犧牲一些效能及支援度) 最後當然也就可以成功在Safari上正常瀏覽網站啦!灑花~ 回顧一下本文的重點 利用SSLLabs檢查網站 CertificateChain是什麼 如何加上完整的CertificateChain 要支援Safari瀏覽器需要注意SSL的問題 參考資料 HTTPS中证书链不完整的解决方案 OpenSSL檢測SSL的憑證串鍊 OpenSSLCertificateChain 維基百科:根憑證 如何在SSLLabs拿到100分 huskylin雜端工程師   Newer Older  



請為這篇文章評分?