折腾SSL/TLS证书——流程和思维上的转变
CA颁发的证书就是要比自签发证书高贵吗?——我的疑问
这两天因工作上的事情,有几台服务器需要更新SSL/TLS证书,再加上自己的服务器还有一些用的是http,就正好一起弄了一下。然后我发现我的思路和别人的思路不太一样。
实操部分
工作单位上的服务器证书更新。没啥特别的操作,纯手工,朴实无华,甚至透露着呆板。从阿里云处获取到
没什么特别,除了贵、繁琐、服务器在内网下、各种代理杂乱无章之外,似乎也没有什么问题 :(
其实我自己以前的服务器也是这样搞的,下载证书,传到服务器,按照指引验证控制权,巴拉巴拉的。确实,没什么问题,除了我根本不关心这里面的流程以外。说人话就是,对我而言这些操作完全是在浪费我的时间精力。
然后阿里云提供的免费证书日期也变成三个月了,我经不起折腾了。遂转到Lets Encrypt。
按照指引,用certbot装证书,那感觉,一个字,绝。我甚至都不知道为什么以前我要手动去搞这些玩意儿。
给大家伙看看这两种证书安装方式的对比嗷!
1 | ubuntu20,用的nginx |
两分钟不到,完事儿了,甚至到期前自动更新证书也给你配好,我铁幕都还没缓过神来,居然就已经结束了。
换做是以前,想想我需要怎么做嗷。
- 去阿里云申请证书并下载
- 把证书文件上传到服务器
- 配置nginx
虽然看起来也不麻烦,但是既然我不关心这背后是怎么部署的,我又何必要手动去搞呢?
其实在这之前我有很多次都接触过Let’s Encrypt,也进过certbot的页面看过工作流程。那个时候我坚信自己手动上传+部署的方式会更加可靠,所以就一直没有实践,直到今天。
这还真是印证了那句话啊,人不要盲目自信,还是得谦虚的学习。
事后总结
表面上只是我怕更新证书麻烦,从原来的手动转向了自动,实际上这里面我有一些不成熟的想法。
启用https的必要性
放在几年前,我认为对于我这种个人用户来讲,https是没啥必要的。我的应用传的数据都是明文,无非就是搭个博客,做个网盘,这些东西都是可以暴露在网络上的,因此我不会特别重视网站用的是http还是https。
但是时至今日,我也让我的应用改用https了。不可否认,从协议上来讲https的确要安全一点。但是我更多的考量是,用户在浏览我的页面时,看到“不安全”,那么它可能会感到疑惑。
有了SSL/TSL证书改用了https就安全了吗?
我认为完全不是。我依旧认为安全与否和是否https、和有没有CA颁发的证书毛关系都没有。
从协议层面来讲,我完全可以使用自签名证书,启用https。这样的话,流量传输的过程中,单纯协议上来讲,也是安全的(相较于http)。所以需要考虑的就是用自签名证书的网站,浏览器会报警告,甚至默认不显示。
那就说说CA颁发的证书吧。CA证书和我的自签名证书,一个是受信任的机构给的,一个是我自己给的。前者挂在网上,各大主流浏览器会报安全,后者会报不安全。但是我仔细想想,这两个文件本质上是没有区别的呀。都是用https,我访问的站点并不会因为证书不同而有额外的风险,获取的内容也不会因为证书不同而不同。
无非就是,自签名证书向用户说“信我,我真的是我”,而CA证书说“信我,CA机构可以证明我”。想起来竟然觉得有点可笑呢,也许这就是资本的力量。只有有钱(甚至不要钱),CA机构可以给任何站点发证书。用户相信这个很随意的CA机构,却不相信同样有着服务器完全控制权的我。
嗷对了,我在知乎上看“自签名SSL证书有什么风险”,全是商家在打广告,说什么易受攻击啊、不受信任啊之类的。直到我看到了一条回复:

事后
玩归玩,闹归闹。吐槽也吐槽够了,我自己这些肤浅的理解,大部分人根本不关心,也不在乎。我还是老老实实用的certbot吧!工作上的事儿,按照工作流程走就行。自己的理解,自己私下讨论就行。who care