Let s Encrypt,站點加密之旅

2021-09-19 01:31:29 字數 2433 閱讀 7230

https(全稱:hyper text transfer protocol over secure socket layer),是以安全為目標的http通道,簡單講是http的安全版。即http下加入ssl層,https的安全基礎是ssl,因此加密的詳細內容就需要ssl。

let's encrypt,是2023年4月12日成立的一家證書授權中心,提供免費的傳輸層安全(tls)x.509證書,通過自動化的過程消除目前安全**證書需要手工建立,加密,簽名,安裝以及更新的複雜性。

一直以來都覺得瀏覽器**開頭的那把小綠鎖很別緻啊,現在let's encrypt橫空出世提供免費證書,說明https勢在必行,那我也來動手給部落格加把鎖吧,看著就安全是吧。

let's encrypt 的官網提供的指令碼看起來更加自動化一些,但我沒有親自嘗試,而是在github上搜到了乙個開源指令碼acme-tiny,用下來之後成功將部落格加密完成。

根據acme-tiny提供的說明文件和我自己的實施過程列出以下幾步:

sudo git clone   

cd acme-tiny

openssl genrsa 4096 > account.key
acme協議 (let's encrypt所使用的) 需要乙個csr檔案,用來進行證書簽名和證書更新。

將需要加密的網域名稱加到下面的**中,目前一張證書最多可以加密 100 個網域名稱:

openssl genrsa 4096 > domain.key     

openssl req -new -sha256 -key domain.key -subj "/" -reqexts san -config domain.csr

注意:openssl.cnf 檔案的位置可能會因為linux版本的不同而有變

acme-tiny指令碼會生成驗證檔案並寫入到你指定的目錄下,然後通過 ".well-known/acme-challenge/" 這個url來訪問到驗證檔案. 注意: let's encrypt 會對你的伺服器做一次http請求來進行驗證,因此你需要保證80埠能夠訪問.

server 

location /.well-known/acme-challenge/

#...你的其他配置

}

apache 則需修改 .htaccess 檔案配置301重定向:

針對nginx, 你還需要將 let's encrypt 的中介軟體證書 intermediate.pem 內容附加在簽名證書signed.crt之後:

wget -o -  > intermediate.pem  

cat signed.crt intermediate.pem > chained.pem

server
恭喜!你的**已經使用上了https。 但let's encrypt 證書有效期只有90天, 所以需要定期更新。現在只需要寫乙個更新指令碼並把它放到定時任務中即可。

指令碼內容:

#!/usr/bin/sh

python /path/to/acme_tiny.py --account-key /path/to/account.key --csr /path/to/domain.csr --acme-dir /var/www/challenges/ > /tmp/signed.crt || exit

wget -o - > intermediate.pem

cat /tmp/signed.crt intermediate.pem > /path/to/chained.pem

service nginx reload

定時任務可以設定為每個月執行一次:

0 0 1 * * /path/to/renew_cert.sh 2>> /var/log/acme_tiny.log

letsencrypt自動續簽

let s encrypt申請的證書會有三個月的有效期,如何更方便的續期呢?所謂letsencrypt續期,續期相當於重新申請一次證書,然後在伺服器端將過期的證書替換掉即可。由於這個免費的證書只有3個月的有效期,所以需要提前申請好新的證書,然後部署到伺服器上。一般情況下在自己伺服器部署申請let s...

免費證書Let s Encrypt

我們自己也可以簽發 ssl 安全證書,但是我們自己簽發的安全證書不會被主流的瀏覽器信任,所以我們需要被信任的證書授權中心 ca 簽發的安全證書。而一般的 ssl 安全證書簽發服務都比較貴,比如 godaddy globalsign 等機構簽發的證書一般都需要20美金一年甚至更貴,不過為了加快推廣 h...

使用 let s encrypt 證書

let s encrypt 是個開放的 ca,提供免費的 tls 證書,旨在提高整個網際網路的安全性。let s encrypt 的自身的根證書已得到一些常見的根證書的簽名,通過它頒發的 tls 證書可在大部分的系統 瀏覽器上使用,相容性見 let s encrypt 通過 acme automat...