java - 有没有办法在 2 路 ssl 连接中从 java 代码恢复客户端证书的通用名称?

标签 java soap ssl weblogic

我们有一个 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/

相关文章:

java - 通过按 Enter 键切换 JTextFields

android - 如何从 php webservice 在 android 应用程序 arraylist 中解析

java - 如何通过 HTTP 代理连接 SSL 套接字?

ssl - WebSphere Liberty Profile 17.0.0.4 破坏了 JAX-RS 客户端 TrustStore-

web-services - 使用 WSSpringServlet 的带有 SOAP Web 服务的 Spring MVC 应用程序

ssl - 如果我在 Nginx 上使用反向代理,我是否需要反向代理和服务器的 SSL 证书?

java - 自定义 Java 序列化

java - 如何按字符串值(波斯字母)对 List<Object> 进行排序?

java - 无法从 Activity 中调用 RecyclerView 适配器的方法

java - Spring WebService 不初始化服务和消费者的 bean