我们有一个 weblogic 服务器配置为需要客户端证书才能与客户端建立 ssl 连接以实现 web 服务解决方案。 ssl 握手工作完美,因为我们已经配置了所有需要的东西。
现在,连接后我们确实收到一个 soap 请求,其中客户端 ID 是此请求 soap 的字段之一。 我们需要做的是根据用于在我们的服务器内连接的客户端证书的通用名称检查此 ID,以保证交易。 这对我们来说非常重要,因为这是一项银行交易,涉及大量资金,我们需要避免欺诈。
那么:有没有办法从使用 weblogic 10.3.3 服务器的服务器上运行的 java 代码恢复用于建立双向 ssl 连接的客户端证书的通用名称?
[]s
最佳答案
可以使用 HttpServletRequest.getAttribute(String)
从传入的 Servlet 请求中读取客户端的证书方法调用。名称为 javax.servlet.request.X509Certificate
的属性当 servlet 容器创建请求对象的实例以供 servlet/web 服务处理时,由 servlet 容器填充。
然后可以从 X500Principal 对象中获取证书的 DN,通过 getX500Principal
从证书对象中获取方法调用。这不会给出 CN,但会以指定格式为您提供完整的专有名称; this could be parsed to provide the CN .
就访问 ServletRequest 对象而言,可以对 JAX-WS Web 服务进行编程以读取 MessageContext它允许访问底层的 HttpServletRequest 对象。
关于java - 有没有办法在 2 路 ssl 连接中从 java 代码恢复客户端证书的通用名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6179450/