通過 Certbot 為 nginx 開啟https支持。 環境 CentOS 7.1 python2.x(這玩意系統里本來就有) 安裝Nginx 順手啟動: 順手設置開機啟動: 嗯,就完成了。 至於配置文件,會在後面設置。 配置https 此處我們使用 Let's Encrypt 提供的證書。且為 ...
通過 Certbot 為 nginx 開啟https支持。
環境
- CentOS 7.1
- python2.x(這玩意系統里本來就有)
安裝Nginx
sudo yum install nginx -y
順手啟動:
sudo systemctl start nginx
順手設置開機啟動:
sudo systemctl enable nginx
嗯,就完成了。 至於配置文件,會在後面設置。
配置https
此處我們使用 Let's Encrypt 提供的證書。且為了方便設置,使用 Certbot 配置工具。
工具獲得
證書機構: Let's Encrypt - https://letsencrypt.org
配置工具: Certbot - https://certbot.eff.org/
事實上,你根本用不到上面兩個鏈接,我把它們寫在這隻是為了方便瞭解其他細節,順便表示尊重。
實際上我們可以直接通過包管理器獲取 Certbot 工具。
首先需要安裝 EPEL 源:
sudo yum install epel-release -y
然後安裝 Certbot :
sudo yum install python2-certbot-nginx -y
工具安裝完成。
使用 Certbot
Certbot 使用命令行中的互動式配置,我們啟動它,然後跟著指示一步一步完成就行。
一、 啟動 Certbot
通過命令:
sudo certbot --nginx
二、 填寫郵箱
在下述提示後,填寫你的郵箱地址。
Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected]
輸入你的郵箱地址,回車確定。
三、 同意用戶協議
下述提示提醒你閱讀並同意用戶協議之類的。
Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf.
You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
輸入字母 A
回車確定。
四、 請求分享你的郵箱
意思是他們會沒事給你發發廣告郵件。同意就是了 ╮(╯▽╰)╭
Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
輸入字母 Y
回車確定。
五、 指定功能變數名稱
由於我們在安裝nginx後沒有配置站點,所以此處要求我們提供功能變數名稱,配置工具會幫我們填寫nginx的配置文件。
No names were found in your configuration files. Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel): www.xxxx.com xxx.xxxx.com
輸入你自己的功能變數名稱(多個功能變數名稱中間用空格隔開)回車確定。
六、 重定向
會詢問你是不是要把所有http請求重定向到https。當然要了~
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS.
You can undo this change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
輸入數字 2
回車確定。
七、 完成
此時配置已經完成。你可以在接下來的輸出中找到如下段落:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://www.xxxx.com and https://xxx.xxxx.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=www.xxxx.com
https://www.ssllabs.com/ssltest/analyze.html?d=xxx.xxxx.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
意思就是你已經成功配置了 www.xxxx.com xxx.xxxx.com 兩個功能變數名稱(就是在 步驟五 輸入的那兩個,當然,你輸入了多少個這裡就會顯示多少個)。
並且你可以在 https://www.ssllabs.com/ 這個網站上測試功能變數名稱的狀態。
八、 證書過期
由於 Let's Encrypt 的免費證書有效期是90天,所以你需要每80幾天重新申請一次。
Certbot 可以通過簡單的命令完成這個工作:
certbot renew
如果你還是覺得麻煩,可以把這個操作設為定時任務,每80幾天運行一次,就可以高枕無憂了。
其他
支持https的nginx已經完全配置完成。接下來把你的站點放在nginx的目錄下就行,一般是 /usr/share/nginx/html
如果不是這裡,你可以在nginx的配置文件里找到,配置文件位於 /etc/nginx/nginx.conf
。
在瀏覽器中打開站點,就能看到地址欄上的小綠鎖了~
原文發佈於 https://blog.moonlightwatch.me/linux/2018/08/30/nginx-https/