IP地址申请免费SSL证书无法签发的常见原因
IP地址申请免费SSL证书无法签发的常见原因
正常域名申请免费SSL证书流程很顺畅,但换成IP地址就会遇到各种问题。很多用户在sslmianfei.com在线申请IP证书时反馈”无法签发”,排查下来90%都是相同的原因。其中最关键又最容易被忽略的原因是IP不支持海外访问——因为ZeroSSL、Let’s Encrypt等免费CA的验证服务器都在海外。这篇把IP申请SSL证书失败的11个常见原因和解决方案一次性讲清楚。
先确认:免费SSL证书到底支不支持IP?
结论:支持,但有条件。
主流免费CA对IP证书的支持情况:
- •ZeroSSL:支持IPv4和IPv6证书,免费申请
- •Let’s Encrypt:支持IPv4和IPv6证书,免费申请
- •Google Trust Services:支持IP证书,免费申请
- •Buypass:不支持IP证书
关键限制:IP地址必须是公网IP,不能是内网IP。CA机构在签发前会验证IP的归属和可达性,内网IP(如192.168.x.x、10.x.x.x、172.16.x.x)无法通过验证。
常见原因一:IP不支持海外访问(最关键)
这是IP申请SSL证书失败最关键也最容易被忽略的原因。ZeroSSL、Let’s Encrypt等主流免费CA的验证服务器都在海外,申请IP证书时CA需要通过HTTP访问你服务器上的验证文件。如果你的IP不支持海外访问,CA根本访问不到验证文件,证书自然无法签发。
国内服务器常见情况:
- •部分云服务器的国外访问被限制(尤其是某些机房线路)
- •服务器防火墙只放行了国内IP段,海外IP被拦截
- •使用了WAF或CDN但只覆盖国内节点
- •服务器所在机房的国际出口带宽不足或被屏蔽
- •部分高防服务器默认屏蔽海外流量
检测方法:
用国内服务器测试是测不出问题的,必须用海外节点测试。
# 方法一:用国外的在线检测工具
# 访问 https://check-host.net/ 输入 http://你的IP/ 选择海外节点检测
# 方法二:用国外的ping工具
# 访问 https://ping.pe/你的IP 查看海外节点的ping和端口可达性
# 方法三:通过海外代理或VPN访问
curl http://你的IP/.well-known/pki-validation/test.txt
解决方法:
- •检查服务器防火墙,确保放行海外IP的80端口入站流量
- •检查云服务商的安全组,是否限制了海外IP访问
- •如果是高防服务器,联系服务商放行海外访问
- •临时关闭防火墙测试是否是防火墙问题
- •如果服务器本身就不支持海外访问,只能换用支持海外访问的服务器
关键点:CA的验证服务器IP是海外IP,国内访问正常不等于CA也能访问。必须确认海外访问通畅。
常见原因二:使用了内网IP
这是最常见的失败原因。
CA机构只给公网IP签发证书,内网IP无法申请。常见的内网IP段:
- •10.0.0.0 – 10.255.255.255
- •172.16.0.0 – 172.31.255.255
- •192.168.0.0 – 192.168.255.255
- •127.0.0.0 – 127.255.255.255(回环地址)
- •169.254.0.0 – 169.254.255.255(链路本地)
解决方法:
- •确认你的IP是公网IP(可以通过访问 ip.sb 或 ifconfig.me 查询)
- •如果只有内网IP,需要通过NAT或反向代理映射到公网IP
- •云服务器(阿里云、腾讯云、华为云)默认分配的就是公网IP,可以直接申请
常见原因三:HTTP验证端口未开放
IP证书只能通过HTTP或HTTPS文件验证,不能用DNS验证。这是因为IP地址没有DNS解析记录,无法添加CNAME验证。
验证流程:
CA会访问 http://你的IP/.well-known/pki-validation/file.txt 检查验证文件。如果这个URL访问不通,验证就会失败。
常见端口问题:
- •80端口被防火墙拦截
- •80端口被其他服务占用
- •服务商屏蔽了80端口(部分家用宽带运营商会屏蔽80)
- •HTTPS验证时443端口不通
解决方法:
# 检查80端口是否开放
curl http://你的IP/
# 检查443端口是否开放
curl https://你的IP/ -k
# 检查80端口是否被占用(Linux)
netstat -tlnp | grep :80
# 临时开放80端口(firewalld)
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
# 临时开放80端口(ufw)
ufw allow 80/tcp
云服务器用户:还要在云控制台的安全组中放行80端口。
常见原因四:80端口被运营商屏蔽
这是家庭宽带用户最常遇到的问题。国内部分运营商默认屏蔽家庭宽带的80和443端口,导致HTTP验证文件无法被CA访问。
检测方法:
# 在本地启动HTTP服务
python -m http.server 80
# 用手机流量或外部网络访问
curl http://你的公网IP/
如果外部网络访问不通,但本地访问正常,说明运营商屏蔽了80端口。
解决方法:
- •联系运营商申请开放80端口(部分运营商支持,需提供用途说明)
- •改用HTTPS验证方式(443端口也有可能被屏蔽)
- •使用云服务器(云服务器的80/443端口默认不屏蔽)
- •使用CDN或反向代理(但要注意CDN本身需要域名)
常见原因五:验证文件配置错误
HTTP验证文件的路径和内容必须完全正确。CA会精确访问 http://IP/.well-known/pki-validation/文件名,路径多一层、少一层都会失败。
正确的验证文件配置(Nginx示例):
server {
listen 80;
server_name 你的IP;
location /.well-known/pki-validation/ {
root /var/www/html;
# 确保文件路径是 /var/www/html/.well-known/pki-validation/文件名
}
}
常见配置错误:
- •文件路径多了或少了层目录
- •文件权限不对(nginx用户无法读取)
- •location块配置错误导致请求被rewrite
- •网站根目录配置错误
解决方法:
# 手动测试验证文件是否能访问
curl http://你的IP/.well-known/pki-validation/文件名
# 检查文件权限
ls -la /var/www/html/.well-known/pki-validation/
# 修正权限
chmod 644 /var/www/html/.well-known/pki-validation/*
chown -R www-data:www-data /var/www/html/.well-known/
常见原因六:IP归属和反向DNS问题
部分CA机构会校验IP归属。如果你使用的IP是从国外服务商租用的,但申请证书时填写的联系信息是国内信息,可能会触发人工审核或拒绝签发。
反向DNS(PTR记录)问题:
部分CA会检查IP的反向DNS解析是否与申请信息匹配。如果IP的反向解析指向某个域名,而你又声称这个IP不属于该域名,可能会被拒绝。
解决方法:
- •在IP归属的服务商处申请证书(如阿里云的IP就在阿里云申请)
- •修改IP的反向DNS记录(需要联系IP归属的服务商)
- •使用和IP归属信息一致的申请信息
常见原因七:CSR生成错误
IP证书的CSR生成有特殊要求,和域名证书不同。
常见CSR错误:
- •CN字段填写了域名而不是IP
- •SAN字段没有包含IP
- •SAN字段使用了错误的类型(应该用IP类型,不是DNS类型)
- •CSR的密钥长度不足(至少2048位)
正确CSR生成示例(用OpenSSL命令行):
# 生成私钥
openssl genrsa -out ip.key 2048
# 创建CSR配置文件
cat > ip.cnf << EOF
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = req_ext
[dn]
CN = 8.8.8.8
[req_ext]
subjectAltName = @alt_names
[alt_names]
IP.1 = 8.8.8.8
EOF
# 生成CSR
openssl req -new -key ip.key -out ip.csr -config ip.cnf
更简单的方法:直接用 CSR在线生成工具 ,在SAN字段输入IP地址,工具会自动识别为IP类型。
常见原因八:申请频率过高被限制
部分CA对同一IP的证书申请有频率限制:
- •Let’s Encrypt:同一IP每周最多5张证书
- •ZeroSSL:同一IP每小时最多5次申请
- •重复申请失败的IP可能被临时拉黑
解决方法:
- •申请失败后不要立即重试,等待1小时后再试
- •检查申请失败的根本原因(端口、文件、IP归属等)
- •一次性把所有问题解决后再申请
- •如果被频率限制,等待24小时后重试
常见原因九:HTTPS验证的证书问题
选择HTTPS文件验证时,CA会通过HTTPS访问验证文件。如果服务器当前没有有效的SSL证书,HTTPS验证会失败(因为CA不信任自签名证书)。
解决方法:
- •优先选择HTTP验证(80端口)
- •如果必须用HTTPS验证,先临时部署一个自签名证书(可用 在线测试证书生成工具 生成)
- •部署自签名证书后,CA的验证脚本需要忽略证书错误才能访问
常见原因十:服务器时间不同步
这个原因很容易被忽略。如果服务器时间和标准时间偏差超过5分钟,TLS握手会失败,CA无法访问验证文件。
检查方法:
# 查看当前系统时间
date
# 同步时间(CentOS/Ubuntu)
ntpdate ntp.aliyun.com
# 或
timedatectl set-ntp true
常见原因十一:CA机构的IP黑名单
部分IP段会被CA机构列入黑名单,无法申请证书:
- •已知的恶意IP段
- •被频繁滥用的云服务器IP段
- •Tor出口节点
- •VPN/代理服务器IP
解决方法:
- •更换服务器IP
- •联系CA机构申请解封
- •使用域名+DNS验证代替IP证书
IP证书申请成功的关键检查清单
在申请IP证书前,按以下清单逐项检查:
1. IP是否是公网IP
curl -4 ifconfig.me
2. 80端口是否开放
# 本机执行
curl http://localhost/
# 外部网络执行
curl http://你的公网IP/
3. 验证文件路径是否正确
mkdir -p /var/www/html/.well-known/pki-validation/
echo "test" > /var/www/html/.well-known/pki-validation/test.txt
curl http://你的IP/.well-known/pki-validation/test.txt
4. CSR是否正确
openssl req -text -noout -verify -in ip.csr
5. 服务器时间是否同步
date
6. 防火墙是否放行80端口
# firewalld
firewall-cmd --list-ports
# ufw
ufw status
# iptables
iptables -L -n
7. 云服务器安全组是否放行80端口
登录云控制台,检查安全组规则是否允许80端口入站。
IP证书申请的完整流程
在sslmianfei.com申请IP证书的完整流程:
第一步:生成CSR
用 CSR在线生成工具 生成CSR和私钥。CN填写IP地址,SAN字段也填写IP地址。
第二步:提交申请
在 sslmianfei.com 首页输入IP地址,系统会自动识别为IP证书,并强制使用HTTP验证。
第三步:配置验证文件
页面会给出验证文件路径和内容,按提示上传到服务器的对应位置。
第四步:验证解析
确认外部网络可以访问验证文件后,点击”验证解析”按钮。系统会先检查文件是否可访问,通过后自动触发CA签发证书。
第五步:下载部署
证书签发后,下载证书文件,部署到Nginx或Apache。部署完成后用 SSL证书配置检测工具 验证配置是否正确。
总结
IP申请免费SSL证书失败,90%的原因集中在以下几点:
- •IP不支持海外访问(最关键):CA验证服务器在海外,必须确认海外可访问
- •使用了内网IP(必须公网IP)
- •80端口未开放或被运营商屏蔽
- •验证文件路径或权限错误
- •CSR的SAN字段配置错误
核心建议:
- •第一件事就是确认海外访问通畅,用 check-host.net 或 ping.pe 测试海外节点是否能访问你的80端口
- •申请前先用
curl http://你的IP/确认外部可访问 - •CSR的SAN字段必须包含IP,且类型是IP不是DNS
- •验证文件路径必须是
.well-known/pki-validation/文件名 - •申请失败后等1小时再重试,避免触发频率限制
如果反复申请都失败,建议先用 SSL证书配置检测工具 排查服务器配置问题,或者直接换用域名+DNS验证方式申请证书,成功率会高很多。