偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

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

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

創(chuàng)建帳號

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

openssl genrsa 4096 > account.key

創(chuàng)建 CSR 文件

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

openssl genrsa 4096 > domain.key

生成 CSR 時推薦至少把域名帶 www 和不帶 www 的兩種情況都加進去,其它子域可以根據(jù)需要添加(目前一張證書最多可以包含 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

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

配置驗證服務(wù)

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

首先創(chuàng)建用于存放驗證文件的目錄,例如:

mkdir ~/www/challenges/

然后配置一個 HTTP 服務(wù),以 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;
}
}

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

獲取網(wǎng)站證書

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

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

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

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

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

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

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,就是因為最近前兩家在國外都很不穩(wěn)定。如果你也遇到了類似情況,可以暫時使用國外的 DNS 解析服務(wù)商。

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

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

最終,修改 Nginx 中有關(guān)證書的配置并 reload 服務(wù)即可:

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

配置自動更新

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

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 配置,加入以下內(nèi)容:

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

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

幾個問題

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

 Let\

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

另外一個問題有關(guān) ECC 證書,官網(wǎng)表示計劃將在 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$)。當(dāng)然,如果不用考慮 Windows XP 用戶,那么強烈推薦 Let’s Encrypt!

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

責(zé)任編輯:何妍 來源: Jerry Qu的小站
相關(guān)推薦

2018-04-08 09:00:00

Let's Encry加密解密

2025-09-09 07:30:00

瀏覽器運維

2015-12-10 15:53:06

2021-12-20 10:00:41

Let's EncryNginxLinux

2020-03-04 11:17:32

漏洞網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2015-10-22 13:17:27

Let's EncryHTTPS瀏覽器

2016-10-24 17:47:38

2019-07-30 10:34:53

證書HTTPS網(wǎng)站

2022-08-02 20:21:42

開源項目工具

2021-06-08 10:10:25

SQLMyBatisFluent MyBa

2018-01-08 15:13:15

httphttpsSSL證書

2014-12-08 10:37:54

HTTPS

2020-03-12 10:41:35

數(shù)字簽名加密證書劫持

2014-05-19 16:31:39

京東云

2020-09-24 07:51:45

HTTPS證書接口

2020-11-23 21:18:52

MindMaster

2020-04-22 15:45:59

Linux shellLinux命令

2022-03-07 09:00:00

HTTPS證書中間件

2020-01-09 09:00:00

安全測試工具網(wǎng)絡(luò)安全安全工具

2014-11-19 16:35:01

思科
點贊
收藏

51CTO技術(shù)棧公眾號