Let's Encrypt SSL證書配置

HTTPS 那些事

鵝廠Bugly公眾號這篇《全站HTTPS來了》寫得比較全面了,不再廢話。

Let's Encrypt 介紹

Let's Encrypt 是一個(gè)免費(fèi)、開放,自動(dòng)化的證書頒發(fā)機(jī)構(gòu),由 ISRG(Internet Security Research Group)運(yùn)作。

ISRG 是一個(gè)關(guān)注網(wǎng)絡(luò)安全的公益組織,其贊助商從非商業(yè)組織到財(cái)富100強(qiáng)公司都有,包括 Mozilla、Akamai、Cisco、Facebook,密歇根大學(xué)等等。ISRG 以消除資金,技術(shù)領(lǐng)域的障礙,全面推進(jìn)加密連接成為互聯(lián)網(wǎng)標(biāo)配為自己的使命。

Let's Encrypt 項(xiàng)目于2012年由 Mozilla 的兩個(gè)員工發(fā)起,2014年11年對外宣布公開,2015年12月3日開啟公測。

Let's Encrypt 目前處于公測期間,文檔,工具還不完善,請謹(jǐn)慎用于生產(chǎn)環(huán)境。

Let's Encrypt ?指南

Let's Encrypt 安裝

Let's Encrypt 目前僅支持 Unix-like 系統(tǒng),需要 Python 2.6 或 2.7,暫不支持 Python 3。

可以使用 pip 安裝 Let's Encrypt 客戶端,或到其 wiki 上查看已打包的各操作系統(tǒng)安裝方式。

下面以官方推薦的 letsencrypt-auto 腳本為例進(jìn)行安裝:


$ git clone https://github.com/letsencrypt/letsencrypt

$ cd letsencrypt

$ ./letsencrypt-auto --help

Let's Encrypt ?驗(yàn)證方式

Let's Encrypt 使用兩種方式對申請的域名進(jìn)行驗(yàn)證:

1、 手動(dòng)驗(yàn)證 按照提示在申請證書的服務(wù)器上使用一個(gè)指定的URL提供一個(gè)指定的文件內(nèi)容來進(jìn)行驗(yàn)證,進(jìn)行手動(dòng)驗(yàn)證的服務(wù)器IP地址會被 Let's Encrypt 服務(wù)端記錄在案。

2、 自動(dòng)驗(yàn)證 在 目標(biāo)服務(wù)器 (指域名解析對應(yīng)的IP地址的服務(wù)器,下同)上運(yùn)行客戶端,并啟動(dòng)一個(gè) 80443 端口進(jìn)行自動(dòng)驗(yàn)證。包括獨(dú)立模式和其他web sever驗(yàn)證模式,在 Plugins 中詳細(xì)解釋

Let's Encrypt Plugins

Let's Encrypt 使用不同的 Plugins 來進(jìn)行證書的獲取和安裝

Manual

當(dāng)你在非 目標(biāo)服務(wù)器 上申請證書,或希望進(jìn)行手動(dòng)驗(yàn)證時(shí),可以使用 manual 插件,運(yùn)行命令:


$ ./letsencrypt-auto certonly --manual -d test.example.com

會得到提示:

manual-log-ip

選擇 Yes 繼續(xù)后,便會提示創(chuàng)建一個(gè)指定內(nèi)容的 URL 用來驗(yàn)證對域名及服務(wù)器的所有權(quán),注意這個(gè)URL仍然需要部署在 目標(biāo)服務(wù)器 上:


Make sure your web server displays the following content at

http://test.example.com/.well-known/acme-challenge/N4mCfskoOSX_7ikZDoEH3iyIqFAUg4Kdg36ecpeUwkw before continuing:

N4mCfskoOSX_7ikZDoEH3iyIqFAUg4Kdg36ecpeUwkw.J7NHjRSPwMW99A2XJv49FTnNu-MSCCebRjccMFZVRic

If you don't have HTTP server configured, you can run the following

command on the target server (as root):

mkdir -p /tmp/letsencrypt/public_html/.well-known/acme-challenge

cd /tmp/letsencrypt/public_html

printf "%s" N4mCfskoOSX_7ikZDoEH3iyIqFAUg4Kdg36ecpeUwkw.J7NHjRSPwMW99A2XJv49FTnNu-MSCCebRjccMFZVRic > .well-known/acme-challenge/N4mCfskoOSX_7ikZDoEH3iyIqFAUg4Kdg36ecpeUwkw

# run only once per server:

$(command -v python2 || command -v python2.7 || command -v python2.6) -c \

"import BaseHTTPServer, SimpleHTTPServer; \

s = BaseHTTPServer.HTTPServer(('', 80), SimpleHTTPServer.SimpleHTTPRequestHandler); \

s.serve_forever()"

Press ENTER to continue

Standalone

使用獨(dú)立模式進(jìn)行自動(dòng)驗(yàn)證,需要在 目標(biāo)服務(wù)器 上運(yùn)行 Let's Encrypt 客戶端,并指定 certonly--standalone參數(shù)。本模式需要綁定 80443 端口進(jìn)行域名驗(yàn)證,所以如果服務(wù)器上已有web server運(yùn)行并偵聽這2個(gè)端口,則需要先關(guān)閉web server。

Webroot

如果 目標(biāo)服務(wù)器 已有web server運(yùn)行,并且不能夠關(guān)閉服務(wù)來獲取和安裝證書,可以使用 Webroot plugin。在運(yùn)行 Let's Encrypt 客戶端時(shí)指定 certonly--webroot 參數(shù),并使用 --webroot-path-w 參數(shù)來指定 webroot 目錄,比如 --webroot-path /usr/share/nginx/html

Apache

Apache plugin 可以用來為 Apache 2.4 服務(wù)器自動(dòng)獲取和安裝證書,需要運(yùn)行在基于 Debian 的操作系統(tǒng)上,并且要求1.0+以上版本的 libaugeas0。如需要運(yùn)行 Apache plugin,在運(yùn)行客戶端時(shí)指定 --apache 參數(shù)。本 plugin 仍處在 Alpha 階段。

Nginx

Nginx plugin 用于為 Nginx 服務(wù)器自動(dòng)獲取和安裝證書,仍然處在實(shí)驗(yàn)階段,并且 letsencrypt-auto 沒有安裝這個(gè) plugin,如需使用,運(yùn)行 pip install letsencrypt-nginx 進(jìn)行安裝后,通過 --nginx 參數(shù)調(diào)用 plugin。

證書位置

所有版本已申請的證書放在 /etc/letsencrypt/archive下,/etc/letsencrypt/live是指向最新版本的符號鏈接。web server中關(guān)于證書的配置建議指向 live 目錄下的文件,以免證書更新后還需要更改配置。

每個(gè)域名一個(gè)目錄,主要包含以下幾個(gè)文件:

  • cert.pem 申請的服務(wù)器證書文件

  • privkey.pem 服務(wù)器證書對應(yīng)的私鑰

  • chain.pem 除服務(wù)器證書外,瀏覽器解析所需的其他全部證書,比如根證書和中間證書

  • fullchain.pem 包含服務(wù)器證書的全部證書鏈文件

證書更新

Let's Encrypt 頒發(fā)的服務(wù)器證書有效期為90天,官方表示此為出于安全原因,降低錯(cuò)發(fā)證書,證書泄漏的危害。通過自動(dòng)續(xù)期來解決有效期短的問題,官方建議每2個(gè)月更新證書。

如果到期沒有更新證書,CA會向申請證書時(shí)提交的郵件地址發(fā)送提醒email。

自動(dòng)續(xù)期可以使用 crontab 實(shí)現(xiàn)。注意更新證書后重啟 web server !

申請頻率限制

  • 注冊IP限制:每IP每3個(gè)小時(shí)不超過10次

  • 域名數(shù)量限制:每個(gè)域名(包含子域名)每7天不超過5個(gè)

安裝實(shí)踐

系統(tǒng)環(huán)境

獲取證書

由于 www.saxieyu.com 的 nginx 已在運(yùn)行中,故使用 webroot 模式來獲取證書,使用命令:


$ ./letsencrypt-auto certonly --webroot --webroot-path /usr/share/nginx/html -d www.saxieyu.com --agree-tos --email admin@saxieyu.com

證書申請成功后會提示證書的文件路徑,以及證書到期時(shí)間:


IMPORTANT NOTES:

- Congratulations! Your certificate and chain have been saved at

/etc/letsencrypt/live/www.saxieyu.com/fullchain.pem. Your cert will

expire on 2016-04-01. To obtain a new version of the certificate in

the future, simply run Let's Encrypt again.

- If you like Let's Encrypt, please consider supporting our work by:

Donating to ISRG / Let's Encrypt:  https://letsencrypt.org/donate

Donating to EFF:                    https://eff.org/donate-le

配置Nginx

生成2048位 DH parameters:


$ sudo openssl dhparam -out /etc/ssl/certs/dhparams.pem 2048

接下來,修改 nginx 配置文件:


server {

    listen 443 ssl;

    server_name www.saxieyu.com;

    ssl_certificate /etc/letsencrypt/live/www.saxieyu.com/fullchain.pem;

    ssl_certificate_key /etc/letsencrypt/live/www.saxieyu.com/privkey.pem;

    ssl_dhparam /etc/ssl/certs/dhparams.pem;

    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

    ssl_prefer_server_ciphers  on;

    ……

}

配置 http 強(qiáng)制跳轉(zhuǎn)到 https:


server {

    listen 80;

    server_name www.saxieyu.com;

    return 301 https://$server_name$request_uri;

}

驗(yàn)證服務(wù)器證書

如上修改過 nginx 配置,并 reload 過 nginx 服務(wù)后,使用瀏覽器訪問 https://www.saxieyu.com,驗(yàn)證服務(wù)器證書是否正確生效

https

查看服務(wù)器證書信息

cert-info

使用 ssllabs 在線測試服務(wù)器證書強(qiáng)度及配置正確性

ssllabs

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容