如何申请免费IP SSL证书:公网IP也能上HTTPS

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

最近遇到了一个特殊需求:客户的服务器没有域名,只有公网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>

宝塔面板部署

  1. 网站 → 添加站点 → 域名填IP地址
  2. 站点设置 → SSL → 其他证书
  3. 粘贴证书和私钥 → 保存
  4. 开启强制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天有效期,续期流程:

  1. 重新申请证书
  2. 创建新的验证文件
  3. 验证通过后下载新证书
  4. 部署替换旧证书

建议设置提醒,提前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测试工具 检测当前状态。希望这篇教程对你有帮助。

本文到此结束