TLS 支援
了解 dubbo3 中的 TLS 安全傳輸
功能描述
內建的 Dubbo Netty 伺服器和新引入的 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 機制的提供者。建議使用 netty-tcnative。詳情請參考 [說明](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 憑證的規格也可以在啟動階段根據部署環境透過 -D 參數或環境變數動態指定。參考 Dubbo [設定讀取規則](/zh-cn/docs/advanced/config-rule)
關於服務呼叫的安全性,Dubbo 將在後續版本中持續投入,預計在下一個版本中提供服務發現/呼叫的驗證機制。
上次修改時間:2023 年 2 月 9 日:更新 docsy 至 0.6.0 (#2141) (20081578326)