【发布时间】:2012-09-02 20:37:15
【问题描述】:
我需要通过不受信任的网络连接客户端和服务器。我考虑过使用TLS (crypto/tls),但据我了解,我首先需要创建一个crypto/x509.Certificate。但我对需要传递给x509.CreateCertificate() function 的所有参数感到不知所措——它说它需要以下所有字段:
序列号、主题、NotBefore、NotAfter、KeyUsage、BasicConstraintsValid、IsCA、MaxPathLen、SubjectKeyId、DNSNames、PermittedDNSDomainsCritical、PermittedDNSDomains。
我可以完全控制两个端点,所以我相信我不需要任何过期或失效支持/参数(我可以随时更改客户端和服务器上的密钥) - 所以我可以跳过 NotBefore 和 NotAfter (?还是我必须设置它们?)。我应该在所有其他字段中添加什么内容,为什么要避免任何漏洞?另外,我可以使用相同的私钥/公钥对进行两种身份验证(客户端到服务器,服务器到客户端),还是必须使用 2 对?
或者,我可以使用比 TLS 更简单的东西吗?但是请注意,我需要进行两种身份验证。
编辑:
我根据接受的答案的建议创建了一个简单的库,以及来自generate_cert.go 的密钥生成代码 - 请参阅:
【问题讨论】:
标签: security authentication encryption network-programming go