天天看點

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

端午出去玩的時候,老闆打電話說公司網站的 HTTPS 過期了,通路不了(見下圖),要我立馬更新一下。可惜我當時沒帶電腦,無能為力,可把老闆急壞了。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書
沒辦法,急就先急着,隻能等我有電腦了才能搞。點選進階,可以看到以下資訊:

z.xxxx.cn 通常會使用加密技術來保護您的資訊。Google Chrome 此次嘗試連接配接到 z.xxxx.cn 時,此網站發回了異常的錯誤憑據。這可能是因為有攻擊者在試圖冒充 z.xxxx.cn,或 Wi-Fi 登入螢幕中斷了此次連接配接。請放心,您的資訊仍然是安全的,因為 Google Chrome 尚未進行任何資料交換便停止了連接配接。

您目前無法通路 z.xxxx.cn,因為此網站使用了 HSTS。網絡錯誤和攻擊通常是暫時的,是以,此網頁稍後可能會恢複正常。

我使用的是 FreeSSL 證書,原因很簡單,老闆不舍得掏錢,這個證書每次申請隻能免費使用一年。

FreeSSL 是一個免費提供 HTTPS 證書申請、HTTPS 證書管理和 HTTPS 證書到期提醒服務的網站,旨在推進 HTTPS 證書的普及與應用,簡化證書申請的流程。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

由于我之前已經注冊過了,是以從「控制台」的證書清單裡就可以看到過期資訊。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

不過很遺憾,沒有直接重新申請的選項。隻能在首頁重新填寫域名,點選「建立免費的 SSL 證書」。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

品牌證書選擇「TRUSTAsia」就行了,可以免費使用一年,到期了重新再申請一下就可以了。雖然麻煩點,但能給老闆省點錢,看我這良心員工啊。

完事後會跳轉到下圖這個頁面,注意填寫一下郵箱。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

有些同學可能對選項不太了解,我這裡統一解釋下:

1)證書類型

我選擇的是 RSA,那 ECC 又是什麼,兩者有什麼差別?

HTTPS 通過 TLS 層和證書機制提供了内容加密、身份認證和資料完整性三大功能,可以有效防止資料被監聽或篡改,還能抵禦 MITM(中間人)攻擊。TLS 在實施加密過程中,需要用到非對稱密鑰交換和對稱内容加密兩大算法。

對稱内容加密強度非常高,加解密速度也很快,隻是無法安全地生成和保管密鑰。在 TLS 協定中,應用資料都是經過對稱加密後傳輸的,傳輸中所使用的對稱密鑰,則是在握手階段通過非對稱密鑰交換而來。常見的 AES-GCM、ChaCha20-Poly1305,都是對稱加密算法。

非對稱密鑰交換能在不安全的資料通道中,産生隻有通信雙方才知道的對稱加密密鑰。目前最常用的密鑰交換算法有 RSA 和 ECDHE:RSA 曆史悠久,支援度好,但不支援 PFS(Perfect Forward Secrecy);而 ECDHE 是使用了 ECC(橢圓曲線)的 DH(Diffie-Hellman)算法,計算速度快,支援 PFS。

是不是一下子就點醒了你?

2)驗證類型

我選擇的是檔案驗證,那 DNS 驗證又是什麼,兩者有什麼差別?

首先,我們需要明白一點,CA(Certificate Authority,證書頒發機構) 需要驗證我們是否擁有該域名,這樣才給我們頒發證書。

檔案驗證(HTTP):CA 将通過通路特定 URL 位址來驗證我們是否擁有域名的所有權。是以,我們需要下載下傳給定的驗證檔案,并上傳到您的伺服器。

DNS 驗證:CA 将通過查詢 DNS 的 TXT 記錄來确定我們對該域名的所有權。我們隻需要在域名管理平台将生成的 TXT 記錄名與記錄值添加到該域名下,等待大約 1 分鐘即可驗證成功。

是以,如果對伺服器操作友善的話,可以選擇檔案驗證;如果對域名的伺服器操作比較友善的話,可以選擇 DNS 驗證。如果兩個都友善的話,請随意選啦。

3)CSR 生成

我選擇的是離線生成,這也是 FreeSSL 現在推薦的方式,那到底三個選項之間有什麼差別呢?

離線生成:私鑰在本地加密存儲,更安全;公鑰自動合成,支援常見證書格式轉換,友善部署;支援部分 WebServer 的一鍵部署,非常便捷。

離線生成的時候,需要先安裝 KeyManager,可以提供安全便捷的 SSL 證書申請和管理。下載下傳位址如下:

https://keymanager.org/

浏覽器生成:在浏覽器支援 Web Cryptography 的情況下,會使用浏覽器根據使用者的資訊生成 CSR 檔案。

Web Cryptography,網絡密碼學,用于在 Web 應用程式中執行基本加密操作的 JavaScript API。很多浏覽器并不支援

我有 CSR:可以粘貼自己的 CSR,然後建立。

明白差別之後,選擇「點選建立」,如果沒有安裝 KeyManager 的話,會彈出提示對話框,讓你安裝。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

直接點選「安裝 KeyManager」進行下載下傳。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

輕按兩下運作安裝,成功後打開 KeyManager。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

填寫密碼後點選「開始」,稍等片刻,出現如下界面。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

回到 FreeSSL 首頁,點選下圖中紅色框中的連結「再次嘗試啟動 KeyManager」。

注意 KeyManager 界面的變化,會出現以下界面中的資訊。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

可以回到浏覽器頁面,點選「繼續」按鈕:

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

會跳出檔案驗證的提示資訊:

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

點選右下角的「下載下傳檔案」。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

好了,現在連結伺服器,将下載下傳好的檔案上傳到「檔案路徑」處指出的路徑下,一定要路徑比對上,否則無法完成驗證。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

檔案上傳成功後,就可以「點選驗證」,稍等片刻後,就會出現以下提示資訊:

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

點選「儲存到 KeyManager」,可以看到證書的有效期延長了。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

選擇「導出證書」:

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

我的伺服器軟體使用的是 Tomcat,是以選擇導出的格式是 jks。記住你的私鑰加密密碼,後面要用。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

完事後點選「導出」按鈕。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

将生成好的證書,上傳到伺服器。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

接下來,打開 Tomcat 的 server.xml 檔案,配置一下 Connector 連結。

 <Connector port="81" protocol="HTTP/1.1"
                        maxThreads="250" maxHttpHeaderSize="8192" acceptCount="100" connectionTimeout="60000" keepAliveTimeout="200000"
                        redirectPort="8443"            
                        useBodyEncodingForURI="true" URIEncoding="UTF-8"  
                        compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata"   
            compressableMimeType="text/html,text/xml,application/xml,application/json,text/javascript,application/javascript,text/css,text/plain,text/json,image/png,image/gif"/>

<Connector
  protocol="org.apache.coyote.http11.Http11NioProtocol"
  port="443" maxThreads="200"
  scheme="https" secure="true" SSLEnabled="true"
  keystoreFile="/home/backup/xxx.cn.jks" keystorePass="Chenmo"
  clientAuth="false" sslProtocol="TLS"
useBodyEncodingForURI="true" URIEncoding="UTF-8"  
                        compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata"   
            compressableMimeType="text/html,text/xml,application/xml,application/json,text/javascript,application/javascript,text/css,text/plain,text/json,image/png,image/gif"
/>
           

其中 keystorePass 為導出證書時私鑰的加密密碼。

重新開機 Tomcat 後,重新通路一下網站,發現網站恢複正常了。

老闆急壞了,公司網站的 HTTPS 過期了,擷取免費SSL證書

繼續閱讀