CentOS 7 Let's Encrypt 免費 SSL/TLS 憑證 HTTPS 設置 for Nginx
在 CentOS 7 搭配 NGINX 來使用 Let's Encrypt 的免費 SSL/TLS 憑證,並使用 Certbot 來自動取得、部署和更新 SSL 憑證,在結合排程讓系統自動續期憑證。
Chrome 將在「http://…」上顯示安全性警告
Google 2017 年 8 月寄的 Email 內容:
自 2017 年 10 月起,如果使用者使用 Chrome (62 版) 時在 HTTP 網頁的表單中輸入文字,或是在無痕模式下瀏覽 HTTP 網頁,Chrome 將顯示「不安全」警告。
您網站中的下列網址包含文字輸入欄位(例如 <input type="text">
或 <input type="email">
),將會觸發這項新的 Chrome 警告。請查看這些示例,掌握這類警告出現的位置,方便您採取有助於保護使用者資料的行動。另外也請注意,我們並未逐一列出所有有問題的網址。
安裝軟體
安裝 EPEL 軟體擴充資源庫:
yum install epel-release
Let's Encrypt 憑證取得方式不同與其它網站是在網頁上手動填寫申請資料的,而是須在 Server 上安裝一個 Client(python 寫的),這種作法所帶來的好處是可全自動化,這裡使用 Let's Encrypt 官方推薦的 Certbot Client,來自動取得、部署和更新 SSL 憑證:
yum install certbot
申請憑證
設定方式可參考 Certbot 官網的教學,選擇符合的 HTTP 網頁伺服器和 OS。
certbot 首次申請 SSL 憑證:
- 憑證過期前會預先寄發郵件至填寫的 Email
certbot certonly --webroot -w [網站根目錄] -d [網站網址] -m [聯絡人 Email] --agree-tos
(-d
[網站網址] 可有多個子網域,如 -d yummygo.com.tw -d img.yummygo.com.tw -d test.yummygo.com.tw
)
-d
[網站網址] 所列網址,必須要能對應到 DNS A 或 CNAME 的設定certbot certonly --webroot -w /var/nginx/html -d img.yummygo.com.tw -m eo-mis@hotel-tainan.com.tw --agree-tos
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
-------------------------------------------------------------------------------
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 EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o:Y
證書儲存在:
- ssl_certificate: /etc/letsencrypt/live/img.yummygo.com.tw/fullchain.pem
- ssl_certificate_key: /etc/letsencrypt/live/img.yummygo.com.tw/privkey.pem
刪除憑證
請參考 Let’s Encrypt 免費 Wildcard 萬用字元憑證 SSL/TLS for CentOS 7。
NGINX 設定
NGINX SSL/TLS 設定:
vi /etc/nginx/conf.d/default.conf
# ... 以上省略 ...
server {
# 使用 https 和 http/2 協定
listen 443 ssl http2;
# 上述的 IPv6 方式
listen [::]:443 ssl http2;
# 網站網址
server_name img.yummygo.com.tw;
# 網站根目錄
root /var/nginx/html;
#
# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
#
# SSL 憑證證書路徑
ssl_certificate /etc/letsencrypt/live/img.yummygo.com.tw/fullchain.pem;
# 私鑰路徑
ssl_certificate_key /etc/letsencrypt/live/img.yummygo.com.tw/privkey.pem;
# 緩存有效期
ssl_session_timeout 1d;
# 緩存憑證類型和大小
ssl_session_cache shared:SSL:50m;
#
# intermediate configuration. tweak to your needs.
#
# 使用的加密協定
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 加密演算法,越前面的優先級越高
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
# 交握過程使用 Server 的首選加演算法,這裡使用 Client 為首選
ssl_prefer_server_ciphers on;
#
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
#
# 增加 http header
add_header Strict-Transport-Security max-age=15768000;
}
重新啟動 NGINX:
systemctl restart nginx
防火牆設定
設定 firewall 允許 https service(Posr 443):
firewall-cmd --permanent --add-service=https --zone=public
firewall-cmd --reload
自動續期憑證
Let's Encrypt 免費 SSL/TLS 憑證有效期僅有三個月,因此設定排程來自動續期:
vi /etc/crontab
# 每月 1 日 03:00 續期憑證,並重啟 Nginx
00 03 1 * * root /usr/bin/certbot renew --quiet && /bin/systemctl restart nginx
Chrome Browser 安全狀態
如果加上 SSL/TLS 憑證後 Chrome Browser 網址列仍顯示!圖示,表示在該網頁中使用了非 HTTPS 的連結,Chrome Browser 安全判定,大致會有以下四種狀況:
全站 HTTPS,且都使用合法的 SSL/TLS 憑證。
使用合法的 SSL/TLS 憑證,但網頁中使用了非 HTTPS 的連結。
網站使用不合法的 SSL/TLS 憑證。
網站無使用 HTTPS(使用 HTTP 瀏覽)
參考
本著作係採用創用 CC 姓名標示-相同方式分享 3.0 台灣 授權條款授權.
站長您好,
從您的網站中讓我得到了很多有用的資訊,在此先謝謝您的無私分享。
因最近也想架一個WordPress網站來記錄自己工作上的經驗,同時我也很喜歡您這個網站的佈景風格,讓人很容易方便閱讀。
所以很冒昧的想請問一下,不知您願不願意分享這個網站的佈景主題給我?
或者您是否有意願出售這個佈景主題?
因為在網站上找不到連絡您的方式,所以冒味的在此留言,如有造成您的困擾,敬請見諒。
能夠直接分享給您,只是該佈景為完全自己手工與首次建立,所以 Code 不是撰寫的很好,而且也不是很方便就是,您需再自行調整。
您所留的 EMail 是否正確?
我在寄給您。
再次感謝您的無私分享,Email確認是,麻煩您了。
在結合排程讓系統自動續期憑證