前言
国内服务器绑定域名需要备案,使用小厂的云还需要过白名单,实在麻烦。
我只有使用 HTTPS 访问我的服务器这一个需求,使用免费的 IP SSL 证书就足够了。
申请步骤
一、注册账号
打开 ZeroSSL 官网,点击右上角的 Sign Up 注册账号。
顺便看下各订阅的价格和功能:

免费的套餐只能申请 3 个证书,有效期 90 天,不支持通配符域名。
暂时够用了,需要更多的证书再升级吧。
二、申请证书
登录账号后,点击 New Certificate 开始申请证书。
在 Domain 输入框中填写你的 IP 地址,点击 Next:

之后一路下一步即可。
三、认证 IP 所有权
这里需要下载一个验证文件,然后将其放到你的服务器上。
ZeroSSL 通过访问 http://xxx.xxx.xxx.xxx/.well-known/pki-validation/2CFXXXXXXXXXXXXXXXXXXXXX124C3680868.txt 来获取对应的文件以验证你的 IP 所有权。

我这里就图方便直接通过 Nginx 来实现了:
apt-get update
apt-get install nginx
安装完成后启动 Nginx:
systemctl start nginx

Nginx 的默认网站目录是 /var/www/html,将验证文件放到这个目录下:
# 创建验证文件目录
mkdir -vp /var/www/html/.well-known/pki-validation
# 将验证文件放到目录下,或是像我一样创建一个文件并将内容复制进去
# 注意应该有三行内容
echo "2CFXXXXXXXXXXXXXXXXXXXXX124C3680868" > /var/www/html/.well-known/pki-validation/2CFXXXXXXXXXXXXXXXXXXXXX124C3680868.txt
echo "xxxxxx.com" >> /var/www/html/.well-known/pki-validation/2CFXXXXXXXXXXXXXXXXXXXXX124C3680868.txt
echo "AAABBBCCCCC" >> /var/www/html/.well-known/pki-validation/2CFXXXXXXXXXXXXXXXXXXXXX124C3680868.txt
之后访问下对应的 URL,看看是否能访问到验证文件。
没问题的话点击 Verify Domain:

通常认证需要数秒,等待一会儿即可。
四、下载证书
选择你的 Web 服务器类型,下载证书:

我这里选择了 Default Format,下载后解压得到三个文件:

ca_bundle.crt:根证书certificate.crt:证书private.key:私钥
五、使用
Stunnel
按照 private.key、certificate.crt、ca_bundle.crt 的顺序合并成一个文件,注意顺序不能错!
cat private.key certificate.crt ca_bundle.crt > /root/ssl/stunnel.pem
为 stunnel 配置文件添加证书路径:
client = no
[squid]
accept = 443
connect = 127.0.0.1:8910
cert = /root/ssl/stunnel.pem
结束。