有没有一种简单的方法来检查两个.p12文件(一个用于服务器,一个用于客户端)是否应该相互接受,以进行双方都需要授权(包括客户端授权)的SSL握手? 这些 .p12 文件中的每一个都包含信任管理器和密钥管理器。
特别是,什么会导致服务器端出现这样的错误?
SEND TLSv1 ALERT: fatal, description = bad_certificate
WRITE: TLSv1 Alert, length = 2
called closeSocket()
handling exception: javax.net.ssl.SSLHandshakeException: null cert chain
在TLS握手中,第一个客户端验证收到的服务器的证书,然后根据证书算法和其他参数发送自己的证书。在您的情况下,服务器似乎收到了客户端的证书并拒绝了它,可能是因为证书链为空(即客户端的证书是自签名的?
不,没有简单的方法,因为相互接受性取决于客户端和服务器的配置,这远远超出了它们使用的证书。
例如,证书有一个"策略",用于标识颁发证书时的做法和策略。每一方都可以具有包含一组可接受策略的本地配置。还有许多其他例子。