在部分場景中,我們必須使用 https 請求,因為 https 請求更為安全,常用于支付方面的請求呼叫
https 的基礎是 ssl,我們一般是沒有 ssl 證書的,我們需要向供應商購買 ssl 證書,今天我們使用 Let’s Encrypt 獲取免費證書,搭建我們的 https 請求
1、安裝 Nginx
在 Centos 中搭建 nginx 環境,可以參考我的這篇文章,Centos7中搭建Nginx環境
https://lizhou.blog.csdn.net/article/details/116043485
2、安裝 ssl 模塊
我們默認安裝的 nginx 是沒有 ssl 模塊的,可以輸入命令驗證,進入 nginx 的目錄
cd /usr/local/nginx/sbin/
執行命令
./nginx -V
注意是大寫的 V,小寫的 v 只會出現 nginx 的版本資訊

如圖所示,我是已經安裝了 ssl 模塊的,沒有安裝的可以參考如下:
- 1> 進入到你解壓 nginx 的目錄,也就是帶用 nginx 版本資訊的那個目錄
cd /usr/local/nginx-1.8.0/

- 2> 執行命令
./configure --prefix=/usr/local/nginx --with-http_ssl_module
配置了 ssl 模塊,使用 make 命令重新編譯
make
注意,不能使用 make install 命令,這樣會導致重新安裝 nginx,此時當前目錄就會出現 objs 目錄

進入 objs 目錄,會看到 nginx 的可執行檔案

- 3> 替換 nginx 可執行檔案
我們使用這個新的 nginx 可執行檔案 替換 sbin 目錄下的 nginx 可執行檔案
cp ./nginx /usr/local/nginx/sbin/
系統會詢問你是否覆寫,輸入 y 即可,如果覆寫失敗,多半是因為你的 nginx 還在啟動中,先將 nginx 關閉即可
- 4> 再次檢驗是否安裝 ssl 模塊
進入 nginx 目錄
cd /usr/local/nginx/sbin/
執行命令
./nginx -V
此時就能看到 ssl 模塊已經安裝成功了

3、獲取 ssl 證書
- 1、Let’s Encrypt 簡介
如果要啟用 HTTPS,我們需要一個 CA 證書,Let’s Encrypt 是一個免費的證書頒發機構,由 ISRG(Internet Security Research Group)運作,
- 2、使用 Certbot 獲取證書
Certbot 是 Let’s Encrypt 官方推薦的證書獲取工具,它可以幫助用戶很方便的獲取和更新 Let’s Encrypt 證書,Certbot 支持所有 Unix 內核的作業系統,
- 3、安裝 Certbot 客戶端
執行命令
yum install -y epel-release
yum install -y certbot
- 4、獲取證書
因為使用 Certbot 獲取證書時,Let’s Encrypt 服務器會訪問 http://sub.domain.com/.well-known 來驗證你的域名服務器,因此你需要修改 nginx 組態檔,配置 .well-known 指向本地一個目錄
location /.well-known {
alias /usr/local/nginx/html/.well-known;
}

- 5、使用 certbot 命令獲取 ssl 證書,執行命令
certbot certonly --webroot -w /usr/local/nginx/html/ -d xxx.com -m xxxxxx@xxx.com --agree-tos
-w,指定 webroot 目錄
-d,指定想要獲取證書的域名,支持多個域名
-m,輸入你的郵箱地址
如果獲取成功,你的密鑰和證書存放在 /etc/letsencrypt/live/xxx.com/ 目錄下

錯誤解決:
- 1、ImportError: cannot import name UnrewindableBodyError
解決辦法,重裝 urllib3 庫,執行命令
pip uninstall urllib3
卸載 urllib3 庫
pip install urllib3
安裝 urllib3 庫
- 2、pkg_resources.DistributionNotFound: The ‘urllib3<1.23,>=1.21.1’ distribution was not found and is required by requests
執行命令
easy_install urllib3==1.21.1
- 3、ImportError: ‘pyOpenSSL’ module missing required functionality. Try upgradin
執行命令
pip install --upgrade --force-reinstall 'requests==2.6.0'
以上就是我遇到的三個問題,期間有詢問你的陳述句,屬于 y 即可
以上錯誤解決完后,再次輸入命令獲取 ssl 證書
certbot certonly --webroot -w /usr/local/nginx/html/ -d xxx.com -m xxxxxx@xxx.com --agree-tos
沒錯誤,就能夠在 /etc/letsencrypt/live/xxx.com/ 目錄下看到你的 ssl 證書了
注意: 該證書 90 天有效,到期需要重新申請,你也可以通過定時任務來定時更新 ssl 證書
4、配置 nginx HTTPS server
編輯 nginx 的組態檔
cd /usr/local/nginx/conf/

編輯 nginx.conf 檔案
vim nginx.conf
在 server {} 后面加入以下內容
# HTTPS server
server {
# 監聽埠,默認443
listen 443 ssl;
# 你的域名
server_name xxx.com;
# 你證書的位置
ssl_certificate /etc/letsencrypt/live/xxx.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xxx.com/privkey.pem;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# 默認首頁
location / {
root html;
index index.html index.htm;
}
}
5、訪問測驗
重啟 nginx,進入 sbin 目錄
cd /usr/local/nginx/sbin
輸入命令
./nginx -s reload
瀏覽器訪問
https://xxx.com

表示,我們的 ssl 證書生效,https 配置成功
如您在閱讀中發現不足,歡迎留言!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279912.html
標籤:其他
下一篇:通過有線網卡共享無線網路
