使用 Nginx 配置 SSL 证书 手把手教你生成与部署 HTTPS 证书
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
本文详细介绍了如何使用 Nginx 配置 SSL 证书,手把手教你生成和部署 HTTPS 证书,涵盖证书申请、配置文件修改及重启服务等步骤,帮助你快速实现网站的 HTTPS 安全访问。
随着互联网安全意识的不断增强,HTTPS 已成为现代网站的标配协议,作为一款高性能的 Web 服务器与反向代理服务器,Nginx 被广泛应用于 HTTPS 网站的部署中,本文将详细介绍如何在 Nginx 中配置 SSL 证书,涵盖手动生成自签名证书以及使用 Let’s Encrypt 免费申请可信证书的方法。
SSL(Secure Sockets Layer)是一种用于保障客户端与服务器之间数据传输安全的加密协议,通过 SSL 证书,可以实现通信内容的加密,防止中间人攻击(MITM),SSL 证书通常由受信任的第三方证书颁发机构(CA)签发,也可以使用自签名证书进行本地测试或开发环境的搭建。
虽然自签名证书不会被主流浏览器信任,但由于其配置简单、无需额外费用,非常适合开发和测试阶段使用。
生成自签名 SSL 证书
如果你仅需在测试环境中启用 HTTPS,可以使用 OpenSSL 工具快速生成自签名证书。
安装 OpenSSL(如尚未安装)
大多数 Linux 发行版默认已安装 OpenSSL,若未安装,可通过以下命令进行安装(以 Ubuntu/Debian 系统为例):
sudo apt update sudo apt install openssl
生成私钥与自签名证书
运行以下命令生成一个 2048 位的 RSA 私钥及对应的自签名证书,有效期设为 365 天:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
执行过程中会提示输入一些基本信息,例如国家、组织名称、通用名(Common Name)。“Common Name”字段应填写你的域名或服务器 IP 地址,否则浏览器可能会提示证书不匹配。
配置 Nginx 使用证书
编辑 Nginx 的站点配置文件(通常位于 /etc/Nginx/sites-available/default
或根据需求创建新的配置文件),添加如下 HTTPS 配置块:
server { listen 443 ssl; server_name your_domain_or_ip; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { root /usr/share/nginx/html; index index.html; } }
保存配置后,先测试配置文件是否正确:
sudo nginx -t
确认无误后,重启 Nginx 服务使配置生效:
sudo systemctl restart nginx
现在你可以通过 https://your_domain_or_ip
访问你的网站,但由于证书为自签名,浏览器通常会显示“证书不受信任”的警告。
使用 Let’s Encrypt 获取免费 SSL 证书
Let’s Encrypt 是一个自动化、开放且免费的证书颁发机构,广泛应用于生产环境,其颁发的证书被主流浏览器所信任。
安装 Certbot 工具
Certbot 是 Let’s Encrypt 官方推荐的客户端工具,安装方式因系统而异,以 Ubuntu 系统为例,执行以下命令安装 Certbot 及其 Nginx 插件:
sudo apt install certbot python3-certbot-nginx
申请并配置证书
运行以下命令,Certbot 将自动完成域名验证,并自动修改 Nginx 配置以启用 HTTPS:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
执行过程中会提示你是否启用强制 HTTPS 重定向(建议启用),Certbot 会自动更新 Nginx 配置文件。
验证与自动续期
Let’s Encrypt 的证书有效期为 90 天,因此建议设置自动续期机制,你可以通过以下命令测试续期流程:
sudo certbot renew --dry-run
Certbot 会在系统定时任务中自动添加续期脚本(通常通过 cron
或 systemd timer
实现),确保证书在到期前自动更新,无需手动干预。
本文详细介绍了如何在 Nginx 中配置 HTTPS 网站,包括使用 OpenSSL 生成自签名证书,以及使用 Certbot 工具从 Let’s Encrypt 获取受信任的免费证书,无论你是搭建开发测试环境,还是部署正式的生产网站,掌握这些技能都将有助于你提升网站的安全性与用户信任度。
在实际应用中,推荐优先使用 Let’s Encrypt 提供的证书,以获得浏览器的信任并提升网站整体的安全等级,Nginx 凭借其出色的性能与灵活的配置能力,是部署 HTTPS 网站的理想选择。
如需进一步优化 HTTPS 安全性,建议配置 HSTS(HTTP Strict Transport Security)、启用 OCSP Stapling 以及优化 SSL/TLS 协议与加密套件,以提供更高等级的安全防护。