摘要:本文首發(fā)開發(fā)指南如何在上安裝是由開發(fā)的一個(gè)自由自動(dòng)化和開放的證書頒發(fā)機(jī)構(gòu)。目前幾乎所有的現(xiàn)代瀏覽器都信任由頒發(fā)的證書。這個(gè)教程,將會(huì)一步一步的教你如何在上通過(guò)來(lái)生成安全證書,并配置到上。支持,嚴(yán)格傳輸安全并強(qiáng)制執(zhí)行幾個(gè)以安全為中心的頭。
本文首發(fā):開發(fā)指南:如何在 CentOS 7 上安裝 Nginx
Let’s Encrypt 是由 Internet Security Research Group (ISRG) 開發(fā)的一個(gè)自由、自動(dòng)化和開放的證書頒發(fā)機(jī)構(gòu)。目前幾乎所有的現(xiàn)代瀏覽器都信任由 Let’s Encrypt 頒發(fā)的證書。
這個(gè)教程,將會(huì)一步一步的教你如何在 CentOS 7 上通過(guò) Certbot 來(lái)生成 SSL 安全證書,并配置到 Nginx 上。
開始前的準(zhǔn)備在繼續(xù)此教程之前,請(qǐng)確保你已經(jīng)滿足了以下兩個(gè)條件:
請(qǐng)確保你已經(jīng)擁有了一個(gè)屬于你的域名,并且已經(jīng)解析到了你的服務(wù)器 IP 上,在接下來(lái)的教程中,我將會(huì)用 kaifazhinan.com 作為本教程的域名。
請(qǐng)確保你已經(jīng)啟用了 EPEL 倉(cāng)庫(kù),并且已經(jīng)安裝了 Nginx,如果你還沒有安裝 Nginx,你可以先閱讀 如何在 CentOS 7 上安裝 Nginx 這篇文章來(lái)安裝 Nginx。
安裝 CertbotCertbot 是一個(gè)非常簡(jiǎn)單方便的工具,它可以幫助我們生成 SSL 證書,自動(dòng)更新 SSL 證書,并且將證書配置到 Web 服務(wù)上。
可以運(yùn)行以下命令,從 EPEL 倉(cāng)庫(kù)中安裝 Certbot:
sudo yum install certbot生成 Dh (Diffie-Hellman) 組
Diffie–Hellman 密匙交換是一種可以在不安全的通信信道上安全交換密鑰的方法。
現(xiàn)在運(yùn)行以下命令,可以來(lái)生成一個(gè)新的 2048 位的 DH 參數(shù):
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
2048 位,生成時(shí)間大概 3-5 分鐘左右。當(dāng)然,如果您愿意也可以將大小改為 4096 位,但是這樣的話,可能生成的時(shí)間至少需要花費(fèi) 30 分鐘,此操作具體時(shí)長(zhǎng)取決于系統(tǒng)熵。生成 SSL 證書
要生成域名的 SSL 證書,我們將使用 Webroot 插件在 ${webroot-path}/.well-known/acme-challenge 目錄中創(chuàng)建臨時(shí)文件來(lái)驗(yàn)證請(qǐng)求的域名。Let"s Encrypt 服務(wù)器會(huì)向臨時(shí)文件發(fā)出 HTTP 請(qǐng)求,以驗(yàn)證請(qǐng)求的域名是否被正確的解析到了正在運(yùn)行 Certbot 的服務(wù)器。
為了簡(jiǎn)便,我們將把所有訪問(wèn) .well-known/acme-challenge 的 HTTP 請(qǐng)求都映射到 /var/lib/letsencrypt 這個(gè)目錄中。
下面的命令將會(huì)創(chuàng)建這個(gè)目錄,并且使 Nginx 對(duì)它擁有讀寫的權(quán)限。
sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp nginx /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt創(chuàng)建代碼片段
為了避免 Nginx 配置文件中存在重復(fù)的代碼,請(qǐng)創(chuàng)建以下兩個(gè)代碼片段(里面是 Nginx 的配置代碼),我們將在相關(guān)的 Nginx 配置文件中包含這些片段:
1、首先,創(chuàng)建一個(gè)目錄,用于存放 Nginx 配置的代碼片段文件:
sudo mkdir /etc/nginx/snippets
2、創(chuàng)建第一個(gè)片段文件, letsencrypt.conf,其全路徑為: /etc/nginx/snippets/letsencrypt.conf
location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }
3、創(chuàng)建第二個(gè)片段文件,ssl.conf,其全路徑為: /etc/nginx/snippets/ssl.conf
ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS"; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;
上面的代碼中包含 Mozilla 的推薦部分。 支持 OCSP Stapling,HTTP 嚴(yán)格傳輸安全(HSTS)并強(qiáng)制執(zhí)行幾個(gè)以安全為中心的 HTTP 頭。
加載 letsencrypt.conf代碼片段創(chuàng)建完成之后,就可以打開 Nginx 的域名獨(dú)立配置文件,將 letsencrypt.conf 文件引入。
在這里,我們的域名是 kaifazhinan.com ,所以我們的配置文件為 kaifazhinan.com.conf, 文件的全路徑為 /etc/nginx/conf.d/kaifazhinan.com.conf。
server { listen 80; server_name kaifazhinan.com www.kaifazhinan.com; include snippets/letsencrypt.conf; }
注意: 我們建議針對(duì)不同的域名,創(chuàng)建不同的獨(dú)立配置文件。這樣會(huì)比較清晰,便于管理和查找對(duì)應(yīng)的配置。
Nginx 的主配置文件中有一行代碼是 include /etc/nginx/conf.d/*.conf,這行代碼的意思就是加載 /etc/nginx/conf.d/ 目錄下所有以 .conf 結(jié)尾的配置文件,所以我們直接將獨(dú)立的配置文件保存在 /etc/nginx/conf.d/ 目錄下就會(huì)自動(dòng)引入。
生成證書重新加載 Nginx 配置使更改生效:
sudo systemctl reload nginx
你現(xiàn)在可以運(yùn)行 Certbot 使用 Webroot 插件,為你的域名生成 SSL 證書:
sudo certbot certonly --agree-tos --email admin@kaifazhinan.com --webroot -w /var/lib/letsencrypt/ -d kaifazhinan.com -d www.kaifazhinan.com
注意: 記得將 admin@kaifazhinan.com 換成你自己的郵箱,還有 kaifazhinan.com 和 www.kaifazhinan.com 換成你的域名。
如果成功的生成了 SSL 證書,那么 Certbot 將打印類似以下的內(nèi)容:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/kaifazhinan.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/kaifazhinan.com/privkey.pem Your cert will expire on 2019-02-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, 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
現(xiàn)在你已經(jīng)成功生成了 SSL 證書,現(xiàn)在可以修改 Nginx 的域名配置了,這里我們的域名是配置文件是 kaifazhinan.com.conf,文件的全路徑是 /etc/nginx/conf.d/kaifazhinan.com.conf:
server { listen 80; server_name www.kaifazhinan.com kaifazhinan.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.kaifazhinan.com; ssl_certificate /etc/letsencrypt/live/kaifazhinan.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/kaifazhinan.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/kaifazhinan.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://kaifazhinan.com$request_uri; } server { listen 443 ssl http2; server_name kaifazhinan.com; ssl_certificate /etc/letsencrypt/live/kaifazhinan.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/kaifazhinan.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/kaifazhinan.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; # 如果有補(bǔ)充的配置,可以寫在這里 }
上面的代碼,我們將 HTTP 的請(qǐng)求重定向到了 HTTPS,將 www.kaifazhinan.com 重定向到了 kaifazhinan.com 上。
最后,通過(guò)下面的命令,重新加載 Nginx,使上面的配置生效:
sudo systemctl reload nginx自動(dòng)更新 Let’s Encrypt SSL 證書
Let’s Encrypt 頒發(fā)的 SSL 證書有效時(shí)間是 90 天。我們需要在證書過(guò)期之前自動(dòng)續(xù)訂證書,這里將創(chuàng)建一個(gè)每天運(yùn)行兩次的定時(shí)任務(wù) ,并在證書到期前 30 天自動(dòng)續(xù)訂。
通過(guò)運(yùn)行 crontab 命令,來(lái)創(chuàng)建一個(gè)定時(shí)任務(wù):
sudo crontab -e
上面的命令,會(huì)自動(dòng)創(chuàng)建一個(gè)文件,并自動(dòng)進(jìn)入編輯狀態(tài),所以直接復(fù)制下面的內(nèi)容粘貼到里面即可:
0 */12 * * * root test -x /usr/bin/certbot -a ! -d /run/systemd/system && perl -e "sleep int(rand(3600))" && certbot -q renew --renew-hook "systemctl reload nginx"
保存并關(guān)閉文件。
如果要測(cè)試是否能夠正常更新證書,你可以在 certbot 命令后面添加 --dry-run 這個(gè)參數(shù)來(lái)主動(dòng)觸發(fā)更新命令。
sudo certbot renew --dry-run
如果沒有輸出錯(cuò)誤,則表示 SSL 證書更新成功。
總結(jié)通過(guò)此教程,你學(xué)會(huì)了:
如何使用 Let’s Encrypt 客戶端 Certbot 為你的域名創(chuàng)建了 SSL 證書;
也通過(guò)創(chuàng)建 Nginx 的代碼片段,來(lái)避免 Nginx 配置文件中的代碼冗余,并且將 SSL 證書配置到了 Nginx 服務(wù)中;
最后,你還創(chuàng)建了一個(gè)定時(shí)任務(wù),來(lái)自動(dòng)更新你的 SSL 證書,保證它不會(huì)過(guò)期。
如果你想了解 Certbot 的更多信息,可以參考它的官方文檔。
期待下次與你相見 : )
本文首發(fā):開發(fā)指南:如何在 CentOS 7 上安裝 Nginx
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/40350.html
摘要:正好最近有一臺(tái)空閑的于是來(lái)搭建一個(gè)玩玩。因此我們可以申請(qǐng)免費(fèi)的證書,這個(gè)證書不但免費(fèi),而且操作非常簡(jiǎn)單,雖然每次只有天的有效期,但可以通過(guò)腳本配置定期更新。這個(gè)驗(yàn)證服務(wù)以后更新證書還要用到,要一直保留。創(chuàng)建一個(gè)并通過(guò)賦予執(zhí)行權(quán)限。 0x00 前言 ????????WordPress是世界上最受歡迎的CMS系統(tǒng),它是基于php和MySQL技術(shù)棧的,并且還有很多插件,可擴(kuò)展性非常強(qiáng)。正好最...
摘要:通過(guò)購(gòu)買免費(fèi)的證書購(gòu)買地址詳細(xì)操作請(qǐng)點(diǎn)擊免費(fèi)申請(qǐng)阿里云賽門企業(yè)級(jí)鐵克證書在上面配置我們現(xiàn)在這里只講解在阿里云下購(gòu)買的證書進(jìn)行配置,現(xiàn)在都有了證書,現(xiàn)在我們來(lái)配置。 最近項(xiàng)目中的網(wǎng)站要設(shè)置https,雖然進(jìn)入軟件行業(yè)6年了,配置這個(gè)還是顯得信心不足,還好網(wǎng)上有好多網(wǎng)友分享的文章可以從中學(xué)習(xí),但是有優(yōu)也有劣,憑我自己的一點(diǎn)經(jīng)驗(yàn)從中甄選出好一點(diǎn)的文章跟大家分享一下。 1、什么是Https? ...
摘要:為了避免那些杯具,網(wǎng)站需要戴上名為的安全套。我也是經(jīng)網(wǎng)友提醒才給網(wǎng)站增加了以提高安全性,謝謝他。在談安全時(shí),從來(lái)就沒有絕對(duì)的安全,就像安全套不能百分百避免中標(biāo)。要想使自己的網(wǎng)站時(shí)刻保持相對(duì)安全的狀態(tài),站長(zhǎng)本身就應(yīng)該是一名黑客。 本文首發(fā)于歐雷流《給網(wǎng)站戴上「安全套」》。由于我會(huì)時(shí)不時(shí)對(duì)文章進(jìn)行補(bǔ)充、修正和潤(rùn)色,為了保證所看到的是最新版本,請(qǐng)閱讀原文。 上周六我去一家售后服務(wù)點(diǎn)參加了「冬...
閱讀 2195·2023-04-25 18:49
閱讀 1901·2019-08-30 14:02
閱讀 2728·2019-08-29 17:24
閱讀 3375·2019-08-28 18:10
閱讀 2985·2019-08-28 18:03
閱讀 557·2019-08-26 12:01
閱讀 3373·2019-08-26 11:31
閱讀 1495·2019-08-26 10:29