gpt4 book ai didi

java - 试图了解相互身份验证 key 对和证书如何在 gRPC 上下文中工作

转载 作者:行者123 更新时间:2023-12-04 22:43:22 26 4
gpt4 key购买 nike

因此,在阅读了无数关于如何以及如何生成 key 对、证书、信任管理器的文章后,我感到非常困惑。

这是我的情况,我有一个客户:

SslContextBuilder builder = GrpcSslContexts.forClient();
// builder.trustManager(new File(trustCertCollectionFilePath)); //i've read this should be ignored for the client
builder.keyManager(new File(clientCertChainFilePath), new File(clientPrivateKeyFilePath));

和服务器:
SslContextBuilder sslClientContextBuilder = SslContextBuilder.forServer(new 
File(certChainFilePath), new File(privateKeyFilePath));
sslClientContextBuilder.trustManager(new File(trustCertCollectionFilePath));
sslClientContextBuilder.clientAuth(ClientAuth.REQUIRE);

我从这里找到的一个例子中使用这些:
https://github.com/grpc/grpc-java/tree/master/examples/example-tls/src/main/java/io/grpc/examples/helloworldtls

据我了解,它应该像这样工作:

对于客户:
1. You have to generate a RSA key pair.
2. Generate a certificate.
3. Put the public key inside the certificate.

clientCertChainFilePath = certificate with public key inside
clientPrivateKeyFilePath = client private key

对于服务器:
1. You have to generate a trusted authority certificate(CA) with a server private key
2. Get the certificate from the client
3. Register the client certificate inside the trusted authority somehow.

certChainFilePath = certificate from the client with public key inside
privateKeyFilePath = private server key for the trust authority certificate(CA)
trustCertCollectionFilePath = trusted authority certificate(CA)

请纠正我或告诉我所有这些究竟是如何结合在一起来完成这项工作的,如果您有任何关于如何正确生成所有内容的特定链接,我们将不胜感激。

最佳答案

客户端和服务器都有自己的公钥和私钥。这是两对独立的公私钥对。
在服务器端,certChainFilePath是带有服务器公钥的服务器证书。 privateKeyFilePath是服务器的私钥。
如果没有双向 TLS,客户端只需要 CA 证书来验证握手期间收到的服务器证书。
使用双向 TLS,请求客户端将其证书(内部包含客户端公钥)发送到服务器。

关于java - 试图了解相互身份验证 key 对和证书如何在 gRPC 上下文中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61652185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com