說明
以前總覺得搭建一個https服務器好難好難,親手操作之后,其實并不難,因為現在可以從 letsencrypt 申請免費的 https 第三方證書,使用 certbot 工具更是將證書申請變得是分分鐘搞定的易事。
步驟
- 安裝 certbot
> yum install certbot # centos 7 下安裝 certbot
> apt-get install certbot # ubuntu 下安裝 certbot
注意:每個系統安裝 certbot 都不太一樣,具體的安裝方式,參考官方網站
- 創建證書
> certbot certonly --standalone -d example.com -d www.example.com # 證書作用于域名 example.com 和 www.example.com
相關路徑:
/etc/letsencrypt/live/www.zmzd.com.cn # 證書目錄(鏈接文件,鏈接到下面目錄中的證書文件)
/etc/letsencrypt/archive/www.zmzd.com.cn # 真實證書目錄,這兒的證書可以拷貝,比如到docker容器中...
另外:也可以自建證書,方法如下
> openssl genrsa -out privkey.pem 1024/2038 # 生成私鑰
> openssl req -new -x509 -key privkey.pem -out server.pem -days 365 # 根據私鑰生成公鑰
注意:自建證書不被瀏覽器認可,打開網站會被阻止,地址欄顯示紅色警告,但仍然可以訪問。
- 在 nginx 的 server 區塊配置 ssl 相關參數
# https
listen 443 ssl; # 啟用 ssl 安全協議
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # 設置公鑰的位置
ssl_certificate_key /etc/letsencrypt/live/example.com/fullchain.pem; # 設置私鑰的位置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
- 重啟 nginx,搞定!
在瀏覽器中用 https 協議訪問你的域名是不是綠色的了?
備注
- certbot 生成的證書有效期為3個月,即將到期時可用如下命令重新生成證書文件
> certbot renew # 重新生成證書,建議加入到 crontab 定時任務中
> certbot renew --dry-run # 測試自動更新證書
- 可以添加 HSTS 協議,以讓站點更加安全
在頭信息中添加Strict-Transport-Security "max-age=63072000; includeSubdomains;"
其中Strict-Transport-Security 是 Header 字段名, 后面的 max-age 代表 HSTS 在客戶端的生效時間。 includeSubdomains 表示對所有子域名生效。
# nginx 配置
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains;";
參考
certbot 官方
letsencrypt 官方
申請Let's Encrypt免費ssl證書流程和部署https服務
安全補腦 - 開啟 HSTS 協議讓你的站點更加安全