因為阿里云的云主機在沒有備案的情況下(備案比較復雜且無用), 80端口是關閉的, 這就導致想訪問你的網址就必須在域名后加上端口號,非常不優雅.然而https默認監聽443端口,這就給了我們一個方法去優雅的開放網站.
如果我們要啟用 HTTPS,就需要從證書授權機構(以下簡稱 CA ) 處獲取一個證書,Let's Encrypt 就是一個 CA。
Let's Encrypt 是一個免費、開放,自動化的證書頒發機構。
Certbot 是 Let’s Encrypt 官方推薦的證書生成客戶端工具
安裝Certbot
git clone https://github.com/certbot/certbot
或者
sudo apt-get install certbot
獲取證書
Certbot 獲取證書有兩種方式
webroot模式
這種模式適用于80端口在用且服務已經在運行的情況
sudo certbot certonly --webroot -w /var/www/example -d example.com --agree-tos --email 你的@郵箱.com
這種模式會在 /var/www/example 中創建 .well-known 文件夾,這個文件夾里面包含了一些驗證文件,letsencrypt 會通過訪問 example.com/.well-known/acme-challenge 來驗證你的域名是否綁定的這個服務器
-
--email
指定賬戶 -
--agree-tos
同意服務協議
standalone模式
這種模式適用于80端口無法啟用或者已啟用服務沒有根目錄的情況
sudo certbot certonly --standalone -d example.com --agree-tos --email 你的@郵箱.com
ps.此模式需先關閉443端口在用的nginx,不然會出現錯誤:
Problem binding to port 443: Could not bind to IPv4 or IPv6.
證書申請成功后會提示證書的文件路徑,以及證書到期時間:
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/zhengwuyang.top/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/zhengwuyang.top/privkey.pem
Your cert will expire on .......
zhengwuyang.top即為你的域名
nginx配置
在配置文件中加入
listen 443;
ssl on;
ssl_certificate /etc/letsencrypt/live/zhengwuyang.top/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/zhengwuyang.top/privkey.pem;
zhengwuyang.top即為你的域名
重啟nginx就大功告成