不使用域名,IP地址如何申请SSL证书?

有些特定需求环境下,我们不希望使用域名,而需要使用IP地址+端口的形式直接访问。这种多数是在一些企业的应用系统在公网上跑,如果用域名,通过备案+子域名暴力穷举等方式会暴露出系统的地址,虽然跑直接IP也会暴露,但是能多一层防护当然更好,其实最主要是像作者这种企业,上级就不允许你域名有映射,用域名全部要备案。
不用域名,又想跑ssl,以前以为只能是使用自签的证书,每次用户访问显示一个大大的不信任,后来才知道其实IP地址也可以申请SSL证书,本文主要讲解IP证书的购买、验证和配置。


一、IP证书务必咨询清楚
大多数的证书厂商都是主推域名证书,购买IP证书需要提前了解清楚是否支持IP签发证书了。比如在阿里云上的证书购买页面,我就没找到有IP证书的描述。叫你输入的就是域名购买。
填写IP地址后,只有OV证书可以购买。价格最便宜的也是Globalsign,2K多。作者也就没去购买了,直接寻求其他途径了。
作者一直在使用宝塔面板来做linux服务器管理,之所以购买他家的一个是便宜,一个是可以配合面板做设置。DV的证书,如果不是对加密性要求很高,完全就够用。作者就是只要不弹出不安全提示就可以,有这个提示会给你日常工作找来很多麻烦事。
就在些这篇文章前一个小时,因为公司VPN服务器的IP证书过期了,早上8点开始,作者电话就被打爆了,都问公司VPN站点被黑了吗,能不能访问,要怎么操作继续。
懂证书配置的,完全可以省掉200一年的人工服务。作者选择的是瑞安信的,也就216一年,算是便宜,毕竟是国内老牌证书厂商,宝塔还真没注意他自己什么时候开始做证书的。
二、 证书申请和验证
DV型的证书验证比较方便,只需要验证域名或者IP的所有权。对于域名验证可以采用DNS验证,也就是厂商会让你域名做一个cname的解析,还有就是文件的验证,要求是站点目录下方一个指定的txt文件。在宝塔购买证书后,在后台的证书管理页面就可以看到你购买的证书列表。
1. 完善资料申请证书
如果你购买的是IP证书,那么会明确的显示是IP SSL 证书,如果是域名的就没有IP两个字,注意不要搞错证书类型。点击完善资料。域名部分就输入你的IP即可,选择文件验证,建议选HTTP了,选HTTPS,但又没有证书或者证书是自签的,会导致后面验证失败。
填写的验证资料,建议是真实有效的,虽然不会去核查。
2. 验证所有权
IP证书是只能通过文件验证的,需要按照指引给该IP建立一个站点,并把验证文件放到指定的目录下去。本文也不阐述如何建站了,找台服务器临时把IP指向过去,或者把80端口映射过去都行,装个apache或者ngnix。 验证时一次性的,通过后就不需要了。
验证失败状态码说明
失败[-1]:域名未解析
失败[-2]:验证文件不存在
失败[-3]:请求超时,无法访问验证文件
失败[-4]:网站开启301/302/强制HTTPS,导致无法验证文件
失败[-5]:拒绝访问验证文件
失败[ 0]:未知原因
三、 配置证书举例
在宝塔中配置证书时很简单的。证书申请成功后,会拿到一个压缩包,解压后如下
提供了主流的web服务器支持的证书格式。在宝塔面板中配置超级简单,你都不用去下载证书,直接进入倒宝塔面板页面,在你所需要配置的站点设置页面,ssl界面,选择你要部署的证书点击部署即可。
如果需要手动配置证书,以ngnix为例,核心就是要就是修改配置文件,在需要配置证书的站点server块中指定证书crt文件和私钥key文件所在的目录。
ssl_certificate /path/to/example.com.crt; # 证书文件路径
ssl_certificate_key /path/to/example.com.key; # 私钥文件路径
# 其他SSL配置参数
ssl_protocols TLSv1.2 TLSv1.3; # 支持的协议版本
ssl_ciphers HIGH:!aNULL:!MD5; # 加密套件
ssl_prefer_server_ciphers on; # 优先使用服务器端的加密套件


如果有过域名证书申请、配置和验证的经验的话,对于IP证书的操作就比较简单得心应手了,如果条件允许,大家证书就买3年的比较好,如果每年买你都得重新验证一次,还是有些麻烦的。




