成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Let's Encrypt,免費好用的 HTTPS 證書

網絡 網絡管理
申請 Let's Encrypt 證書不但免費,還非常簡單,雖然每次只有 90 天的有效期,但可以通過腳本定期更新,配好之后一勞永逸。經過一段時間的觀望,我也正式啟用 Let's Encrypt 證書了,本文記錄本站申請過程和遇到的問題。

很早之前我就在關注 Let's Encrypt 這個免費、自動化、開放的證書簽發服務。它由 ISRG(Internet Security Research Group,互聯網安全研究小組)提供服務,而 ISRG 是來自于美國加利福尼亞州的一個公益組織。Let's Encrypt 得到了 Mozilla、Cisco、Akamai、Electronic Frontier Foundation 和 Chrome 等眾多大公司的支持,發展十分迅猛。

申請 Let's Encrypt 證書不但免費,還非常簡單,雖然每次只有 90 天的有效期,但可以通過腳本定期更新,配好之后一勞永逸。經過一段時間的觀望,我也正式啟用 Let's Encrypt 證書了,本文記錄本站申請過程和遇到的問題。

我沒有使用 Let's Encrypt 官網提供的工具來申請證書,而是用了 acme-tiny 這個更為小巧的開源工具。以下內容基本按照 acme-tiny 的說明文檔寫的,省略了一些我不需要的步驟。

ACME 全稱是 Automated Certificate Management Environment,直譯過來是自動化證書管理環境的意思,Let's Encrypt 的證書簽發過程使用的就是 ACME 協議。有關 ACME 協議的更多資料可以在這個倉庫找到。

創建帳號

首先創建一個目錄,例如 ssl,用來存放各種臨時文件和最后的證書文件。進入這個目錄,創建一個 RSA 私鑰用于 Let's Encrypt 識別你的身份:

openssl genrsa 4096 > account.key

創建 CSR 文件

接著就可以生成 CSR(Certificate Signing Request,證書簽名請求)文件了。在之前的目錄中,再創建一個域名私鑰(一定不要使用上面的賬戶私鑰):

openssl genrsa 4096 > domain.key

生成 CSR 時推薦至少把域名帶 www 和不帶 www 的兩種情況都加進去,其它子域可以根據需要添加(目前一張證書最多可以包含 100 個域名):

openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config 
<(cat /etc/ssl/openssl.cnf <(printf 
"[SAN]\nsubjectAltName=DNS:yoursite.com,DNS:www.yoursite.com")) > 
domain.csr

執行這一步時,如果提示找不到 /etc/ssl/openssl.cnf 文件,應該是沒有安裝 openssl 庫。

配置驗證服務

我們知道,CA 在簽發 DV(Domain Validation)證書時,需要驗證域名所有權。傳統 CA 的驗證方式一般是往 admin@yoursite.com 發驗證郵件,而 Let's Encrypt 是在你的服務器上生成一個隨機驗證文件,再通過創建 CSR 時指定的域名訪問,如果可以訪問則表明你對這個域名有控制權。

首先創建用于存放驗證文件的目錄,例如:

mkdir ~/www/challenges/

然后配置一個 HTTP 服務,以 Nginx 為例:

NGINXserver {
server_name www.yoursite.com yoursite.com;
location ^~ /.well-known/acme-challenge/ {
alias ~/www/challenges/;
try_files $uri =404;
}location / {
rewrite ^/(.*)$ https://yoursite.com/$1 permanent;
}
}

以上配置優先查找 ~/www/challenges/ 目錄下的文件,如果找不到就重定向到 HTTPS 地址。這個驗證服務以后更新證書還要用到,需要一直保留。

獲取網站證書

先把 acme-tiny 腳本保存到之前的 ssl 目錄:

wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py

指定賬戶私鑰、CSR 以及驗證目錄,執行腳本:

python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir ~/www/challenges/ > ./signed.crt

如果一切正常,當前目錄下就會生成一個 signed.crt,這就是申請好的證書文件。

如果你把域名 DNS 解析放在國內,這一步很可能會遇到類似這樣的錯誤:

ValueError: Wrote file to /home/xxx/www/challenges/oJbvpIhkwkBGBAQUklWJXyC8VbWAdQqlgpwUJkgC1Vg, but couldn't download http://www.yoursite.com/.well-known/acme-challenge/oJbvpIhkwkBGBAQUklWJXyC8VbWAdQqlgpwUJkgC1Vg

這是因為你的域名很可能在國外無法訪問,可以找臺國外 VPS 驗證下。我的域名最近從 DNSPod 換到了阿里云解析,最后又換到了 CloudXNS,就是因為最近前兩家在國外都很不穩定。如果你也遇到了類似情況,可以暫時使用國外的 DNS 解析服務商。

搞定網站證書后,還要下載 Let’s Encrypt 的中間證書。我在之前的文章中講過,配置 HTTPS 證書時既不要漏掉中間證書,也不要包含根證書。在 Nginx 配置中,需要把中間證書和網站證書合在一起:

wget -O - https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem > intermediate.pem
cat signed.crt intermediate.pem > chained.pem

最終,修改 Nginx 中有關證書的配置并 reload 服務即可:

ssl_certificate ~/www/ssl/chained.pem;
ssl_certificate_key ~/www/ssl/domain.key;

配置自動更新

Let’s Encrypt 簽發的證書只有 90 天有效期,但可以通過腳本定期更新。例如我創建了一個 renew_cert.sh,內容如下:

BASH#!/bin/bash
cd /home/xxx/www/ssl/
python acme_tiny.py --account-key account.key --csr domain.csr --acme-dir /home/xxx/www/challenges/ > signed.crt || exit
wget -O - https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem > intermediate.pem
cat signed.crt intermediate.pem > chained.pem
service nginx reload

這個腳本需要以 root 帳號運行,使用絕對路徑比較保險。最后,修改 root 帳號的 crontab 配置,加入以下內容:

0 0 1 * * /home/xxx/root_shell/renew_cert.sh >/dev/null 2>&1

這樣以后證書每個月都會自動更新,一勞永逸。實際上,Let’s Encrypt 官方將證書有效期定為 90 天一方面是為了更安全,更重要的是鼓勵用戶采用自動部署方案。

幾個問題

Let’s Encrypt 證書的兼容性,所有操作系統、瀏覽器默認是否都能識別是大家最關心的問題。實際上,由于 Let’s Encrypt 與 IdenTrust 的 DST Root CA 做了交叉認證,兼容性還是不錯的,目前我只是發現在 Android 2 和 Windows XP 下有問題(Firefox 的證書那一套是自己實現的,不依賴于系統,XP 下只有 Firefox 信任 Let’s Encrypt 證書),其它環境都正常。

 Let\

(Windows XP 不信任 Let’s Encrypt 的中間證書)

另外一個問題有關 ECC 證書,官網表示計劃將在 2016 年提供對 ECC 證書的支持:

Right now all of our root and intermediate keys use RSA. We're planning to generate ECC keys and make an ECC option available to subscribers in 2016. via

我個人建議:對于個人用戶來說,如果非常在意證書兼容性,可以購買 RapidSSL Standard 或者 Comodo Positive SSL 這兩種證書。其中 RapidSSL 證書一共才三級,比較小;Comodo Positive 有四級,但可以申請 ECC 證書;二者都有著不錯的兼容性,也非常廉價(一年不到 10$)。當然,如果不用考慮 Windows XP 用戶,那么強烈推薦 Let’s Encrypt!

本文先寫到這里,如果你在申請 Let’s Encrypt 證書的過程中遇到問題,可以給我留言,也歡迎交流各種心得!

責任編輯:何妍 來源: Jerry Qu的小站
相關推薦

2018-04-08 09:00:00

Let's Encry加密解密

2015-12-10 15:53:06

2021-12-20 10:00:41

Let's EncryNginxLinux

2015-10-22 13:17:27

Let's EncryHTTPS瀏覽器

2020-03-04 11:17:32

漏洞網絡安全網絡攻擊

2016-10-24 17:47:38

2019-07-30 10:34:53

證書HTTPS網站

2018-01-08 15:13:15

httphttpsSSL證書

2022-08-02 20:21:42

開源項目工具

2021-06-08 10:10:25

SQLMyBatisFluent MyBa

2020-03-12 10:41:35

數字簽名加密證書劫持

2014-12-08 10:37:54

HTTPS

2014-05-19 16:31:39

京東云

2020-09-24 07:51:45

HTTPS證書接口

2020-04-22 15:45:59

Linux shellLinux命令

2020-11-23 21:18:52

MindMaster

2022-03-07 09:00:00

HTTPS證書中間件

2015-01-12 10:42:02

程序員

2014-11-19 16:35:01

思科

2020-01-09 09:00:00

安全測試工具網絡安全安全工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 特黄特黄a级毛片免费专区 av网站免费在线观看 | 亚洲性综合网 | 自拍中文字幕 | 超碰在线97国产 | 蜜桃官网 | 久久综合888 | 精品一区二区三区av | 日韩中文字幕免费在线 | 一区二区在线免费播放 | 日韩一区二区三区在线看 | 日韩精品视频在线 | 91在线网站 | 国产色黄 | 中国美女av| 免费视频一区二区 | 青青久久| 久久精品成人 | 视频一区中文字幕 | 国产高清在线精品 | 在线国产欧美 | 性一交一乱一伦视频免费观看 | 99久久婷婷国产亚洲终合精品 | 一区二区三区免费在线观看 | 精品一区二区三区在线播放 | 亚洲欧洲日韩精品 中文字幕 | www.成人久久| 欧美乱淫视频 | 国产成人精品一区 | 欧美精品二区 | 97色在线观看免费视频 | av激情在线| 91一区二区三区在线观看 | 精品一区二区视频 | 欧美一级久久 | 日韩视频免费看 | 色播久久久 | 日日久| 欧美一区二区三区在线观看 | 2018国产精品 | 二区在线视频 | 日本人做爰大片免费观看一老师 |