nginx中配置https的詳細(xì)步驟及配置SSL/TLS證書(shū)的完整流程
前言
在當(dāng)今互聯(lián)網(wǎng)環(huán)境中,網(wǎng)站安全性至關(guān)重要。SSL/TLS 協(xié)議為網(wǎng)站提供了加密通信的能力,保護(hù)用戶數(shù)據(jù)免受竊聽(tīng)和篡改。本文將詳細(xì)介紹如何在 Nginx 服務(wù)器上配置 SSL/TLS 證書(shū),包括獲取證書(shū)、配置 Nginx、強(qiáng)化安全性等完整流程。無(wú)論您是使用 Let’s Encrypt 的免費(fèi)證書(shū)還是自簽名證書(shū),都能在本指南中找到對(duì)應(yīng)的配置方法。
一、準(zhǔn)備工作:安裝 Nginx
1.1 安裝 EPEL 倉(cāng)庫(kù)
sudo yum install epel-release -y
1.2 安裝 Nginx
sudo yum install nginx -y
1.3 啟動(dòng)并設(shè)置 Nginx 開(kāi)機(jī)啟動(dòng)
sudo systemctl start nginx sudo systemctl enable nginx
1.4 檢查 Nginx 是否正常運(yùn)行
訪問(wèn) http://your_server_ip,你應(yīng)該能看到 Nginx 的默認(rèn)歡迎頁(yè)面。如果沒(méi)有,使用以下命令檢查 Nginx 狀態(tài):
sudo systemctl status nginx
二、獲取 SSL/TLS 證書(shū)
SSL/TLS 證書(shū)是啟用 HTTPS 加密連接所必需的。我們可以使用免費(fèi)的 Let’s Encrypt 證書(shū),也可以選擇使用 自簽名證書(shū)。
2.1 使用 Let’s Encrypt 證書(shū)(推薦)
2.1.1 安裝 Certbot
sudo yum install epel-release -y sudo yum install certbot python2-certbot-nginx -y
2.1.2 獲取 SSL 證書(shū)
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
2.1.3 配置自動(dòng)續(xù)期
sudo crontab -e
添加以下行:
0 0 * * * /usr/bin/certbot renew --quiet
2.2 創(chuàng)建自簽名證書(shū)(僅用于測(cè)試)
2.2.1 生成自簽名證書(shū)
mkdir -p /usr/local/nginx/ssl/private
#證書(shū)私鑰文件夾
mkdir -p /usr/local/nginx/ssl/certs
#證書(shū)請(qǐng)求文件夾
openssl genpkey -algorithm RSA -out /usr/local/nginx/ssl/private/nginx-selfsigned.key -pkeyopt rsa_keygen_bits:2048
#-algorithm指定證書(shū)算法 SRA
#-out 指定輸出目錄
#-pkeyopt 指定秘鑰長(zhǎng)度,2048標(biāo)準(zhǔn)安全
openssl req -new -key /usr/local/nginx/ssl/private/nginx-selfsigned.key -out /usr/local/nginx/ssl/certs/nginx-selfsigned.csr
#req -new 生成一個(gè)新的證書(shū)請(qǐng)求
#-key /usr/local/nginx/ssl/private/nginx-selfsigned.key 請(qǐng)求一個(gè)私鑰
#-out /usr/local/nginx/ssl/certs/nginx-selfsigned.csr 輸出到證書(shū)請(qǐng)求文件
openssl x509 -req -days 365 -in /usr/local/nginx/ssl/certs/nginx-selfsigned.csr -signkey /usr/local/nginx/ssl/private/nginx-selfsigned.key -out /usr/local/nginx/ssl/certs/nginx-selfsigned.crt
#x509標(biāo)準(zhǔn)證書(shū)
#-req -days 365 -in /usr/local/nginx/ssl/certs/nginx-selfsigned.csr生成一個(gè)新的證書(shū)請(qǐng)求365天的
#-signkey /usr/local/nginx/ssl/private/nginx-selfsigned.key指向私鑰地址
#-out /usr/local/nginx/ssl/certs/nginx-selfsigned.crt指向證書(shū)地址
==================================證書(shū)簽發(fā)對(duì)話=====================================
其他字段說(shuō)明(一般在用 openssl req -new -key ... 生成 CSR 時(shí)會(huì)問(wèn))
Country Name (2 letter code): 國(guó)家代碼(必須 2 位,例如 CN、US)
State or Province Name: 省/州全名,例如 Zhejiang
Locality Name: 城市,例如 Hangzhou
Organization Name: 公司或組織名,例如 MyCompany Ltd
Organizational Unit Name: 部門名,例如 IT Department(可留空)
Common Name (e.g. server FQDN): 你的域名,例如 example.com
Email Address: 郵箱地址,例如 admin@example.com2.2.2驗(yàn)證是否生成成功
證書(shū)應(yīng)該已經(jīng)保存在 /usr/local/nginx/ssl/certs/nginx-selfsigned.crt(自簽名證書(shū)),密鑰文件保存在 /usr/local/nginx/ssl/private/nginx-selfsigned.key`(私鑰文件)。在nginx去配置引導(dǎo)這兩個(gè)文件
在企業(yè)中,一般獲得域名后,域名都會(huì)自帶證書(shū),所以實(shí)際上直接將證書(shū)和私鑰配置在nginx中即可。
三、配置 Nginx 啟用 SSL/TLS
3.1 編輯 Nginx 配置文件
vim /usr/local/nginx/conf/nginx.conf
3.2 配置 SSL 證書(shū)路徑
server {
listen 443 ssl;
server_name look.com www.look.com;
ssl_certificate /usr/local/nginx/ssl/certs/nginx-selfsigned.crt;
#指定密鑰路徑
ssl_certificate_key /usr/local/nginx/ssl/private/nginx-selfsigned.key;
#指定證書(shū)路徑
ssl_protocols TLSv1.2 TLSv1.3;
#證書(shū)版本
ssl_ciphers TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;
#定義加密套件??梢愿鶕?jù)安全需求選擇合適的加密方法。
#openssl版本低的解決方法
#一、修改為ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
#二、升級(jí)openssl版本
ssl_prefer_server_ciphers on;
#強(qiáng)制服務(wù)器優(yōu)先選擇加密套件。
location / {
root /usr/share/nginx/html;
index index.html;
}
}
3.3 配置 HTTP 到 HTTPS 重定向
這將使得訪問(wèn) HTTP(端口 80)的請(qǐng)求自動(dòng)重定向到 HTTPS。
server {
listen 80;
server_name benet.com www.benet.com;
return 301 https://$host$request_uri;
}

3.4 配置 HTTP/2(可選)
server {
listen 443 ssl http2;
...
}
四、強(qiáng)化 SSL/TLS 安全性
為了提升 SSL/TLS 配置的安全性,我們可以實(shí)施一些最佳實(shí)踐。
4.1 禁用弱加密協(xié)議
推薦僅啟用 TLS 1.2 和 TLS 1.3,禁用所有過(guò)時(shí)的協(xié)議,如 SSLv3 和 TLS 1.0/1.1。
ssl_protocols TLSv1.2 TLSv1.3;
4.2 啟用 HTTP Strict Transport Security (HSTS)
HSTS 強(qiáng)制瀏覽器只能通過(guò) HTTPS 訪問(wèn)網(wǎng)站。以下配置將設(shè)置最長(zhǎng)為一年(31536000 秒)的 HSTS:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
4.3 啟用更強(qiáng)的 Diffie-Hellman 參數(shù)
為了確保安全,使用一個(gè)更強(qiáng)的 Diffie-Hellman 參數(shù)。生成一個(gè) 2048 位的 DH 參數(shù)文件:
sudo openssl dhparam -out /usr/local/nginx/ssl/certs/dhparam.pem 2048
然后在 Nginx 配置中引用它:
ssl_dhparam /usr/local/nginx/ssl/certs/dhparam.pem;
4.4 配置加密套件
配置一個(gè)現(xiàn)代、安全的加密套件,并禁用已知的弱加密算法。例如:
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
五、驗(yàn)證配置
5.1 檢查 Nginx 配置
sudo nginx -t
5.2 重啟 Nginx
sudo systemctl restart nginx
5.3 測(cè)試 HTTPS 配置
使用瀏覽器訪問(wèn) https://benet.com,或使用命令:
curl -I https://look.com

總結(jié)
通過(guò)本文的詳細(xì)步驟,您已經(jīng)學(xué)會(huì)了如何在 Nginx 服務(wù)器上配置 SSL/TLS 證書(shū)。無(wú)論是使用 Let’s Encrypt 的免費(fèi)證書(shū)還是自簽名證書(shū),都能為您的網(wǎng)站提供安全的 HTTPS 連接。同時(shí),通過(guò)強(qiáng)化 SSL/TLS 配置,可以進(jìn)一步提升網(wǎng)站的安全性。定期檢查和更新證書(shū)是確保網(wǎng)站持續(xù)安全運(yùn)行的重要環(huán)節(jié)。希望本指南能幫助您順利完成 Nginx 的 SSL/TLS 配置工作。
到此這篇關(guān)于nginx中配置https詳解:配置SSL/TLS證書(shū)的文章就介紹到這了,更多相關(guān)nginx配置https內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- nginx生成自簽名SSL證書(shū)配置HTTPS的實(shí)現(xiàn)
- CentOS環(huán)境下Nginx配置SSL證書(shū)實(shí)現(xiàn)https請(qǐng)求詳解
- Nginx配置ssl證書(shū)(https)的全過(guò)程
- nginx結(jié)合openssl實(shí)現(xiàn)https的方法
- nginx配置ssl實(shí)現(xiàn)https的方法示例
- Nginx 域名SSL證書(shū)配置(網(wǎng)站 http 升級(jí)為 https)
- nginx配置SSL證書(shū)實(shí)現(xiàn)https服務(wù)的方法
- nginx配置ssl實(shí)現(xiàn)https訪問(wèn)的步驟(適合新手)
相關(guān)文章
nginx幾種網(wǎng)頁(yè)重定向(rewirte)的配置方法詳解
這篇文章主要詳細(xì)介紹了nginx幾種網(wǎng)頁(yè)重定向(rewirte)的配置方法,文中通過(guò)代碼示例和圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-02-02
nginx添加nginx-sticky-module模塊步驟的實(shí)現(xiàn)
nginx-sticky-module模塊是nginx實(shí)現(xiàn)負(fù)載均衡的一種方案,和ip_hash負(fù)載均衡算法會(huì)有區(qū)別的,本文主要介紹了nginx添加nginx-sticky-module模塊步驟的實(shí)現(xiàn),感興趣的可以了解一下2023-08-08
Nginx+SpringBoot實(shí)現(xiàn)負(fù)載均衡的示例
這篇文章主要介紹了Nginx優(yōu)雅的實(shí)現(xiàn)負(fù)載均衡,幫助大家更好的理解和使用nginx,感興趣的朋友可以了解下2020-10-10
利用Nginx反向代理與負(fù)載均衡搭建多人測(cè)試環(huán)境詳解
這篇文章主要介紹了利用Nginx反向代理與負(fù)載均衡搭建多人測(cè)試環(huán)境的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-04-04
在Nginx用htpasswd對(duì)網(wǎng)站進(jìn)行密碼保護(hù)的設(shè)置方法
很多時(shí)候我們需要對(duì)一些網(wǎng)站進(jìn)行密碼保護(hù),比如團(tuán)隊(duì)內(nèi)部的站點(diǎn)、demo站點(diǎn)等等。這里所說(shuō)的密碼保護(hù)是服務(wù)器級(jí)的,并非網(wǎng)站應(yīng)用層的注冊(cè)登錄那一套,而是利用服務(wù)器配置和htpasswd文件來(lái)實(shí)現(xiàn)訪問(wèn)的密碼驗(yàn)證2013-06-06

