一、准备工作
确认 Nginx 已安装:
若未安装 Nginx,执行以下命令安装:
sudo yum update
sudo yum install nginx
获取 SSL 证书:
购买证书:从正规证书颁发机构(如阿里云、腾讯云、DigiCert 等)购买证书,并下载证书文件(通常包含 .crt 或 .pem 格式的证书文件和私钥文件 .key)。
使用 Let’s Encrypt 免费证书:通过 Certbot 工具获取。先安装 Certbot 和 Nginx 插件:
sudo yum install epel-release
sudo yum install certbot python2-certbot-nginx
二、配置 SSL 证书(以购买证书为例)
创建证书存放目录:
sudo mkdir -p /etc/nginx/ssl
上传证书文件:
将证书文件(如 your_domain.crt)和私钥文件(如 your_domain.key)上传至 /etc/nginx/ssl 目录,确保文件权限正确:
sudo chmod 600 /etc/nginx/ssl/*.key
配置 Nginx 服务器块:
打开 Nginx 配置文件,通常位于 /etc/nginx/conf.d/your_domain.conf 或 /etc/nginx/nginx.conf(根据实际情况修改):
sudo vi /etc/nginx/conf.d/your_domain.conf
添加或修改以下内容:
nginx
server {
listen 443 ssl;
server_name your_domain.com; # 替换为实际域名
ssl_certificate /etc/nginx/ssl/your_domain.crt;
ssl_certificate_key /etc/nginx/ssl/your_domain.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /var/www/html; # 网站根目录,根据实际情况修改
index index.html index.htm;
}
}
listen 443 ssl:监听 443 端口并启用 SSL。
ssl_certificate 和 ssl_certificate_key:指定证书和私钥路径。
ssl_protocols:设置支持的 TLS 协议版本。
ssl_ciphers:配置加密套件。
添加 HTTP 到 HTTPS 重定向(可选):
为确保所有 HTTP 请求自动重定向到 HTTPS,可添加以下配置:
nginx
server {
listen 80;
server_name your_domain.com;
return 301 https://$server_name$request_uri;
}
三、使用 Let’s Encrypt 获取免费证书并配置
获取证书:
执行以下命令获取证书并自动配置 Nginx:
sudo certbot --nginx -d your_domain.com
按照提示输入邮箱地址并同意条款,Certbot 会自动更新 Nginx 配置并部署证书。
验证证书自动更新:
Let’s Encrypt 证书有效期为 90 天,系统会自动设置 cron 任务进行 renewal。可手动测试更新:
sudo certbot renew --dry-run
四、测试与验证
检查 Nginx 配置语法:
sudo nginx -t
若输出 syntax is ok 和 test is successful,表示配置正确。
重启 Nginx 服务:
sudo systemctl restart nginx
验证 HTTPS 连接:
使用浏览器访问 https://your_domain.com,检查是否显示安全锁图标,且地址栏显示 https。也可使用工具如 openssl s_client 进行命令行验证:
openssl s_client -connect your_domain.com:443 -servername your_domain.com
五、常见问题及解决方法
证书链不完整:
若浏览器提示证书不受信任,可能是证书链不完整。需将中级证书(.ca-bundle 或 .chain 文件)与主证书合并。
权限问题:
确保证书和私钥文件权限为 600,且 Nginx 用户(通常为 nginx)有权限访问。
端口冲突:
若 Nginx 无法启动,检查 80 或 443 端口是否被其他进程占用,可使用 sudo lsof -i :443 查看。
通过以上步骤,即可在 CentOS 7 系统中成功配置 Nginx 的 HTTPS,实现网站的安全访问。