在CentOS上为Nginx配置SSL证书,通常需要以下几个步骤:
获取SSL证书:
安装Certbot(如果你选择使用Let’s Encrypt): Certbot是一个自动化的工具,可以帮助你获取和续订Let’s Encrypt证书。
sudo yum install epel-release
sudo yum install certbot python2-certbot-nginx
获取并安装证书: 使用Certbot获取证书。以下命令会自动配置Nginx并启用HTTPS。
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
运行上述命令后,Certbot会提示你输入电子邮件地址、同意服务条款,并选择一个目录来存储证书文件。Certbot会自动修改Nginx配置文件以启用SSL。
手动配置Nginx(如果你不使用Certbot): 如果你选择手动配置SSL证书,你需要将证书文件和私钥文件放置在合适的位置,并在Nginx配置文件中引用它们。
假设你的证书文件是/etc/ssl/certs/yourdomain.com.crt,私钥文件是/etc/ssl/private/yourdomain.com.key,你可以按照以下步骤操作:
将证书和私钥文件复制到Nginx可以访问的目录,例如/etc/nginx/ssl/。
sudo cp /path/to/your/fullchain.pem /etc/nginx/ssl/yourdomain.com.crt
sudo cp /path/to/your/privkey.pem /etc/nginx/ssl/yourdomain.com.key
编辑Nginx配置文件(通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf),添加或修改以下内容:
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/nginx/ssl/yourdomain.com.crt;
ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers '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';
ssl_prefer_server_ciphers on;
location / {
root /var/www/html;
index index.html index.htm;
}
# 其他配置...
}
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location / {
return 301 https://$host$request_uri;
}
# 其他配置...
}
重启Nginx: 无论你是使用Certbot还是手动配置,最后都需要重启Nginx以应用更改。
sudo systemctl restart nginx
验证SSL配置: 你可以使用以下命令来验证Nginx的SSL配置是否正确:
sudo nginx -t
如果配置正确,你会看到类似以下的输出:
nginx: configuration file /etc/nginx/nginx.conf test is successful
设置自动续期(如果你使用Let’s Encrypt): Certbot会自动为你设置一个cron任务或systemd定时器来定期续期证书。你可以手动测试续期过程:
sudo certbot renew --dry-run
如果一切正常,Certbot会尝试续期证书并输出相关信息。
通过以上步骤,你应该能够在CentOS上成功为Nginx配置SSL证书。