之前一直用Nginx监听443端口反向代理路由器和ESXi的web服务,然而联通把443端口封了,只能把web端口换掉。
之所以使用Nginx,是因为路由器想要代理多个Web服务,另一方面也是使用同一个SSL证书方便统一管理,使用443端口也是为了方便。
虽然如此,由于Nginx的反向代理,ESXi Web端调用本地程序是却存在着转发请求的一个BUG,原因不明
如今既然443端口被封,直接使用端口转发就可以了,一方面使得整个网络结构更简单,当然也就避免了之前由于反向代理造成的BUG。
剩下的就是更换SSL证书的问题了
因为目前使用的是Let’s Encrypt签发证书,需要一个定时执行的自动化脚本来完成自动签发,问题就出在这上面。
完成这样一个操作必须满足两点
1、可执行环境
2、定时任务
然而ESXi上面却行不通,ESXi是精简版的Linux,命令不全,缺少依赖,甚至到了ESXi6.0,连crontab服务都省了,所以在ESXi上面自动执行Let’s Encrypt的签发脚本存在问题,行不通的
为什么之前在路由器上就可行?因为路由器刷的是梅林固件并挂载了Enware-ng,梅林固件本身支持定时任务。
当然也可以在路由器上定时签发,然后远程SSH登录ESXi替换证书,完成这样的自动化脚本。然而存在的问题是:使SSL证书生效要么重启ESXi,要么置于维护模式,两者都需要要关闭上层的虚拟机,不可行
所以就毙掉了使用 Let’s Encrypt 证书的可能性
必须选择其他一劳永逸的方案了。
本着能不花钱就不花钱的原则。。。
最终的方案为:申请阿里云的Symantec 免费版 SSL 证书,然后拿着这证书去换取 Namecheap 的免费Comodo SSL证书资格。
呵呵呵。。奸诈如我。。。
当然具体的替换SSL证书的操作还是很简单的,这里
官网也给出了其它的方法
至于具体方法,百度一大把,不再造轮子。
最终的效果,当然是很满意