使用 TLS 加密连接

使用 TLS 加密连接

虽然有身份验证可以限制哪些客户端能够连接,但 TLS 可用于加密客户端与服务器之间的通信,并验证服务器的身份。此外,在使用NATS的最安全版本中,服务器还可以配置为验证客户端的身份,从而实现身份验证。当以TLS模式启动时,nats-server将要求所有客户端必须使用TLS进行连接。此外,如果客户端库被配置为使用TLS连接,那么它将无法成功连接到未启用TLS的服务器上。

使用TLS连接并验证客户端身份

使用TLS连接到验证客户端身份的服务器非常简单。客户端需要提供证书和私钥,NATS客户端将使用这些信息向服务器证明其身份。为了使客户端能够验证服务器的身份,还需要提供CA证书。

请参考用于测试的自签名证书中创建的示例证书。

nats-server --tls --tlscert=server-cert.pem --tlskey=server-key.pem --tlscacert rootCA.pem --tlsverify
nc, err := nats.Connect("localhost",
    nats.ClientCert("client-cert.pem", "client-key.pem"),
    nats.RootCAs("rootCA.pem"))
if err != nil {
    log.Fatal(err)
}
defer nc.Close()

// 用连接做点事情

使用TLS协议连接

客户端(例如 Go、Java、JavaScript、Ruby 和 Type Script)支持向 NATS connect 调用提供包含 tls 协议的 URL。这将启用TLS,而无需进一步修改代码。然而,在这种情况下,可能需要某种形式的默认或环境设置,以允许编程语言的TLS库找到证书和受信任的CA。除非考虑这些设置或进行其他修改,否则这种方式的连接很可能失败。

参考资料

最后更新于