快速使用Let's Encrypt開啟個人網站的https

藍眼軟體發表於2018-01-18

背景

為什麼要使用https?

  • https可以有效避免無良運營商的DNS劫持,可以顯著提升網站逼格。
  • 使用https已經是大勢所趨,人心所向,iOS甚至強制要求開發者使用https。

為什麼要使用Let's Encrypt?

  • 而對於個人開發者而言,https證書太貴,一般都好幾千一年。
  • Let's Encrypt免費開源無疑是一個不錯的選擇。

本文將記錄藍眼部落格 (https://blog.eyeblue.cn) 搭建https的整個過程。網上有很多使用let's encrypt程式碼生成證書,或者使用Certbot來生成證書,但是筆者覺得都沒有直接藉助 https://freessl.org/ 來生成證書方便快捷。

獲取證書

1.填寫域名

開啟網站 https://freessl.org/ 填寫自己的域名,你將看到下圖。這裡我們填入 blog.eyeblue.cn,同時在下方勾選 Let's Encrypt,然後點選**“建立免費的SSL證書”**按鈕即可

快速使用Let's Encrypt開啟個人網站的https
1.png

2.填寫郵箱,選擇證書型別,驗證型別和CSR生成方式
  • 填寫自己的郵箱

  • 證書品牌只能選擇Let's Encrypt

  • 證書型別選擇ECC。這裡主要是選擇數字簽名的演算法,對於普通使用者使用預設的ECC即可。如果需要根據自己的具體情境來選擇,一般有以下選擇依據:

(1) RSA簽名演算法適合於:Verify操作頻度高,而Sign操作頻度低的應用場景。比如,分散式系統中基於capability的訪問控制就是這樣的一種場景。 (2) ECDSA簽名演算法適合於:Sign和Verify操作頻度相當的應用場景。比如,點對點的安全通道建立。

  • 驗證型別使用DNS的方式。

其實驗證型別用來確定你是否是這個域名的所有者,確認的方式有兩種: 1.DNS。 CA(Certificate Authority 數字證書認證機構)將通過查詢 DNS 的 TXT 記錄來確定您對該域名的所有權,因此需要在域名管理平臺將生成的 TXT 記錄名與記錄值新增到該域名下。 2.檔案。CA 將通過訪問特定 URL 地址來驗證您是否有改域名的所有權。因此,您需要下載給頂的驗證檔案,並上傳到您的伺服器。

  • CSR生成選擇瀏覽器生成。一般的瀏覽器都支援Web Cryptography,直接使用預設的瀏覽器生成最方便。

下圖便是我的填寫,填好之後點選**“點選生成”**按鈕。

快速使用Let's Encrypt開啟個人網站的https
2.png

3.進行DNS驗證

3.1 在第2步中點選按鈕後,會彈出下圖內容:

快速使用Let's Encrypt開啟個人網站的https
3.png
3.2 這時只需要去域名解析控制檯新增一條TXT的解析記錄即可。我的域名在阿里雲,因此解析詳情如下圖所示:
快速使用Let's Encrypt開啟個人網站的https
3-1.png
完成解析後,點選3.1中的**“點選驗證”**按鈕

4.下載證書

在點選第3步的按鈕後,會彈出證書檔案下載的按鈕,此時點選**“下載證書”**即可獲得證書檔案full_chain.pem和私鑰檔案private.key

快速使用Let's Encrypt開啟個人網站的https
4.png

配置nginx

nginx的配置如下:

server{
		# 監聽443埠
        listen 443 ssl;
		# 域名,如果有多個空格隔開
        server_name blog.eyeblue.cn;

		# 啟用ssl
        ssl on;
		# 證書檔案的放置路徑。證書檔案即通過上文《獲取證書》的方式獲得。
        ssl_certificate /data/security/letsencrypt/blogeyebluecn/full_chain.pem;
        # 私鑰檔案的放置路徑。
        ssl_certificate_key /data/security/letsencrypt/blogeyebluecn/private.key;

		# 藍眼部落格的服務執行在埠6020
        location / {
                proxy_pass http://127.0.0.1:6020;
                proxy_set_header host $host;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_pass_request_headers      on;
                client_max_body_size  8m;
        }

}

#對於通過http來訪問藍眼部落格的請求,我們預設讓其跳轉到https. 這樣保持了http訪問的相容性。
server {
        listen      80;
        server_name    blog.eyeblue.cn;
        rewrite ^(.*)$ https://blog.eyeblue.cn$1 permanent;
}

複製程式碼

修改了配置檔案後記得

service nginx restart
複製程式碼

驗證

開啟網頁https://blog.eyeblue.cn,即可看到位址列中綠色的小鎖,證明https已經成功開啟。即時你輸入http://blog.eyeblue.cn也會自動轉跳到https下的,如此便保證了相容性。

快速使用Let's Encrypt開啟個人網站的https
5.png

維護

Let's Encrypt證書的有效期只有三個月,這就需要我們每隔一段時間就去更新一下證書,好在https://freessl.org/可以幫我們管理證書,註冊登入之後便可以看到我們的證書管理介面如下:

快速使用Let's Encrypt開啟個人網站的https
6.png

參考文章

Nginx如何配置證書

RSA與ECC的選擇

原文發表於藍眼部落格:https://blog.eyeblue.cn/home/article/9f580b3f-5679-4a9d-be6f-4d9f0dd417af

相關文章