[英]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
除了将默认值委托给默认值外什么都不做,并设置一个被调用的标志。
或者,如果在握手后直接使用SSLSocket
或SSLEngine
,则可以检查.getSession().getLocalCertificates()/getLocalPrincipal()
。 感谢@ dave_thompson_085。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.