老板急壞了,公司網(wǎng)站的 HTTPS 過(guò)期了
端午出去玩的時(shí)候,老板打電話說(shuō)公司網(wǎng)站的 HTTPS 過(guò)期了,訪問(wèn)不了(見(jiàn)下圖),要我立馬升級(jí)一下??上耶?dāng)時(shí)沒(méi)帶電腦,無(wú)能為力,可把老板急壞了。

沒(méi)辦法,急就先急著,只能等我有電腦了才能搞。點(diǎn)擊高級(jí),可以看到以下信息:
z.xxxx.cn 通常會(huì)使用加密技術(shù)來(lái)保護(hù)您的信息。Google Chrome 此次嘗試連接到 z.xxxx.cn 時(shí),此網(wǎng)站發(fā)回了異常的錯(cuò)誤憑據(jù)。這可能是因?yàn)橛泄粽咴谠噲D冒充 z.xxxx.cn,或 Wi-Fi 登錄屏幕中斷了此次連接。請(qǐng)放心,您的信息仍然是安全的,因?yàn)?Google Chrome 尚未進(jìn)行任何數(shù)據(jù)交換便停止了連接。
您目前無(wú)法訪問(wèn) z.xxxx.cn,因?yàn)榇司W(wǎng)站使用了 HSTS。網(wǎng)絡(luò)錯(cuò)誤和攻擊通常是暫時(shí)的,因此,此網(wǎng)頁(yè)稍后可能會(huì)恢復(fù)正常。
我使用的是 FreeSSL 證書,原因很簡(jiǎn)單,老板不舍得掏錢,這個(gè)證書每次申請(qǐng)只能免費(fèi)使用一年。
FreeSSL 是一個(gè)免費(fèi)提供 HTTPS 證書申請(qǐng)、HTTPS 證書管理和 HTTPS 證書到期提醒服務(wù)的網(wǎng)站,旨在推進(jìn) HTTPS 證書的普及與應(yīng)用,簡(jiǎn)化證書申請(qǐng)的流程。

由于我之前已經(jīng)注冊(cè)過(guò)了,所以從「控制臺(tái)」的證書列表里就可以看到過(guò)期信息。

不過(guò)很遺憾,沒(méi)有直接重新申請(qǐng)的選項(xiàng)。只能在首頁(yè)重新填寫域名,點(diǎn)擊「創(chuàng)建免費(fèi)的 SSL 證書」。

品牌證書選擇「TRUSTAsia」就行了,可以免費(fèi)使用一年,到期了重新再申請(qǐng)一下就可以了。雖然麻煩點(diǎn),但能給老板省點(diǎn)錢,看我這良心員工啊。
完事后會(huì)跳轉(zhuǎn)到下圖這個(gè)頁(yè)面,注意填寫一下郵箱。

有些同學(xué)可能對(duì)選項(xiàng)不太了解,我這里統(tǒng)一解釋下:
1)證書類型
我選擇的是 RSA,那 ECC 又是什么,兩者有什么區(qū)別?
HTTPS 通過(guò) TLS 層和證書機(jī)制提供了內(nèi)容加密、身份認(rèn)證和數(shù)據(jù)完整性三大功能,可以有效防止數(shù)據(jù)被監(jiān)聽或篡改,還能抵御 MITM(中間人)攻擊。TLS 在實(shí)施加密過(guò)程中,需要用到非對(duì)稱密鑰交換和對(duì)稱內(nèi)容加密兩大算法。
對(duì)稱內(nèi)容加密強(qiáng)度非常高,加解密速度也很快,只是無(wú)法安全地生成和保管密鑰。在 TLS 協(xié)議中,應(yīng)用數(shù)據(jù)都是經(jīng)過(guò)對(duì)稱加密后傳輸?shù)模瑐鬏斨兴褂玫膶?duì)稱密鑰,則是在握手階段通過(guò)非對(duì)稱密鑰交換而來(lái)。常見(jiàn)的 AES-GCM、ChaCha20-Poly1305,都是對(duì)稱加密算法。
非對(duì)稱密鑰交換能在不安全的數(shù)據(jù)通道中,產(chǎn)生只有通信雙方才知道的對(duì)稱加密密鑰。目前最常用的密鑰交換算法有 RSA 和 ECDHE:RSA 歷史悠久,支持度好,但不支持 PFS(Perfect Forward Secrecy);而 ECDHE 是使用了 ECC(橢圓曲線)的 DH(Diffie-Hellman)算法,計(jì)算速度快,支持 PFS。
是不是一下子就點(diǎn)醒了你?
2)驗(yàn)證類型
我選擇的是文件驗(yàn)證,那 DNS 驗(yàn)證又是什么,兩者有什么區(qū)別?
首先,我們需要明白一點(diǎn),CA(Certificate Authority,證書頒發(fā)機(jī)構(gòu)) 需要驗(yàn)證我們是否擁有該域名,這樣才給我們頒發(fā)證書。
文件驗(yàn)證(HTTP):CA 將通過(guò)訪問(wèn)特定 URL 地址來(lái)驗(yàn)證我們是否擁有域名的所有權(quán)。因此,我們需要下載給定的驗(yàn)證文件,并上傳到您的服務(wù)器。
DNS 驗(yàn)證:CA 將通過(guò)查詢 DNS 的 TXT 記錄來(lái)確定我們對(duì)該域名的所有權(quán)。我們只需要在域名管理平臺(tái)將生成的 TXT 記錄名與記錄值添加到該域名下,等待大約 1 分鐘即可驗(yàn)證成功。
所以,如果對(duì)服務(wù)器操作方便的話,可以選擇文件驗(yàn)證;如果對(duì)域名的服務(wù)器操作比較方便的話,可以選擇 DNS 驗(yàn)證。如果兩個(gè)都方便的話,請(qǐng)隨意選啦。
3)CSR 生成
我選擇的是離線生成,這也是 FreeSSL 現(xiàn)在推薦的方式,那到底三個(gè)選項(xiàng)之間有什么區(qū)別呢?
離線生成:私鑰在本地加密存儲(chǔ),更安全;公鑰自動(dòng)合成,支持常見(jiàn)證書格式轉(zhuǎn)換,方便部署;支持部分 WebServer 的一鍵部署,非常便捷。
離線生成的時(shí)候,需要先安裝 KeyManager,可以提供安全便捷的 SSL 證書申請(qǐng)和管理。下載地址如下:
https://keymanager.org/
瀏覽器生成:在瀏覽器支持 Web Cryptography 的情況下,會(huì)使用瀏覽器根據(jù)用戶的信息生成 CSR 文件。
Web Cryptography,網(wǎng)絡(luò)密碼學(xué),用于在 Web 應(yīng)用程序中執(zhí)行基本加密操作的 JavaScript API。很多瀏覽器并不支持
我有 CSR:可以粘貼自己的 CSR,然后創(chuàng)建。
明白區(qū)別之后,選擇「點(diǎn)擊創(chuàng)建」,如果沒(méi)有安裝 KeyManager 的話,會(huì)彈出提示對(duì)話框,讓你安裝。

直接點(diǎn)擊「安裝 KeyManager」進(jìn)行下載。

雙擊運(yùn)行安裝,成功后打開 KeyManager。

填寫密碼后點(diǎn)擊「開始」,稍等片刻,出現(xiàn)如下界面。

回到 FreeSSL 首頁(yè),點(diǎn)擊下圖中紅色框中的鏈接「再次嘗試啟動(dòng) KeyManager」。

注意 KeyManager 界面的變化,會(huì)出現(xiàn)以下界面中的信息。

可以回到瀏覽器頁(yè)面,點(diǎn)擊「繼續(xù)」按鈕:

會(huì)跳出文件驗(yàn)證的提示信息:

點(diǎn)擊右下角的「下載文件」。

好了,現(xiàn)在鏈接服務(wù)器,將下載好的文件上傳到「文件路徑」處指出的路徑下,一定要路徑匹配上,否則無(wú)法完成驗(yàn)證。

文件上傳成功后,就可以「點(diǎn)擊驗(yàn)證」,稍等片刻后,就會(huì)出現(xiàn)以下提示信息:

點(diǎn)擊「保存到 KeyManager」,可以看到證書的有效期延長(zhǎng)了。

選擇「導(dǎo)出證書」:

我的服務(wù)器軟件使用的是 Tomcat,所以選擇導(dǎo)出的格式是 jks。記住你的私鑰加密密碼,后面要用。

完事后點(diǎn)擊「導(dǎo)出」按鈕。

將生成好的證書,上傳到服務(wù)器。

接下來(lái),打開 Tomcat 的 server.xml 文件,配置一下 Connector 鏈接。
?"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"/>
??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 為導(dǎo)出證書時(shí)私鑰的加密密碼。
重啟 Tomcat 后,重新訪問(wèn)一下網(wǎng)站,發(fā)現(xiàn)網(wǎng)站恢復(fù)正常了。

好了,HTTPS 它回來(lái)了,趕緊給老板吱一聲,網(wǎng)站幾天不能用,少賣不少酒,少掙不少錢啊,嘿嘿。
同學(xué)們,學(xué)到了吧?網(wǎng)站想從 HTTP 升級(jí)到 HTTPS 并不難,按照我給出的這份攻略,五分鐘就能輕松搞定,關(guān)鍵是還免費(fèi),真香警告!
------------------公眾號(hào):沉默王二(ID:cmower)
CSDN:沉默王二
這是一個(gè)有顏值卻靠才華吃飯的程序員,你知道,他的文章風(fēng)趣幽默,讀起來(lái)就好像花錢一樣爽快。
長(zhǎng)按下圖二維碼關(guān)注,你將感受到一個(gè)有趣的靈魂,且每篇文章都有干貨。
------------------
原創(chuàng)不易,莫要白票,如果覺(jué)得有點(diǎn)用的話,請(qǐng)毫不留情地轉(zhuǎn)發(fā)朋友圈吧,因?yàn)檫@將是我寫作更多優(yōu)質(zhì)文章的最強(qiáng)動(dòng)力。
