一般来说,使用域名访问为域名添加SSL证书是建站的常规操作,但有些应用可能不会需要使用域名访问,或者不想绑定域名,只想使用简单的IP来实现访问。在现在全网访问都是HTTPS加密的背景下,是否可以在IP地址上加上SSL证书来实现访问呢?有。但大多数面向IP的SSL证书都需要付费。并且zeroSSL提供免费的SSL证书[1],支持纯IP签发。本文将分享zeroSSL[2]免费纯IPSSL证书申请以及如何在自己的服务器(Nginx)上安装配置zeroSSL免费SSL证书。更多免费SSL请参考专题页面:免费SSL证书收集汇总[3]。ZeroSSL证书申请网站:https://zerossl.com[4]手动申请进入ZeroSSL[5]官网,注册账号,点击免费SSL证书申请。填写您的IP地址并选择免费SSL证书的有效期。选择自动生成CSR。验证域名ZeroSSL免费SSL证书提供两种域名验证方式,最简单的是Web验证,但前提是您需要允许您的IP地址实现Web访问。如果没有,您可以选择使用域名DNS添加TXT记录验证。如果选择网站web访问,直接下载验证文件,然后上传到该IP地址默认的web目录。要求保持路径如下:用浏览器打开IP,确保可以访问验证文件。最后回到ZeroSSL验证页面,点击CompleteVerification。ZeroSSL证书安装下载证书文件ZeroSSL证书验证成功后,即可下载证书文件。ZeroSSLSSL证书[6]提供了多种形式,包括Nginx、Apache等。以Nginx为例,下载了三个ZeroSSL证书文件:ca_bundle.crt和certificate.crt以及私钥key。合并SSL证书对于Nginx服务器,您需要合并ca_bundle.crt和certificate.crt,方法是打开certificate.crt,然后将ca_bundle.crt的内容复制粘贴到后面。安装SSL证书如果您使用的是宝塔面板,可以直接在后台点击安装SSL证书,然后分别上传并保存证书和密钥文件。如果你使用的是Oneinstack一键安装包[7]和LNMP一键安装包[8],需要打开你的Nginx配置文件(不是域名Nginx配置文件),参考如下格式进行修改,并注意SSL证书的路径改成自己的:server{listen443sslhttp2;#listen[::]:443sslhttp2;服务器名称_;indexindex.htmlindex.htmindex.php;根/home/wwwroot/默认;ssl_certificate/usr/local/nginx/conf/ssl/ipssl/wzfouip.crt;ssl_certificate_key/usr/local/nginx/conf/ssl/ipssl/wzfouip.key;ssl_session_timeout5m;ssl_protocolsTLSv1TLSv1.1TLSv1.2TLSv1.3;ssl_prefer_server_ciphers开启;ssl_ciphers“TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-草案:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";ssl_session_cache内置:1000共享:SSL:10m;#openssldhparam-out/usr/local/nginx/conf/ssl/dhparam.pem2048ssl_dhparam/usr/local/nginx/conf/ssl/dhparam.pem;access_log/home/wwwlogs/access.log;}证书安装完成后,记得执行:nginx-t查看是否有语法错误,如果没有,直接重启Nginx即可完成SSL证书安装打开IP地址,可以看到IPSSL证书已经成功安装。总结就目前的情况来看,纯IP的ZeroSSL免费SSL证书[9]并没有很好的自动续费工具。Github上有开发者用golang写了一个更新的工具:https://github.com/tinkernels/zerossl-ip-cert,但是不太好操作,所以比较简单的方法是自己手动申请续费。
