Let’s Encrypt 通配符證書申請+使用雙證書

之前的數字證書都是使用RSA的,現在有新的一種簽名演算法:ECDSA,使用ECDSA演算法簽名的數字證書也叫做ECC證書。

ECC證書的好處

使用ECC證書中有用戶公鑰,相比於之前RSA證書而言,256位ECC key就能起到相當於3072位的RSA key的安全性。另外一點就是ECC的運算速度相對以同等安全性的RSA的速度要快上很多,這樣就可以減少伺服器的資源開銷,並且ECC證書證書文件會比RSA證書文件要小上很多。

現在Let’s Encrypt的兼容性也挺高的,Let’s Encrypt 由 ISRG(Internet Security Research Group,互聯網安全研究小組)提供了免費、自動化、開放的證書籤發服務,雖然證書只有 90 天有效期,但可以通過定時腳本更新,目前acme.sh項目挺方便的,它是一個實現 ACME 協議的客戶端,能夠向支持 ACME 協議的 CA 申請證書(如 Letsencrypt)。 最重要的是它對接了大多數的域名服務商,能夠通過域名服務商提供的 API,自動的添加 DNS 驗證記錄進行全自動頒發證書,還可以模擬 HTTP 伺服器進行文件驗證。so,不管你的證書期限是 90 天,還是更短,再也不用擔心證書過期的問題了。
至於 ACME 協議是什麼?Automatic Certificate Management Environment 自動化證書管理環境,通過它我們可以實現證書的自動申請以及部署,可以大大的節省人員的管理及額外的配置工作。
好了,廢話不多說。

安裝 acme.sh

acme.sh 下載非常的簡單,官方提供了 2 中方式:

  1. 通過執行在線腳本安裝:
  2. 通過 git 安裝:

在安裝的過程中,做了 3 件事:

  • 複製 acme.sh 到你的 HOME 目錄($HOME):~/.acme.sh/。之後所有生成的證書也會放在這裡。
  • 創建別名:
  • 創建 cron 每日任務去檢查是否有證書需要更新。 如:
  • 使用 acme.sh

    如何使用?acme.sh 的功能非常的強大,使用方式確非常的簡單。提醒,該腳本需要在你的伺服器下執行。官方地址:How to issue a cert
    關於 ECC 證書,你只需要再末尾添加 –keylength ec-256。如:

    可選長度有:

  • ec-256 (prime256v1, 「ECDSA P-256」)
  • ec-384 (secp384r1, 「ECDSA P-384」)
  • ec-521 (secp521r1, “ECDSA P-521”, which is not supported by Let’s Encrypt yet.)
  • 具體的大家可以參考上面的官方說明

    申請通配符證書

    首先我們需要確認你使用的是什麼DNS服務商,只有在DNSapi上的才支持添加通配符證書。
    我們已CloudFlare為例

    本人使用以下命令生成證書

    安裝證書

    再頒發證書之後,我們可能需要將證書拷貝到指定位置。那麼我們需要使用到 –install-cert 命令,請盡量避免手動拷貝證書。

    這裡會將私鑰、證書、證書鏈拷貝到指定位置,成功後執行 –reloadcmd 命令。請確保有執行這些命令的許可權。
    當然你也不用擔心證書更新的問題,在證書 60 天之後,會自動更新,更新後就會執行 –reloadcmd 的命令。
    這裡還有一些 hook 功能,請查看幫助 $ acme.sh -h,如,–renew-hook(每次證書成功更新後執行的命令)等。

    更新證書

    使用該工具的應該都是沖著其強大的自動更新部署功能來的。當然,如果你想手動更新:

    如何部署雙證書

    因為我使用的是Nginx,所以這裡就只講Nginx的部署。
    重要提示:Nginx只有在版本1.11以後(包括1.11)才支持部署雙證書,所以版本不夠的同學需要先升級Nginx,可以使用nginx -V查看。
    準備好RSA和ECC兩套證書和私鑰文件,然後在配置文件中添加:

    有一點需要注意,如果希望默認使用ECC證書需要把ECDSA套件添加在前面,例如ECDHE_ECDSA的套件放在前面,如果不這樣做的話,配置的加密套件最優先的RSA加密套件,那麼會默認使用RSA的證書。當這些完成後,就可以使用ssllabs或者myssl去檢測一下雙證書的部署狀況了。

    測試結果

    發表評論

    電子郵件地址不會被公開。 必填項已用*標註