HTTPS证书申请、Nginx配置及自动续期操作指南
在当前互联网环境中,确保网站的安全性变得越来越重要。HTTPS协议通过SSL/TLS加密技术来保护数据传输过程中的安全,而这一过程离不开SSL证书的使用。本文将详细介绍如何申请免费的HTTPS证书,并将其配置到Nginx服务器上,以及如何设置证书自动续期以确保长期有效。
一、申请HTTPS证书
为了简化流程并保证成本效益,这里推荐使用Let’s Encrypt提供的免费证书。Let’s Encrypt是一个非盈利组织,旨在为全球网站提供免费的SSL/TLS证书。我们可以使用Certbot工具来自动化证书的申请和安装过程。
-
安装Certbot
- 对于Ubuntu/Debian系统,可以通过以下命令安装Certbot:
sudo apt-get update sudo apt-get install certbot python3-certbot-nginx
- 对于CentOS/RHEL系统,可以使用EPEL仓库来安装Certbot:
sudo yum install epel-release sudo yum install certbot python3-certbot-nginx
- 对于Ubuntu/Debian系统,可以通过以下命令安装Certbot:
-
获取证书
- 使用Certbot获取证书非常简单,只需要运行一个命令即可完成证书的申请和自动配置:
sudo certbot --nginx -d example.com -d www.example.com
- 这个命令会自动检测你的Nginx配置文件,并添加必要的SSL配置。如果一切顺利,你将被提示输入电子邮件地址(用于接收重要的更新通知)并同意服务条款。
- 使用Certbot获取证书非常简单,只需要运行一个命令即可完成证书的申请和自动配置:
二、配置Nginx以支持HTTPS
一旦成功获取了证书,接下来需要正确配置Nginx以启用HTTPS。假设你已经安装并运行了一个Nginx实例。
-
检查Nginx是否支持SSL模块
- 确保Nginx已编译有
--with-http_ssl_module
选项。可以通过如下命令检查:nginx -V 2>&1 | grep -- '--with-http_ssl_module'
- 如果未找到该模块,则需要重新编译Nginx或者使用包管理器安装包含SSL模块的版本。
- 确保Nginx已编译有
-
编辑Nginx配置文件
- 打开Nginx站点配置文件,通常位于
/etc/nginx/sites-available/
目录下。 - 添加或修改现有的server块,以监听443端口(HTTPS默认端口),并指定SSL证书路径:
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # SSL相关参数 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://localhost:8080; # 根据实际情况调整 } } # 重定向所有HTTP请求到HTTPS server { listen 80; server_name example.com; return 301 https://$host$request_uri; }
- 打开Nginx站点配置文件,通常位于
-
测试并应用配置
- 测试Nginx配置是否正确:
sudo nginx -t
- 如果没有错误发生,重新加载Nginx配置:
sudo systemctl reload nginx
- 测试Nginx配置是否正确:
三、设置证书自动续期
由于Let’s Encrypt颁发的证书有效期只有90天,因此需要定期进行续期。Certbot提供了自动续期功能,可以通过设置定时任务来实现:
- 创建Cron Job
- 编辑Cron表以添加新的任务:
crontab -e
- 在文件末尾加入以下行,这将在每天凌晨两点尝试自动续期证书:
0 2 * * * /usr/bin/certbot renew --quiet
- 编辑Cron表以添加新的任务: