Nginx 添加 SSL 证书打造安全的 HTTPS 网站
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
本文介绍了如何在 Nginx 服务器上配置 SSL 证书,以实现 HTTPS 安全访问,内容涵盖 SSL 证书的获取、Nginx 配置文件的修改、证书与私钥的部署,以及强制 HTTP 重定向到 HTTPS 的方法,通过这些步骤,可有效提升网站安全性,保障用户数据传输的加密与完整。
在现代互联网应用中,网站的安全性已成为不可忽视的重要因素,随着 HTTPS 协议的普及,越来越多的网站开始采用 SSL/TLS 证书来加密数据传输,保护用户隐私,Nginx 作为一款高性能的 Web 服务器和反向代理服务器,广泛应用于各类网站架构中,本文将详细介绍如何在 Nginx 中添加 SSL 证书,以实现 HTTPS 安全访问。
SSL(Secure Sockets Layer)是一种用于保障网络通信安全的加密协议,SSL 证书则用于验证网站身份,并在客户端与服务器之间建立加密连接,通过为网站配置 SSL 证书,浏览器地址栏会显示“锁”形图标,表明该网站已通过安全认证,数据传输过程受到加密保护。
SSL 证书主要分为以下几类:
- 域名验证(DV)证书:适用于个人网站或测试环境,验证过程简单快捷。
- 组织验证(OV)证书:适用于企业网站,在颁发前需验证组织身份信息。
- 扩展验证(EV)证书:适用于金融、电商等对安全性要求极高的网站,浏览器地址栏将显示绿色公司名称,增强用户信任。
配置 SSL 证书前的准备工作
在为 Nginx 配置 SSL 之前,需要完成以下准备工作:
-
获取 SSL 证书
可通过权威证书颁发机构(如 Let’s Encrypt、DigiCert、阿里云、腾讯云等)申请证书,Let’s Encrypt 提供免费证书,适合大多数中小型网站使用。 -
生成证书签名请求(CSR)和私钥文件
通常使用 OpenSSL 工具生成 CSR 和私钥文件:openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
执行上述命令后,将生成两个关键文件:私钥文件
example.com.key
和证书签名请求文件example.com.csr
。 -
上传 SSL 证书文件
成功申请后,你将获得以下文件:- 域名证书(如
example.com.crt
) - 中间证书(Intermediate CA)
- 私钥文件(
example.com.key
)
将这些文件上传至服务器,并妥善保存,避免泄露。
- 域名证书(如
在 Nginx 中配置 HTTPS 支持
编辑 Nginx 的配置文件(通常位于 /etc/nginx/conf.d/example.com.conf
或 /etc/nginx/sites-available/default
),添加或修改如下配置:
server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { root /usr/share/nginx/html; index index.html index.htm; } }
配置说明:
listen 443 ssl;
表示启用 HTTPS 监听。ssl_certificate
和ssl_certificate_key
分别指向证书文件和私钥文件。ssl_protocols
和ssl_ciphers
用于配置支持的加密协议和算法,推荐使用更安全的 TLSv1.2 和 TLSv1.3,禁用不安全的加密套件。
如果你拥有中间证书,可以将其与域名证书合并为一个文件,以确保链式信任:
cat example.com.crt intermediate.crt > example.com.bundle.crt
然后在配置中修改 ssl_certificate
路径为合并后的文件路径:
ssl_certificate /etc/nginx/ssl/example.com.bundle.crt;
配置 HTTP 重定向至 HTTPS
为了确保所有用户都通过 HTTPS 访问网站,可以在 Nginx 中添加一个监听 80 端口的 server 块,将 HTTP 请求永久重定向到 HTTPS:
server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; }
这样可以有效避免用户访问不安全的 HTTP 版本,进一步提升网站的安全性。
测试并重启 Nginx 服务
完成配置后,使用以下命令检查配置文件语法是否正确:
nginx -t
若无语法错误,重启 Nginx 服务使配置生效:
systemctl restart nginx
随后,打开浏览器访问你的网站,确认地址栏显示 HTTPS 和“锁”图标,表示 SSL 配置已成功生效。
使用 Let’s Encrypt 自动申请证书(推荐)
对于希望简化证书申请与维护流程的用户,推荐使用 Certbot 工具自动申请和更新 Let’s Encrypt 证书,操作步骤如下:
-
安装 Certbot 及其 Nginx 插件:
sudo apt install certbot python3-certbot-nginx
-
运行命令申请证书:
sudo certbot --nginx -d example.com -d www.example.com
Certbot 将自动完成证书申请、配置修改和 HTTPS 重定向设置。
-
自动续期设置:
Certbot 会自动配置定时任务,定期更新证书,无需手动干预。
在 Nginx 上配置 SSL 证书,不仅能有效提升网站的安全性,还能增强用户信任感,并有助于提高搜索引擎排名,无论是通过手动配置证书,还是使用 Certbot 自动申请,都能快速实现 HTTPS 支持。
通过本文的详细指导,相信你已经掌握了在 Nginx 中配置 SSL 证书的完整流程,现在就为你的网站添加 SSL 证书,开启 HTTPS 安全之旅吧!
如需进一步了解 SSL/TLS 相关知识,或学习如何优化 HTTPS 性能,欢迎继续关注后续文章。