SSL 证书申请以及配置流程
手动申请免费 SSL 证书的简明指南
如果你希望手动为你的网站申请免费的 SSL 证书,Let's Encrypt 提供了一个很棒的免费服务。而 Certbot 则是官方推荐的工具,可以帮助你完成证书的申请和配置。以下是如何一步步完成的详细说明。
第一步:安装 Certbot
首先,我们需要在服务器上安装 Certbot。根据你服务器的系统类型,安装方法可能会有些不同:
-
Ubuntu :
bashsudo apt-get update sudo apt-get install certbot
-
CentOS :
bashsudo yum install certbot
Certbot 安装好后,我们就可以开始申请 SSL 证书啦。
第二步:手动申请证书
想要手动申请证书,我们使用 Certbot 的 certonly
参数,这样你可以完全掌控整个过程,不会对你的 Web 服务器配置造成自动修改。下面是具体命令:
bash
sudo certbot certonly --manual -d yourdomain.com -d www.yourdomain.com
这段命令的意思是:我们手动申请 yourdomain.com
以及 www.yourdomain.com
的证书。接下来,Certbot 会给你提供几种验证方法,以确认你对该域名的控制权。
- DNS 验证 :Certbot 会让你在域名的 DNS 设置中添加一条
TXT
记录。这些记录可能需要一些时间才能生效,但只要验证成功,证书就会顺利生成。 - HTTP 验证 :如果你更喜欢使用 HTTP 验证,Certbot 会让你在域名根目录下创建一个
.well-known/acme-challenge
文件夹,并放入特定的文件。具体步骤如下:-
Certbot 会提供一个文件名和文件内容。
-
在你的域名根目录下创建一个目录:
bashmkdir -p .well-known/acme-challenge
-
在该目录下创建指定的文件,并将 Certbot 提供的内容写入文件中:
bashecho '文件内容' > .well-known/acme-challenge/文件名
-
确保可以通过浏览器访问该文件,例如:
http://yourdomain.com/.well-known/acme-challenge/文件名
-
请确保在 Nginx 配置文件中添加以下内容来允许访问 .well-known 目录:
conflocation ^~ /.well-known/acme-challenge/ { allow all; default_type "text/plain"; root /path/to/your/web/root; }
-
第三步:证书文件在哪里?
一旦验证完成,Certbot 会在 /etc/letsencrypt/live/yourdomain.com/
目录下生成证书文件,这些文件包括:
fullchain.pem
:这是你的完整证书链文件。privkey.pem
:这是你的私钥文件。
请务必记住这些路径,稍后你将用到它们来配置你的 Web 服务器。
第四步:配置 Web 服务器
拿到证书后,我们还需要让你的 Web 服务器知道这些证书的存在。
配置 Nginx
如果你使用的是 Nginx,可以这样配置你的站点文件(例如 /etc/nginx/sites-available/yourdomain.conf
):
nginx
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
# 其他站点配置...
}
修改完成后,重启 Nginx 以应用新的配置:
bash
sudo systemctl restart nginx
配置 Apache
如果你用的是 Apache,请编辑对应站点的配置文件(例如 /etc/apache2/sites-available/yourdomain.conf
):
apache
<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
# 其他站点配置...
</VirtualHost>
完成编辑后,别忘了重启 Apache:
bash
sudo systemctl restart apache2
第五步:续期证书
Let's Encrypt 的证书有效期为 90 天,所以我们需要定期续期。幸好,Certbot 提供了非常方便的续期工具,只需运行以下命令即可:
bash
sudo certbot renew
在进行正式续期之前,你可以先测试一下:
bash
sudo certbot renew --dry-run
这个命令会模拟续期过程,以确保没有任何问题。