天天看點

五分鐘搞定 HTTPS 配置,二哥手把手教

01、關于 FreeSSL.cn

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

當然了,我看重的不是免費,而是 FreeSSL 使用起來非常人性化。我是一個計算機常識非常薄弱的程式員(羞愧一下),但通過 FreeSSL,我竟然可以獨自完成 Tomcat 的 HTTPS 配置!

很多年以前,公司要做華夏銀行的接口對接,需要 HTTPS 通路,大概花了 3000 塊買的證書,最後證書還有問題,HTTPS 也沒搞定。總之,坑的很!

FreeSSL.cn 有很大的不同,申請非常便捷,優點很多,值得推薦一波。畢竟再也不用郵件、電話各種聯系了(也許時代進步了)。

100% 永久免費;這要感謝 Let’s Encrypt 與 TrustAsia 提供的免費 SSL 證書。

在 HTTPS 證書到期前,FreeSSL.cn 會及時地提醒更換證書,免費的服務。

私鑰不在網絡中傳播,確定 HTTPS 證書的安全。

02、使用 FreeSSL 申請證書

第一步,填寫域名,點選「建立免費的 SSL 證書」

第二步,填寫郵箱,點選「建立」

1)證書類型預設為 RSA

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

DNS 和檔案驗證有什麼差別呢?我們再來一起了解下。

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

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

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

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

3)CSR生成預設為離線生成

離線生成、浏覽器生成 和 我有 CSR 又有什麼差別呢?來,我們繼續了解一下。

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

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

https://keymanager.org/

Windows 的話,安裝的時候要選擇“以管理者身份運作”。

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

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

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

第三步,選擇離線生成,打開 KeyManager

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

第四步,傳回浏覽器,點選「下一步」,出現如下界面。

第五步,下載下傳檔案,并上傳至伺服器指定目錄下。

第六步,點選「驗證」,通過後,出現以下界面。

第七步,點選「儲存到KeyManager」,可以看到證書狀态變成了已頒發。

03、為 Tomcat 配置 jks 格式證書

第一步,導出證書。假如伺服器選擇的 Tomcat,需要導出 Java keystone (簡拼為 jks)格式的證書。

注意:私鑰的密碼在配置 Tomcat 的時候用到。

第二步,上傳證書至伺服器。

第三步,配置 Tomcat 的 server.xml。

<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/qingmiaokeji.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://qingmiaokeji.cn/

進行測試。

注意到沒,浏覽器位址欄前面有一個綠色的安全鎖,這說明 HTTPS 配置成功了!好了,為自己鼓個掌!

04、最後

你有沒有訂個五分鐘的時間沙漏?如果超過五分鐘 HTTPS 還沒有配置成功,你過來揍我!

繼續閱讀