老闆急壞了,公司網站的 HTTPS 過期了
端午出去玩的時候,老闆打電話說公司網站的 HTTPS 過期了,訪問不了(見下圖),要我立馬升級一下。可惜我當時沒帶電腦,無能爲力,可把老闆急壞了。
沒辦法,急就先急着,只能等我有電腦了才能搞。點擊高級,可以看到以下信息:
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 證書的普及與應用,簡化證書申請的流程。
由於我之前已經註冊過了,所以從「控制檯」的證書列表裏就可以看到過期信息。
不過很遺憾,沒有直接重新申請的選項。只能在首頁重新填寫域名,點擊「創建免費的 SSL 證書」。
品牌證書選擇「TRUSTAsia」就行了,可以免費使用一年,到期了重新再申請一下就可以了。雖然麻煩點,但能給老闆省點錢,看我這良心員工啊。
完事後會跳轉到下圖這個頁面,注意填寫一下郵箱。
有些同學可能對選項不太瞭解,我這裏統一解釋下:
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 的話,會彈出提示對話框,讓你安裝。
直接點擊「安裝 KeyManager」進行下載。
雙擊運行安裝,成功後打開 KeyManager。
填寫密碼後點擊「開始」,稍等片刻,出現如下界面。
回到 FreeSSL 首頁,點擊下圖中紅色框中的鏈接「再次嘗試啓動 KeyManager」。
注意 KeyManager 界面的變化,會出現以下界面中的信息。
可以回到瀏覽器頁面,點擊「繼續」按鈕:
會跳出文件驗證的提示信息:
點擊右下角的「下載文件」。
好了,現在鏈接服務器,將下載好的文件上傳到「文件路徑」處指出的路徑下,一定要路徑匹配上,否則無法完成驗證。
文件上傳成功後,就可以「點擊驗證」,稍等片刻後,就會出現以下提示信息:
點擊「保存到 KeyManager」,可以看到證書的有效期延長了。
選擇「導出證書」:
我的服務器軟件使用的是 Tomcat,所以選擇導出的格式是 jks。記住你的私鑰加密密碼,後面要用。
完事後點擊「導出」按鈕。
將生成好的證書,上傳到服務器。
接下來,打開 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 它回來了,趕緊給老闆吱一聲,網站幾天不能用,少賣不少酒,少掙不少錢啊,嘿嘿。
同學們,學到了吧?網站想從 HTTP 升級到 HTTPS 並不難,按照我給出的這份攻略,五分鐘就能輕鬆搞定,關鍵是還免費,真香警告!
------------------
公衆號:沉默王二(ID:cmower)
CSDN:沉默王二
這是一個有顏值卻靠才華喫飯的程序員,你知道,他的文章風趣幽默,讀起來就好像花錢一樣爽快。
長按下圖二維碼關注,你將感受到一個有趣的靈魂, 且每篇文章都有乾貨。
-------------- --- -
原創不易,莫要白票,如果覺得有點用的話,請毫不留情地轉發朋友圈吧 ,因爲這將是我寫作更多優質文章的最強動力。