現在已經到了遍地都是HTTPS網站的年代,瀏覽器的一些功能和接口也限制了HTTPS才能使用,如果你的網站還沒有HTTPS,是時候看下這篇文章,動手配置一個了。

本篇博文教你如何在CentOS 7上,為使用 Nginx 的網站配置HTTPS。

Let's encrypt教程,Let's encrypt免費證書,Let's encrypt獲取證書,centos配置SSL,網站HTTPS教程

配置HTTPS前,需要有對應的證書。恰好,Let's encrypt提供了免費的SSL/TLS證書

安裝 Certbot 獲取證書

国产视频app下面獲取證書的命令中,--email 表示域名所有者的郵箱,多個域名用 -d 連接。

這里不多做介紹,可前往 http://certbot.eff.org/docs/ 查看對應文檔信息(英文不認識的,可借助翻譯工具)。

Certbot 會通過 80 端口檢查域名的解析 IP 是否和請求的服務器 IP 一致,獲取證書前,請確認你的域名解析正常。

# Certbot 在 EPEL 源里,需要先安裝 EPEL。
yum install epel-release
# 安裝 Certbot
yum install certbot-nginx
# 查看 80 端口是否被占用
lsof -i:80
# 如果是 Nginx 占用,停止 Nginx,釋放 80 端口
nginx -s stop
# 獲取證書
certbot certonly --standalone --email admin@example.com -d example.com -d www.example.com
# 更新證書
certbot renew

為 Nginx 配置 A+ 級 HTTPS

打開需要配置 HTTPS 的站點配置文件,將以下代碼粘貼在 server 里,并根據注釋修改其對應的內容。

Let's encrypt教程,Let's encrypt免費證書,Let's encrypt獲取證書,centos配置SSL,網站HTTPS教程

listen 443 ssl;
# 開啟 SSL 功能
ssl on;
# 修改這里,SSL 證書文件路徑,由證書簽發機構提供
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
# 修改這里,SSL 密鑰文件路徑,由證書簽發機構提供
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# 修改這里,CA 根證書文件路徑,由證書簽發機構提供
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
# 修改這里,Diffie-Hellman 密鑰文件路徑,建議定期更改
# 生成方法: openssl dhparam -out dhparam.pem 4096
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
# 修改這里,加密或解密 session_ticket 密鑰文件路徑,建議定期更改
# 生成方法: openssl rand 48 > session_ticket.key
ssl_session_ticket_key /etc/nginx/ssl/session_ticket.key;
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";
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets on;
ssl_buffer_size 1400;
ssl_stapling on;
ssl_stapling_verify on;
# 修改這里,國內填 223.5.5.5 223.6.6.6,國外填 8.8.4.4 8.8.8.8
resolver 8.8.4.4 8.8.8.8 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "DENY";
add_header X-XSS-Protection "1; mode=block";

如果你要使用 HTTP2,就需要更新 Nginx 到 1.9+,然后在 listen 后面加上 http2,如下

listen 443 ssl http2;

国产视频app如果你要 SSL 支持 TLSv1.3,需要使用 OpenSSL draft-18+ 的分支,然后使用下面的配置:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers "TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256: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";

配置數據改好后,確認無誤,重啟下 Nginx 就行

国产视频app文章當這里就結束了,如果你還有其它的問題,可以在下方留言哦!