TLS 支持
了解 dubbo3 中的 TLS 以实现安全传输
功能描述
内置的 Dubbo Netty Server 和新引入的 gRPC 协议都提供基于 TLS 的安全链路传输机制。
TLS 配置有一个统一的入口。
使用场景
需要对整个链路进行加密的用户可以使用 TLS。
参考用例
https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-ssl
如何使用
提供方
SslConfig sslConfig = new SslConfig();
sslConfig.setServerKeyCertChainPath("path to cert");
sslConfig.setServerPrivateKeyPath(args[1]);
// If two-way cert authentication is enabled
if (mutualTls) {
sslConfig.setServerTrustCertCollectionPath(args[2]);
}
ProtocolConfig protocolConfig = new ProtocolConfig("dubbo/grpc");
protocolConfig.setSslEnabled(true);
如果要使用 gRPC 协议,在开启 TLS 时会使用协议协商机制,因此必须使用支持 ALPN 机制的 Provider。推荐使用 netty-tcnative。详情请参考 [Summary](https:/ /github.com/grpc/grpc-java/blob/master/SECURITY.md)
消费方
if (!mutualTls) {}
sslConfig.setClientTrustCertCollectionPath(args[0]);
} else {
sslConfig.setClientTrustCertCollectionPath(args[0]);
sslConfig.setClientKeyCertChainPath(args[1]);
sslConfig.setClientPrivateKeyPath(args[2]);
}
为了尽可能保证应用程序启动的灵活性,TLS Cert 的规范也可以在启动阶段根据部署环境通过 -D 参数或环境变量动态指定。参考 Dubbo [配置读取规则](/zh-cn/docs/advanced /config-rule)
在服务调用的安全性方面,Dubbo 将在后续版本中继续投入,预计下一版本将满足您对服务发现/调用的认证机制的需求。
上次修改时间:2023 年 2 月 9 日:Update docsy to 0.6.0 (#2141) (20081578326)