我正在使用Rust的tonic库来实现GRPC和TLS。
我得到以下错误
thread 'main' panicked at 'Failed to create request insight client: tonic::transport::Error(Transport,
hyper::Error(Connect, Custom { kind: InvalidData, error: InvalidCertificate(NotValidForName) }))'
相同的证书适用于其他语言。curl --cacert <path to cert> -vv <server>
显示预期的证书使用者名称。ClientTlsConfig
和Channel
是这样创建的:
let tls = ClientTlsConfig::new()
.domain_name("server") // <server> matches the certificate subject name
.ca_certificate(Certificate::from_pem(client_ca_data));
let channel = Channel::from_shared(endpoint.to_string()) // endpoint is http://server:50051
.unwrap()
.tls_config(tls_config)?
.connect()
.await?;
目前尚不清楚下一步是什么。
1条答案
按热度按时间cl25kdpy1#
我在使用
rustls
建立服务器和客户端之间的连接时遇到了同样的问题。显然,Rust在根据RFC规则处理此类错误时是严格的。请使用下面的bash脚本为您的案例重新生成密钥和自签名证书。生成的文件将存在于keys
目录下。记住根据您的设置更改[alt_names]
。请确保客户端在您的代码中有
rootCA.crt
。就像这样: