免费SSL证书配置方法
免费SSL证书配置主要分为三个步骤:申请证书、完成域名验证、将证书安装到服务器并启用HTTPS。目前最常见的免费SSL证书方案是 Let's Encrypt,证书有效期为90天,可以通过ACME客户端自动续期。
如果只是给普通网站配置免费SSL证书,HTTP-01验证比较简单;如果需要申请通配符证书,或者服务器无法直接接受外部HTTP验证,则应使用DNS-01验证。
免费SSL证书配置需要准备什么?
开始配置之前,需要准备:
- 一个已经注册并可以正常解析的域名;
- 能够修改域名DNS解析记录的权限;
- 网站服务器或主机管理权限;
- 根据服务器环境选择对应的证书安装方式。
如果使用 Let's Encrypt,常见的申请工具包括 Certbot、acme.sh 等ACME客户端。
需要注意的是,申请SSL证书和配置SSL证书是两个步骤。
申请阶段主要解决“CA如何确认你控制这个域名”;配置阶段则是把签发好的证书安装到Nginx、Apache、IIS等服务器上。
免费SSL证书有哪些验证方式?
申请免费SSL证书时,需要先完成域名控制权验证。常见方式主要有HTTP-01和DNS-01。
| 验证方式 | 验证方法 | 支持通配符 | 适合场景 |
|---|---|---|---|
| HTTP-01 | 网站放置指定验证文件 | ❌ | 普通网站、单域名 |
| DNS-01 | DNS添加TXT记录 | ✅ | 通配符、多服务器、无法开放80端口的环境 |
HTTP-01文件验证
HTTP-01验证需要在网站指定目录放置一个验证文件,CA通过HTTP请求访问该文件,确认申请人能够控制该域名。
这种方式配置比较直观,适合普通网站。
例如申请:
example.com
www.example.com
ACME客户端会要求网站能够正常响应验证地址。
需要注意,HTTP-01验证依赖80端口,如果服务器完全无法通过80端口访问,则不能使用这种方式。
DNS-01验证
DNS-01验证是在域名DNS中添加指定的TXT记录。
例如:
主机记录:_acme-challenge
记录类型:TXT
记录值:CA生成的验证字符串
验证完成后,CA通过查询DNS记录确认域名控制权。
DNS-01最大的优势是支持通配符证书,例如:
*.example.com
因此,如果需要申请泛域名/通配符SSL证书,DNS-01是常用的选择。
注意:申请
*.example.com并不意味着必须创建*.example.com的DNS解析记录。通配符解析记录与DNS-01证书验证是两件不同的事情。
使用Certbot申请免费SSL证书
以Linux服务器使用Certbot为例。
第一步:安装Certbot
Ubuntu/Debian系统可以使用:
sudo apt update
sudo apt install certbot -y
安装完成后检查:
certbot --version
能够正常显示版本号即可。
第二步:使用HTTP-01申请普通域名证书
如果网站已经运行,并且80端口可以从公网访问,可以使用HTTP验证。
例如:
sudo certbot certonly --webroot \
-w /var/www/html \
-d example.com \
-d www.example.com
其中:
-w /var/www/html
表示网站根目录。
-d example.com
-d www.example.com
表示需要申请证书的域名。
验证成功后,证书一般会保存在:
/etc/letsencrypt/live/example.com/
其中比较重要的文件包括:
fullchain.pem
privkey.pem
fullchain.pem 是服务器证书及中间证书链,privkey.pem 是对应的私钥。
使用DNS-01申请通配符SSL证书
如果需要申请:
*.example.com
可以使用DNS-01验证。
例如:
sudo certbot certonly \
--manual \
--preferred-challenges dns \
-d "*.example.com"
Certbot会提示需要添加类似下面的TXT记录:
主机记录:
_acme-challenge
记录类型:
TXT
记录值:
xxxxxxxxxxxxxxxx
将记录添加到DNS后,等待DNS记录能够被公网查询,再返回Certbot继续验证。
验证成功后即可获得通配符证书。
手动DNS验证有一个问题
这种方式虽然简单,但不适合完全自动化的长期续期。
因为证书90天后需要续期,而手动DNS验证可能再次要求人工添加TXT记录。
如果希望长期无人值守运行,建议使用支持DNS API的ACME客户端,例如通过阿里云DNS、腾讯云DNS、Cloudflare等DNS服务商API自动创建和删除验证记录。
免费SSL证书怎么安装到Nginx?
证书申请完成后,在Nginx中配置:
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
root /var/www/html;
}
检查配置:
sudo nginx -t
如果显示配置正确,再重新加载:
sudo systemctl reload nginx
然后通过:
https://example.com
访问网站。
免费SSL证书怎么安装到Apache?
Apache配置方式与Nginx有所不同,核心是指定服务器证书和私钥:
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
DocumentRoot /var/www/html
</VirtualHost>
修改配置后检查Apache配置并重新加载服务。
免费SSL证书怎么安装到IIS?
Windows服务器使用IIS时,通常不能直接按照Nginx的PEM文件方式配置。
如果使用ACME客户端申请证书,可以让客户端将证书安装到Windows证书存储,然后在IIS中进行HTTPS绑定。
基本流程是:
申请证书 → 导入证书 → IIS网站 → 绑定 → 添加HTTPS → 选择对应证书 → 保存
如果手中只有:
.crt
.key
等文件,则可能需要先转换为:
.pfx
再导入Windows证书存储。
免费SSL证书如何自动续期?
Let's Encrypt证书有效期为90天,因此不建议等到证书过期后再手动处理。
使用Certbot时,可以先测试续期:
sudo certbot renew --dry-run
如果测试成功,可以让系统定期执行:
sudo certbot renew
Certbot会自动判断哪些证书已经接近续期时间,不需要每次运行都重新申请证书。
如果服务器上的Certbot已经通过系统服务或定时器配置了自动续期,通常不需要再额外设置cron。
续期完成后,如果Web服务器没有自动重新加载证书,还需要配置部署钩子,让Nginx或Apache重新加载证书。
例如:
sudo certbot renew --deploy-hook "systemctl reload nginx"
这样证书更新后,Nginx会自动加载新的证书。
配置完成后怎么检查免费SSL证书?
证书安装完成后,建议至少检查以下几个项目:
1. 检查HTTPS是否正常
访问:
https://example.com
确认网站可以正常打开。
2. 检查证书域名
确认当前访问的域名包含在证书的SAN字段中。
例如证书包含:
example.com
www.example.com
那么两个域名都可以正常使用。
3. 检查证书链
服务器需要正确发送服务器证书和必要的中间证书。
如果证书链配置不完整,部分客户端可能出现:
证书不受信任
或:
NET::ERR_CERT_AUTHORITY_INVALID
等错误。
4. 检查自动续期
执行:
sudo certbot renew --dry-run
确认续期流程没有错误。
免费SSL证书配置常见问题
免费SSL证书一定要使用Let's Encrypt吗?
不一定。
Let's Encrypt是目前使用非常广泛的免费公开信任CA之一,但免费SSL证书并不只有Let's Encrypt。不同平台和CA提供的免费证书在有效期、验证方式、域名数量和自动续期方式等方面可能存在差异。
免费SSL证书可以申请通配符吗?
可以。
以Let's Encrypt为例,通配符证书需要使用DNS-01验证。
例如:
*.example.com
可以保护:
www.example.com
mail.example.com
api.example.com
但不能覆盖:
a.b.example.com
因为通配符只匹配一个子域层级。
免费SSL证书需要每90天重新申请吗?
不需要手动重新申请。
证书本身有效期为90天,但可以通过ACME客户端自动完成续期。配置好自动续期后,客户端会在适当时间重新向CA申请新证书。
免费SSL证书配置后仍然显示“不安全”怎么办?
首先检查:
- 证书是否已经安装到正确的网站;
- 访问域名是否包含在证书SAN中;
- 中间证书是否完整;
- 网站页面是否存在HTTP混合内容;
- HTTPS绑定是否正确;
- CDN、反向代理是否使用了正确的证书。
如果是Nginx、Apache或IIS环境,还需要进一步检查服务器配置。
免费SSL证书配置总结
免费SSL证书的配置并不复杂,核心就是:
申请证书 → 域名验证 → 安装证书 → 配置HTTPS → HTTP跳转HTTPS → 自动续期 → 检查证书链。
普通网站优先考虑HTTP-01文件验证即可;需要通配符证书、多台服务器共用证书,或者服务器无法开放80端口时,可以选择DNS-01验证。
对于生产环境,真正需要注意的并不是“证书免费还是收费”,而是证书是否受信任、续期是否自动化、证书链是否完整,以及服务器配置是否正确。
常见问题 FAQ
Q:免费SSL证书有效期多久? A:Let's Encrypt目前签发的SSL/TLS证书有效期为90天,可以通过ACME客户端自动续期。
Q:免费SSL证书支持通配符吗? A:支持。以Let's Encrypt为例,申请通配符证书需要使用DNS-01验证。
Q:文件验证和DNS验证有什么区别? A:文件验证是在网站服务器上放置指定验证文件,DNS验证则是在域名DNS中添加TXT记录。前者配置直观,后者可以用于通配符证书,也更适合自动化管理。
Q:免费SSL证书配置后为什么还是提示不安全? A:重点检查证书域名、证书链、HTTPS绑定、混合内容以及CDN/反向代理配置。证书“签发成功”并不代表服务器端已经正确部署。



京公网安备11010502031690号
网站经营企业工商营业执照
















