如何申请公网IP证书?详细流程与替代方案
核心结论:公共CA机构(如Let's Encrypt)不支持纯IP证书,但可通过以下方案实现HTTPS加密:
一、公网IP证书的可行性方案
方案 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
自签名证书 | 内网测试、IoT设备调试 | 免费、快速生成 | 浏览器警告、需手动信任 |
商业CA签发IP证书 | 公网IP服务需对外商用 | 浏览器自动信任 | 价格高(约$200+/年) |
域名绑定+免费证书 | 可绑定域名的公网IP服务 | 免费、自动续期 | 需申请域名 |
二、商业CA申请公网IP证书(DigiCert/Sectigo为例)
1. 生成CSR(证书签名请求)
bash
复制
openssl genrsa -out ip.key 2048
openssl req -new -key ip.key -out ip.csr -subj "/CN=203.0.113.45" -addext "subjectAltName=IP:203.0.113.45"
关键点:
CN
字段必须为公网IP地址。subjectAltName
扩展需明确IP(支持IPv4/IPv6)。
2. 提交CSR至CA并验证所有权
- 文件验证:在IP对应服务器的80端口或指定路径存放验证文件。
bash
复制
mkdir -p /var/www/html/.well-known/pki-validation/ echo "CA提供的验证码" > /var/www/html/.well-known/pki-validation/file.txt
- 邮箱验证:验证IP的WHOIS注册邮箱(需企业资质)。
3. 签发并安装证书
- 下载CA提供的证书文件(
.crt
或.pem
)。 - 配置Web服务器(以Nginx为例):
nginx
复制
server { listen 443 ssl; server_name 203.0.113.45; # 直接使用IP地址 ssl_certificate /path/ip.crt; ssl_certificate_key /path/ip.key; ssl_protocols TLSv1.2 TLSv1.3; }
证书申请通道:JoySSL_JoySSL SSL证书_JoySSL https证书-JoySSL
三、零成本替代方案:域名绑定+免费证书
1. 动态域名解析(DDNS)
- 工具推荐:
- 花生壳:免费DDNS服务,将域名绑定到动态公网IP。
- Cloudflare:通过API更新DNS记录。
- 操作步骤:
- 注册域名(如
example.com
)。 - 使用DDNS工具将域名解析到公网IP(如
ip.example.com
)。 - 通过Let's Encrypt申请免费证书:
bash
复制
certbot certonly --manual --preferred-challenges dns -d ip.example.com
- 注册域名(如
2. 直接使用Nginx的SNI扩展
- 配置多域名证书:
nginx
复制
server { listen 443 ssl; server_name 203.0.113.45; # 实际访问的IP ssl_certificate /path/domain.crt; # 绑定域名的证书 ssl_certificate_key /path/domain.key; }
原理:客户端通过SNI声明访问的域名,服务器返回对应证书,浏览器仅校验域名匹配性,忽略IP是否匹配。
四、自签名证书快速部署
bash
复制
# 一键生成IP自签名证书(有效期365天)
openssl req -x509 -newkey rsa:4096 -nodes -keyout ip.key -out ip.crt -days 365 -subj "/CN=203.0.113.45" -addext "subjectAltName=IP:203.0.113.45"
# 启动HTTPS服务(Python示例)
python3 -m http.server 443 --bind 0.0.0.0 --ssl --cert ip.crt --key ip.key
信任证书:将ip.crt
导入操作系统或浏览器的信任根证书。
五、总结与建议
- 优先使用域名+免费证书:成本低、兼容性好,Let's Encrypt支持自动化。
- 必须用IP证书时选择商业CA:DigiCert/Sectigo支持OV验证,适合企业级场景。
- 自签名仅限内部测试:快速加密但需手动信任,不可用于生产环境。
行动指南:
- 测试环境:
自签名证书 + 脚本自动化部署
。 - 生产环境:
域名绑定 + Let's Encrypt
或商业IP证书
。
通过合理选择方案,即使没有域名,也能为公网IP服务实现安全的HTTPS加密!