嘿,朋友!想给你的网站上个“锁”,让数据传输更安全,浏览器地址栏再也没有“不安全”的提示吗?今天这篇文章,咱们就来聊聊如何为你的 Nginx 服务器配置一个完全免费的 Let’s Encrypt SSL 证书,让你的网站轻松实现 HTTPS 加密。
为什么需要 HTTPS?
在开始动手之前,咱们先简单唠叨两句为什么 HTTPS 这么重要。简单来说,HTTPS 通过 SSL/TLS 协议加密了你的网站和用户浏览器之间的通信数据。 这不仅能保护用户数据的安全和隐私,还能增强用户对你网站的信任度,甚至对搜索引擎排名也有积极的影响。 如今,HTTPS 已经成为了现代网站的标配。
主角登场:Let’s Encrypt 和 Certbot
要实现 HTTPS,你需要一个 SSL 证书。传统上,这玩意儿是需要花钱买的,而且价格不菲。但幸运的是,我们有 Let’s Encrypt!
Let’s Encrypt 是一个由非营利组织 ISRG (互联网安全研究小组) 提供的免费、自动化和开放的证书颁发机构(CA)。 它的出现极大地推动了 HTTPS 的普及。
而 Certbot 则是 Let’s Encrypt 官方推荐的客户端工具,它可以自动化地获取、安装和续订 SSL 证书。 有了它,配置 SSL 证书就跟在命令行里敲几个命令一样简单。
准备工作
在咱们正式开始之前,你需要确保以下几件事情已经准备就绪:
- 一台安装了 Nginx 的服务器:这篇教程是基于 Nginx 的,所以你需要先装好 Nginx。
- 一个属于你自己的域名:你需要拥有一个域名,并且可以控制它的 DNS 解析。
- 域名已解析到你的服务器 IP:你需要创建一条 DNS A 记录,将你的域名指向你服务器的公网 IP 地址。 Let’s Encrypt 在颁发证书前需要通过域名访问你的服务器来验证所有权。
实战开始:三步搞定 SSL 证书
好了,理论知识储备完毕,让我们卷起袖子开始干活吧!
第一步:安装 Certbot
首先,我们需要在服务器上安装 Certbot。安装命令会根据你的操作系统发行版有所不同。
对于 Debian/Ubuntu 系统:
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx
对于 CentOS/RHEL 系统:
sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx
安装完成后,你可以通过运行 certbot --version 来检查 Certbot 是否成功安装。
第二步:配置你的 Nginx
在申请证书之前,你需要确保 Nginx 的配置文件里已经有了你的域名的基本设置。Certbot 需要通过读取 Nginx 配置文件来找到你的域名。
你需要为你的域名创建一个 Nginx 配置文件,通常在 /etc/nginx/conf.d/ 目录下,文件名可以叫做 your_domain.com.conf。
server {
listen 80;
server_name your_domain.com www.your_domain.com; # 替换成你的域名
root /var/www/your_domain; # 你的网站文件存放目录
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
重要提示:
- 记得把
your_domain.com和www.your_domain.com换成你自己的域名。 -
root指令后面是你网站文件的实际存放路径。
保存配置文件后,最好先测试一下 Nginx 的配置是否正确,然后重新加载 Nginx。
sudo nginx -t
sudo systemctl reload nginx
第三步:获取并安装 SSL 证书
激动人心的时刻到了!现在,我们使用 Certbot 来为 Nginx 自动获取并安装证书。
运行以下命令:
sudo certbot --nginx -d your_domain.com -d www.your_domain.com
这个命令会做几件事情:
- 启动 Certbot 的 Nginx 插件。
- 告诉 Certbot 你想为
your_domain.com和www.your_domain.com这两个域名申请证书。 - Certbot 会自动与 Let’s Encrypt 的服务器通信,验证你对域名的所有权。
在运行过程中,Certbot 会有一些交互式的提示:
- 输入你的邮箱地址:用于接收证书到期提醒和重要通知。
- 同意服务条款:阅读并同意 Let’s Encrypt 的服务条款。
- 选择是否将 HTTP 流量重定向到 HTTPS:这里强烈建议你选择“Redirect”,这样所有通过 HTTP 访问你网站的请求都会被自动 перенаправлены 到更安全的 HTTPS。
一切顺利的话,你会看到一个恭喜你成功配置 HTTPS 的消息!
现在,Certbot 已经自动修改了你的 Nginx 配置文件,添加了 SSL 相关的配置项,比如证书和私钥文件的路径。 默认情况下,证书文件会存放在 /etc/letsencrypt/live/your_domain.com/ 目录下。
你可以打开你的 Nginx 配置文件看看,会发现类似下面的内容:
server {
listen 443 ssl; # 开启 SSL
server_name your_domain.com www.your_domain.com;
ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem; # 证书文件
ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem; # 私钥文件
# ... 其他 SSL 相关配置
}
自动续期:让证书永不过期
Let’s Encrypt 的证书有效期为 90 天,所以你需要定期续订。 不过别担心,Certbot 已经帮你考虑到了这一点。在安装 Certbot 的时候,它会自动设置一个定时任务(cron job 或 systemd timer)来检查并续订即将到期的证书。
你可以通过运行下面的命令来测试自动续订是否正常工作:
sudo certbot renew --dry-run
如果测试成功,你就不需要再为证书续期的事情操心了,Certbot 会在后台默默地帮你搞定一切。
案例:为一个新的博客网站配置 HTTPS
假设你刚刚搭建好了一个名为 my-awesome-blog.com 的博客网站,现在想为它加上 HTTPS。
准备工作:
- 你已经在服务器上装好了 Nginx。
- 你已经购买了
my-awesome-blog.com域名。 - 你已经将
my-awesome-blog.com和www.my-awesome-blog.com的 DNS A 记录指向了你的服务器 IP。
安装 Certbot (以 Ubuntu 为例):
sudo apt-get update sudo apt-get install certbot python3-certbot-nginx配置 Nginx:
创建/etc/nginx/conf.d/my-awesome-blog.com.conf文件,内容如下:server { listen 80; server_name my-awesome-blog.com www.my-awesome-blog.com; root /var/www/my-awesome-blog; index index.html; }然后测试并重载 Nginx:
sudo nginx -t sudo systemctl reload nginx获取证书:
sudo certbot --nginx -d my-awesome-blog.com -d www.my-awesome-blog.com在交互提示中,输入你的邮箱,同意条款,并选择将 HTTP 重定向到 HTTPS。
验证:
打开浏览器,访问https://my-awesome-blog.com,你应该能看到地址栏的小锁标志,代表你的网站已经成功启用了 HTTPS!
总结
看,为 Nginx 配置免费的 Let’s Encrypt SSL 证书是不是比你想象中要简单得多?感谢 Certbot 这个强大的工具,整个过程几乎是全自动的。现在,你的网站不仅更加安全,也能给访问者带来更好的体验。赶紧动手试试吧!