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

沉默王二發表於2019-05-09

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

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

image.png

第四步,返回瀏覽器,點選「下一步」,出現如下介面。

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

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

第七步,點選「儲存到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 還沒有配置成功,你過來揍我!

 

相關文章