如何申请免费IP SSL证书:公网IP也能上HTTPS
最近遇到了一个特殊需求:客户的服务器没有域名,只有公网IP,想做HTTPS访问。很多人以为SSL证书只能给域名用,其实IP也能申请SSL证书。这篇就把免费IP SSL证书的申请方法详细写一下。
什么是IP SSL证书
IP SSL证书就是证书的域名字段是IP地址,比如 123.45.67.89。部署后访问 https://123.45.67.89 浏览器也会显示绿色小锁,不会报警告。
适用场景:
- •服务器没有域名,只有公网IP
- •内网管理系统用IP访问
- •测试环境用IP直接访问
- •不想为IP单独购买域名
哪些CA支持IP证书
不是所有CA都支持IP证书:
- •ZeroSSL:✅ 支持免费IP证书(推荐)
- •Let’s Encrypt:❌ 暂不支持免费IP证书
- •DigiCert等付费CA:✅ 支持但价格昂贵
推荐用ZeroSSL,免费且支持IP证书,sslmianfei.com 默认使用ZeroSSL。
申请前准备
申请IP SSL证书需要:
- •公网IP:必须是公网IP,内网IP(如192.168.x.x)不支持
- •IP所有权验证:能通过DNS或文件验证IP所有权
- •Web服务:服务器能通过HTTP访问,或能配置IP的反向DNS
第一步:访问申请平台
打开 sslmianfei.com,首页输入框直接输入IP地址。
第二步:输入IP地址
在输入框输入你的公网IP,比如 123.45.67.89。
注意:
- •不要带
https://前缀 - •不要带端口,比如
123.45.67.89:8080是错的 - •IPv4和IPv6都支持
- •系统会自动识别为IP证书类型
第三步:选择验证方式
IP证书同样需要验证IP所有权,有两种方式:
DNS验证(推荐):
- •在IP的反向DNS记录中添加验证信息
- •需要联系ISP或IP地址管理机构配置反向DNS
- •操作较复杂但稳定
文件验证(推荐):
- •在服务器上放一个验证文件
- •通过
http://123.45.67.89/.well-known/xxx访问 - •操作简单,适合大部分场景
IP证书推荐文件验证,因为DNS反向解析普通用户无法操作。
第四步:文件验证操作
选择文件验证后,系统会给你一个验证文件和路径,类似:
访问URL:http://123.45.67.89/.well-known/pki-validation/fileauth.txt
文件内容:随机验证字符串
操作步骤:
1. 创建验证文件目录
mkdir -p /var/www/html/.well-known/pki-validation/
2. 创建验证文件
echo "随机验证字符串" > /var/www/html/.well-known/pki-validation/fileauth.txt
3. 确认文件可访问
浏览器访问 http://123.45.67.89/.well-known/pki-validation/fileauth.txt,能看到验证字符串说明成功。
第五步:验证
回到 sslmianfei.com 申请页面,点击”验证解析”按钮。
- •提示”验证未通过”:检查文件是否能访问、内容是否正确
- •提示”验证成功”:证书自动签发
第六步:下载证书
下载下来的证书包含:
- •certificate.crt:IP证书文件
- •private.key:私钥
- •ca_bundle.crt:CA中间证书
第七步:部署IP证书
Nginx部署:
server {
listen 443 ssl;
server_name 123.45.67.89;
ssl_certificate /etc/nginx/ssl/fullchain.crt;
ssl_certificate_key /etc/nginx/ssl/private.key;
location / {
root /var/www/html;
index index.html;
}
}
Apache部署:
<VirtualHost *:443>
ServerName 123.45.67.89
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/fullchain.crt
SSLCertificateKeyFile /etc/apache2/ssl/private.key
</VirtualHost>
宝塔面板部署:
- 网站 → 添加站点 → 域名填IP地址
- 站点设置 → SSL → 其他证书
- 粘贴证书和私钥 → 保存
- 开启强制HTTPS
第八步:验证部署
浏览器访问 https://123.45.67.89:
- •地址栏出现绿色小锁
- •点击查看证书,使用者字段显示IP地址
- •用 SSL测试工具 检测配置
IP证书和域名证书的冲突问题
一台服务器同时有域名和IP访问时,Nginx配置会有冲突,常见问题:
问题1:访问IP时显示域名证书
Nginx默认会用第一个server块的证书响应所有请求。解决方法:
# 单独为IP配置server块
server {
listen 443 ssl;
server_name 123.45.67.89;
ssl_certificate /path/to/ip-cert.crt;
ssl_certificate_key /path/to/ip-key.key;
# ...
}
# 域名证书配置
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/domain-cert.crt;
ssl_certificate_key /path/to/domain-key.key;
# ...
}
问题2:浏览器报证书不匹配
访问IP但服务器返回域名证书,浏览器报警告。确保IP和域名各有独立的server配置,并配置正确的 server_name。
问题3:默认server问题
Nginx会把第一个配置的SSL server作为默认server,所有未知请求都走这个。建议把IP证书配置放在域名证书之后。
IP证书的限制
1. 只支持公网IP
内网IP(192.168.x.x、10.x.x.x、172.16-31.x.x)无法申请证书,CA无法验证内网IP所有权。
2. 必须能HTTP访问
文件验证需要服务器80端口能访问,否则只能用反向DNS验证(普通用户无法操作)。
3. 浏览器兼容性
部分老浏览器对IP证书支持不好,建议用现代浏览器访问。Chrome、Firefox、Edge都正常支持。
4. 不支持通配符
IP证书不支持通配符,每个IP单独申请。
IP证书续期
和域名证书一样90天有效期,续期流程:
- 重新申请证书
- 创建新的验证文件
- 验证通过后下载新证书
- 部署替换旧证书
建议设置提醒,提前30天续费。
IP证书 vs 域名证书
| 对比项 | IP证书 | 域名证书 |
|---|---|---|
| 申请难度 | 较难(文件验证) | 简单(DNS验证) |
| 浏览器支持 | 现代浏览器支持 | 全面支持 |
| 价格(免费版) | ZeroSSL免费 | 多品牌免费 |
| 续期 | 重新文件验证 | DNS验证更简单 |
| 适用场景 | 无域名的服务器 | 普通网站 |
建议:能用域名就用域名证书,IP证书是没域名时的替代方案。
常见问题
Q:内网IP能申请证书吗?
A:不能。CA只能验证公网IP所有权,内网IP无法申请。
Q:一个IP证书可以用于多个IP吗?
A:不能。每个IP单独申请证书。
Q:IP证书过期了还能访问吗?
A:能访问但浏览器会报警告,用户看到警告可能流失。
Q:IP证书支持IPv6吗?
A:支持。ZeroSSL支持IPv4和IPv6证书。
最后
IP SSL证书申请的核心就是文件验证:服务器放验证文件 → CA访问验证 → 签发证书。比域名证书稍复杂,但对于没有域名的服务器来说是唯一的HTTPS方案。
如果你在为服务器IP申请证书遇到问题,可以先用 SSL测试工具 检测当前状态。希望这篇教程对你有帮助。