IP地址申请免费SSL证书无法签发的常见原因

a
admin
作者
2026-07-29
发布日期
约 10 分钟
阅读时间

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验证方式申请证书,成功率会高很多。

本文到此结束