nginx - 配置 https 服務器(含免費證書申請)

說明

以前總覺得搭建一個https服務器好難好難,親手操作之后,其實并不難,因為現在可以從 letsencrypt 申請免費的 https 第三方證書,使用 certbot 工具更是將證書申請變得是分分鐘搞定的易事。

步驟

  1. 安裝 certbot
> yum install certbot # centos 7 下安裝 certbot
> apt-get install certbot # ubuntu 下安裝 certbot

注意:每個系統安裝 certbot 都不太一樣,具體的安裝方式,參考官方網站

  1. 創建證書
> 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 # 根據私鑰生成公鑰

注意:自建證書不被瀏覽器認可,打開網站會被阻止,地址欄顯示紅色警告,但仍然可以訪問。

  1. 在 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;
  1. 重啟 nginx,搞定!
    在瀏覽器中用 https 協議訪問你的域名是不是綠色的了?

備注

  1. certbot 生成的證書有效期為3個月,即將到期時可用如下命令重新生成證書文件
> certbot renew # 重新生成證書,建議加入到 crontab 定時任務中
> certbot renew  --dry-run # 測試自動更新證書
  1. 可以添加 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 協議讓你的站點更加安全

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容