TGTGInsighttelegram intelligenceLIVE / telegram public index
Post content
帖子内容
不同云服务商的几台机器之间有安全通信的需求的话(例如需要调用 HTTP API 或连接数据库),可以选择 VPN 或者 TLS。如果自己维护一个 CA,为所有机器正确配置 server certificate 和 client certificate 的话,是可以达到与 VPN 相似的保护效果的。 但是由于种种原因,TLS 有一些设计并不令我满意,效果上总是比 VPN 差那么一点。例如:端口号是公开的,别人一扫就知道你在运行什么服务,改用随机端口的话不太方便,并且仍然可以扫出一些信息。验证 client certificate 之前就会发送 server certificate,这里面可以泄露不少信息,包括 hostname、证书签发时间、CA 的名字等,可以用于猜测这台机器的拥有者和功能。SNI 目前仍然是没加密的。用 VPN 的话是没有这些信息泄露的。 但 VPN 也有自己的问题,配置起来更麻烦一些,不适合增量式地为每个应用配置,需要提前决定好怎么把所有机器组网,想临时给别人一个权限时,给对方签一张 client certificate 也更轻量级。 如果想要一种可以为各个应用按需启用的、可以灵活配置权限规则的方案,似乎还是更像 TLS 一点。它要是把更多步骤挪到检查客户端证书之后再做,并且都加密传输,就好了。