我是gRPC的新手。我要做的是从客户端向服务器发送一个ssl gRPC调用。我的问题是,以下代码中的“certFile”是客户端证书还是服务器证书?如果是客户端证书,则需要将服务器证书添加到信任列表中,还是在调用之前将客户端证书添加到服务器的信任列表中?感谢你的帮助。
SslContext sslcontext = GrpcSslContexts.forClient()
.trustManager(caFile)
.keyManager(certFile, keyFile)
.build();
发布于 2020-09-28 22:37:12
trustManager
和keyManager
在客户机/服务器之间是相互的;客户端的信任管理器需要信任服务器的密钥管理器,而服务器的信任管理器需要信任客户机的密钥管理器(如果使用客户端证书)。客户机和服务器之间唯一的区别是服务器必须有一个密钥管理器,而客户机必须有一个信任管理器。如果不为客户端指定信任管理器,则将使用默认设置。
信任管理器基本上是受信任的证书颁发机构(独立于客户端或服务器)。密钥管理器包含身份证书和私钥以证明身份。
因此,客户端的keyManager
用于客户端证书.您需要在服务器端配置trustManager
以信任该证书:要么包括证书本身,要么包括签署客户端证书的证书颁发机构。通常可以将客户端的信任管理器保留为默认值。
注意,只有在服务器请求时,客户端才会发送其证书。因此,您需要将服务器配置为OPTIONAL
ly或REQUIRE
客户机证书:
sslContextBuilder.clientAuth(ClientAuth.REQUIRE);
https://stackoverflow.com/questions/64110008
复制相似问题