快速申請 Let's Encrypt 免費SSL證書 / CA證書

標題之所以說快速,因爲如果你手速快的話3分鐘就能申請成功~
參考:https://github.com/Neilpang/acme.sh/wiki/說明

Let’s Encrypt是由Internet Security Research Group(ISRG)運行的非營利性證書頒發機構,可以免費提供用於TLS加密的X.509證書。證書有效期爲90天,在此期間可以隨時續訂。這個組織由Mozilla基金會、Cisco、Facebook、Google Chrome等機構贊助,旨在推廣HTTPS保證互聯網安全。
要在網站上啓用 HTTPS,需要從證書頒發機構(CA)獲取一個證書,Let’s Encrypt就是一個免費CA證書頒發機構。

準備條件

  1. OS:Ubuntu / Debain,可以上網但無需公網IP。
  2. 擁有一個域名。

如果有興趣可以參考Let’s Encrypt官網介紹自行申請證書,不過得益於 Github牛人Neilpang的工作,我們可以用他的腳本快速申請證書。他的腳本有多種方式申請證書,這裏介紹其中比較簡單的一種不需要公網IP,使用DNS的方式申請證書。

申請證書

1. 安裝腳本

curl  https://get.acme.sh | sh
source ~/.bashrc

下載執行此腳本會保存在~/.acme.sh/目錄下,並把腳本加入環境變量。

2. 申請證書

acme.sh --issue  --dns -d 'www.sample.com' --yes-I-know-dns-manual-mode-enough-go-ahead-please

這個步驟會生成一個DNS驗證記錄,類似如下所示

Domain: '_acme-challenge.www.sample.com'  # 示例
TXT value: 'zeXfD67fYnOnd2YJFelum-41kOCVzWGEtxeAJ7SEy-w' # 示例

3. 添加域名解析

在域名管理界面,添加一條TXT記錄,驗證域名所有權,記錄值就是上一步生成的TXT值。

4. 生成證書

acme.sh --renew -d 'www.sample.com' --yes-I-know-dns-manual-mode-enough-go-ahead-please

添加完域名解析後,執行這一步,會在.acme.sh/目錄下生成域名對應的目錄,裏面有證書所需的各種信息,但是不要拿出來使用。

5. 取出證書

acme.sh --installcert  -d 'www.sample.com' --key-file ./www.sample.key --fullchain-file ./cert/www.sample.com.cer

這一步能把上一步生成的證書所需的好幾個文件合成證書。
此時目錄下就有證書文件www.sample.com.cer和私鑰文件www.sample.key,二者都是PEM純文本格式,可以直接查看其內容。

注意

  1. 這裏使用的是DNS解析的方法,無需公網IP的機器即可快速生成證書的方法,其他方法詳見那個工程的GitHub介紹。
  2. 上述命令中-d參數指定域名,可以寫一個具體域名,也可以使用通配符生成*.sample.com通用證書。但是 *.xx.com證書不能用於xx.com域名的網站。
  3. 證書的有效期是3個月,到期後需要手動再次申請。可以使用acme.sh項目介紹的自動續簽的方式到期自動申請,好像需要有公網IP的機器。
  4. 驗證:cer格式的證書在windows系統中可以直接點開查看內容。完整驗證可以使用nginx搭一個服務器,沒有公網IP的話可以使用修改hosts文件的方式使域名直接指向該服務器。

附:Nginx測試SSL證書

安裝nginx

sudo apt-get install nginx

默認配置文件
/etc/nginx/sites-available/default

# http 跳轉到 https
server {
        listen 80;
        server_name 域名;
        rewrite ^(.*) https://$server_name$1 permanent;
}

server {
        # listen 80 default_server;
        # listen [::]:80 default_server;

        # SSL configuration 使用HTTPS,否則就是80端口
        #
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;

        server_name 域名;	# 需要處理的訪問IP

        ssl_certificate /home/xxx/xxx.crt;		# 證書和祕鑰
        ssl_certificate_key /home/xxx/xxx.key;
		...
        }
}

啓動

sudo nginx

停止

sudo pkill nginx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章