一次双证书传输加密的失败案例

在购买了一台服务器后, 我开始摸索加密网络传输协议(https)的应用.

由于需求特殊, 涉及到流量的来往流量的转发, 因此我决定使用两个证书分别对两个过程进行传输加密. 并对以上两个过程分别认为是外层内层. 外层始终存在(访问服务器), 内层只在转发流量时用到, 可以看成是基于流量往来的内层.

外层:
我在外层使用Let’s encrept官方推荐的certbot生成了授权的90天rsa证书, 成功的把我的IPhttp升级成了https. 照理来说传输会更加安全, 因为传输的信息会经过加密, 虽然我用的是rsa证书, 加密强度比ecc证书弱上不少, 但是有胜于无.

内层:
因为一些其他需求, 因此搭建了数据转发的功能. TLS传输需要用到证书才能完成. 通常来说证书两个证书可以使用一张保持统一, 也方便维护. 但是我在内层使用了ecc证书, 也是Let’s encrept提供的.

我猜想这样的双证书结构大概就不容易被识别出有数据转发. 而且就算单个证书被破解(外层rsa证书), 而用于转发的内层证书还是能够阻止数据泄露.

然后就这么用了大概三个月, 然后有一天发现我用来转发数据的端口被爆破了…只有这个端口被爆破, 不知道是什么意思…

于是我打听了一下, 同僚用的单证书TLS的服务器大约半年还是好好的. 另一个同僚懒得维护直接裸奔的服务器也很自在.

我猜想, 是不是因为我的流量特征过于明显, 导致了惨剧的发生. 毕竟, 我的数据经过了双重证书, 特征应该会比裸奔和单层的突出不少. 而越是突出的特征, 越容易被识别出来, 也就越容易触发被爆破.

痛定思痛, 切换端口继续实验. 还好只是爆破了一个端口, 换一个口又可以继续转发了. 但是我发现了双证书的维护实在复杂.

正常情况只需要90天一次的更新证书即可, 但是因为这次被爆破了, 就重新生成了证书. 并且修改了config的配置端口信息. 然后restart重启服务, 发现并没有如预期一般的顺利, 就开始了漫漫调试.

双证书维护是真的恐怖, 主要还是工具用的不顺手…

我先是更新了转发的版本, 重启服务发现并不能正常使用. 我猜测是外层证书的问题, 因为我还顺便吊销了外层的证书生成了新的证书, 原来生成了两三张外层rsa证书, 忘记用的是哪张了, 这次也顺便全部删掉重新来一次.

nginx关闭后又再次尝试. nginx中的反向代理使用的证书更新, 结果发现还是不能正常执行. 显示nginx缺少文件. 感觉匪夷所思. 好在主机内有nginx的压缩包, 然后把nginx解压, make&&make install发现缺少了一个pid文件…匪夷所思…

然后折腾一番之后还是没有搞成功. 维护成本过于昂贵, 并且效益太低, 被爆破端口简直打脸安全性…

然后我就把外层证书证书吊销, 使用内层的单层转发来实现了…

这就是本次双证书传输加密的失败案例.


									Copyright: dolor_059

你可能感兴趣的:(debug心得,服务器,失败)