Dubbo-go在Getty/Triple/Grpc三个通信层面支持TLS链路安全通信。
ps: 可以先提前了解非对称加密机制。
CA(Certification Authority)负责生成根证书、签发证书等等。CA自签证书的过程如下:
当需要签发证书时,在本地生成公钥和私钥,向CA发起CSR请求(Certificate Signing Request), CA校验此请求之后,颁发证书。过程如下:
申请者的证书(s_Cert)包含的内容为:s_KeyPub + s_Info + ca_Info + enc_s_Hash。
证书校验:
用CA的公钥对 enc_s_Hash进行解密,得到s_Hash,对比其是否与 hash(s_KeyPub + s_Info + ca_Info)一致。
TLS 的前身是 SSL,用于通信加密,其主要过程如下:
在最简单的TLS机制中,只需要对客户端对服务端进行校验,所以只需要服务端有证书,客户端不需要,比如我们熟悉的HTTPS。其认证过程如下:
除此之外,还有更安全的加密方式mTLS。在 mTLS 中,客户端和服务器都有一个证书,并且双方都使用它们的公钥/私钥对进行身份验证。其认证过程如下:
0.生成所需要的证书和秘钥 本示例提供已经生成好的证书和秘钥,在目录tls/x509
下
1.配置dubbogo.yaml
客户端TLS配置:
dubbo: tls_config: ca-cert-file: ../../../x509/server_ca_cert.pem tls-cert-file: ../../../x509/client2_cert.pem tls-key-file: ../../../x509/client2_key.pem tls-server-name: dubbogo.test.example.com
服务端TLS配置:
dubbo: tls_config: ca-cert-file: ../../../x509/client_ca_cert.pem tls-cert-file: ../../../x509/server2_cert.pem tls-key-file: ../../../x509/server2_key.pem tls-server-name: dubbogo.test.example.com
本示例提供了Dubbo、Grpc、Triple三种通信方式的TLS加密示例,分别位于tls/dubbo
、tls/grpc
、tls/triple
。进入文件夹即可启动示例。
以tls/dubbo为例:
进入tls/dubbo/go-server/cmd
,启动server.go
看到如下日志,则TLS配置生效
2022-12-01T23:39:30.690+0800 INFO getty/getty_server.go:78 Getty Server initialized the TLSConfig configuration
进入tls/dubbo/go-client/cmd
,启动client.go
看到如下日志,则TLS配置生效
2022-12-01T23:40:05.998+0800 INFO grpc/client.go:90 Grpc Client initialized the TLSConfig configuration