我正在使用 Go 编写一个简单的客户端和服务器。我不想为 SSL 证书付费,而且我读到自签名证书对于证明身份毫无用处,因为攻击者可能只是 MITM 并提供他自己的自签名证书。
但是,我了解到我可以让我的客户使用我想要的任何根证书。我是否可以自己创建一个,让客户信任它,为我的服务器签署一个证书,并在受到保护免受 MITM 攻击的同时安全地连接?如果是这样,我该如何创建自己的根证书?
最佳答案
自签名证书是部署您自己的 PKI 的一种特殊情况(被推到极端,您在该 PKI 中只有一个证书)。
两者都可以用来防止 MITM 攻击,前提是客户端可以使用它事先知道的信任 anchor (证书)来验证服务器证书(并且已经以受信任的方式配置了它们)。
您可以创建自己的 CA 并将客户端配置为使用其根 CA 证书,或者,如果您只有一组非常有限的服务器,通常可以将客户端配置为直接信任特定证书(自签名或非自签名) .
您可能对工具链接的这些问题感兴趣:
- Solutions to sign certificates
- Recommendations for a Certificate Management tool for Linux
- OpenSSL's CA.pl (有用,但可能缺少通用管理界面)
一旦您了解了基本原理,技术方面就不一定困难了,但真正困难的一部分在于您的 CA 的管理。
关于ssl-certificate - 我可以创建自己的根证书以用于与 Go 的 SSL 连接吗?这样安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11613889/