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)