SSL证书在签发时会把证书主体与一个或多个标识符绑定,浏览器建立HTTPS连接后会用这个标识符比对地址栏中的访问目标。对绝大多数站点来说,这个标识符是域名,例如www.ipipp.com;只有极少数场景才会使用公网IP地址。很多新手在申请页面看到通用名称一栏时不知道该填什么,填错了证书要么无法通过浏览器校验,要么在域名验证阶段就被证书机构拒绝。本文把域名证书和IP证书的差异、申请操作、验证方式以及常见疑问一次性讲清楚。

一、SSL证书为什么主要绑定域名
证书机构签发证书前必须验证申请人对标识符的控制权。域名的控制权验证已经形成一套成熟机制,例如通过向该域名的特定路径放置文件、向管理员邮箱发送确认邮件,或者在DNS解析中添加指定TXT记录。只要验证通过,证书就可以覆盖该域名以及由DNS系统扩展出来的各级子域,配合通配符证书还能一次覆盖多个前缀。这种验证与域名体系强相关,稳定且易于自动化。
IP地址则不同。IP地址没有类似DNS那样的分层所有权记录,证书机构需要确认申请人确实拥有该IP,通常要求IP段属于申请人的AS号,或者通过WHOIS信息反向验证。很多商业CA甚至不提供公网IP证书产品,即使提供,也往往只支持单个IP,不支持通配符,也不支持把IP和域名混合签发在同一张证书里。部分免费证书项目明确不签发IP证书,因此内网、测试环境或小型公网服务器绑定IP时选择面会窄很多。
从浏览器兼容性角度看,Chrome、Firefox、Safari等主流浏览器对IP证书的支持并不统一。即使证书由受信任的CA签发,部分旧版本浏览器或嵌入式客户端仍可能因为使用IP直接访问而触发额外的警告。原因在于IP地址不包含主机名信息,证书的SAN扩展里只能放iPAddr类型条目,而很多客户端默认按DNS名去解析和匹配。这个差异是理解绑定域名还是IP的关键。
二、申请与安装操作要点
无论是申请域名证书还是IP证书,第一步都是生成证书签名请求文件CSR。生成CSR时需要填写的通用名称就是核心标识符。如果是域名证书,就写完全限定域名,例如ipipp.com或www.ipipp.com;如果要覆盖多个域名,推荐使用SAN扩展而不是只填一个CN。如果是IP证书,通用名称和SAN里填写的就是公网IPv4地址,例如203.0.113.10。
# 生成域名证书CSR openssl req -new -newkey rsa:2048 -nodes -keyout ipipp.com.key -out ipipp.com.csr -subj "/CN=ipipp.com" # 生成IP证书CSR openssl req -new -newkey rsa:2048 -nodes -keyout ip_cert.key -out ip_cert.csr -subj "/CN=203.0.113.10"
提交CSR后,证书机构会根据标识符类型进入不同的验证流程。域名验证通常有HTTP文件验证、DNS TXT记录验证和服务器邮件验证三种方式;IP证书一般只提供文件验证或邮件验证,DNS验证不适用于纯IP。验证通过后签发证书,下载得到的证书文件需要与私钥一起配置到Web服务器。Nginx中绑定域名的配置如下。
server {
listen 443 ssl;
server_name ipipp.com;
ssl_certificate /etc/nginx/ssl/ipipp.com.crt;
ssl_certificate_key /etc/nginx/ssl/ipipp.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
}
如果申请的是IP证书,配置中把server_name换成对应的IP地址即可。但要注意,Nginx在监听IP时如果同一个IP上有多个虚拟主机,server_name匹配规则会变化,证书加载仍按server块独立生效。IIS和Apache的配置思路类似,核心都是把证书绑定到站点或虚拟主机,再确保访问时使用HTTPS协议,而不是把IP证书硬套到域名上。
另外,签发后的证书链需要完整。有些IP证书由于CA支持有限,中间证书可能缺失,安装后浏览器会提示证书不受信任。此时应按照证书机构提供的顺序合并中间证书,不要在Nginx的ssl_certificate里只写服务器证书而遗漏中间证书。域名证书同样存在这个问题,部分一键部署工具会自动处理,手动上传时则容易忽略。
三、常见疑问与避坑指南
疑问一:内网IP可以申请受信任的SSL证书吗?答案基本是否定的。受信任的证书机构只能验证公网IP的归属,内网地址如192.168.x.x、10.x.x.x无法通过验证。内网服务如果需要HTTPS,常见做法是内部搭建私有CA并让客户端安装根证书,或者使用域名方式申请证书后在内网DNS中把域名解析到内网IP。
疑问二:一个证书能不能同时绑定域名和IP?绝大多数公开信任的证书产品不支持在同一个证书里混合DNS类型和IP类型的SAN条目。即使技术上可以在CSR里写入两种类型,CA在签发时也会拒绝或分开处理。正确做法是分别申请域名证书和IP证书,再在反向代理层根据访问方式选择对应证书。对需要同时支持www.ipipp.com和203.0.113.10访问的场景,最好通过域名统一入口,IP访问只做跳转或仅用于管理后台。
疑问三:续期时更换IP是否需要重新申请?需要。IP证书与具体IP强绑定,换了公网IP后原证书立即不匹配,必须用新IP重新生成CSR并完成验证。域名证书续期时如果域名不变、服务器更换IP则无需重新申请,因为域名解析可以指向新IP,证书主体依然有效。这也是生产环境优先使用域名证书的重要原因之一。
其他避坑点还包括:申请IP证书前确认该IP是否为静态公网IP,动态IP会导致证书失效;免费自动化证书工具如Let's Encrypt基本不签发IP证书,不要浪费时间尝试;测试环境若用自签名证书绑定IP,需要让所有客户端信任该自签名根证书,否则浏览器告警无法消除。理解这些规则,能少走很多弯路。
四、生产环境中的选择建议
如果是正式网站、小程序、API服务或任何面向普通用户的服务,优先选择域名证书。域名证书生态成熟,支持通配符、多域名SAN、自动续期和免费方案,运维成本最低。服务器IP变动时可以无缝切换,证书本身不依赖网络层地址,迁移灵活。即使某些客户端使用IP直连,也建议让IP访问先通过重定向或反向代理转到域名,URL保持域名形式,避免证书与访问标识符不一致。
只有无法使用域名或必须以IP作为访问入口时,才考虑IP证书,例如某些云服务商提供的默认入口是IP、设备管理系统只支持IP、或者内部专线环境无法做DNS解析。申请前确认IP为静态公网地址,并了解所使用的证书机构是否继续支持IP证书产品。若IP证书不可行,稳妥的替代方案是搭建私有CA,但这会增加证书分发和客户端信任管理成本。
最后提醒,无论选择绑定域名还是IP,证书部署完成后都要用openssl s_client或浏览器开发者工具检查证书详情,确认SAN扩展里的标识符与访问地址完全一致,并检查证书链是否完整。不要只看挂锁图标,一些中间证书问题会在移动端或旧系统中暴露出来。把这些细节处理到位,HTTPS配置才能长期稳定。