繁体   English   中英

java客户端可以知道服务器是否请求证书吗?

[英]Can java client know whether server requested certificate?

在服务器端,可以指定是否要向连接的客户端发送客户端证书请求: https : //docs.oracle.com/javase/7/docs/api/javax/net/ssl/SSLEngine html的#setWantClientAuth(布尔值)

为了完整性,您还可以指定如果客户端不提供证书,是否要继续协商: https : //docs.oracle.com/javase/7/docs/api/javax/net/ssl/SSLEngine.html #setNeedClientAuth(布尔值)


我的具体问题是:给定一个用Java编写的客户端应用程序,是否可以以某种方式知道服务器在协商期间是否请求了客户端证书(即,您的应用程序所连接的服务器已使用setWantClientAuth(true)配置)?

您可以安装一个KeyManager ,该KeyManager除了将默认值委托给默认值外什么都不做,并设置一个被调用的标志。

或者,如果在握手后直接使用SSLSocketSSLEngine ,则可以检查.getSession().getLocalCertificates()/getLocalPrincipal() 感谢@ dave_thompson_085。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM