当前位置: 首页 > 面试题库 >

在Java中选择SSL客户端证书

柴亦
2023-03-14
问题内容

我们的系统与多个Web服务提供商进行通信。它们都是从单个Java客户端应用程序调用的。到目前为止,所有的Web服务都已通过SSL进行,但是没有一个使用客户端证书。好吧,一个新的合作伙伴正在改变这一现状。

使应用程序使用证书进行调用很容易;设置javax.net.ssl.keyStorejavax.net.ssl.keyStorePassword将做到这一点。但是,现在的问题是如何制作它,使其仅在调用该特定Web服务时使用证书。我想更一般地说,我们希望能够选择要使用的客户端证书(如果有)。

一种快速的解决方案是设置系统属性,调用方法,然后取消设置它们。唯一的问题是我们正在处理多线程应用程序,因此现在我们需要处理同步或锁或您所拥有的东西。

每个服务客户端应该彼此完全独立,并且分别包装在单独的JAR中。因此,我想到的一个选择(尽管我们尚未对其进行正确的分析)是以某种方式隔离每个JAR,或者将每个JAR加载到具有不同参数的不同VM下。那只是一个我不知道如何实现的想法(或者,即使有可能,也是如此)。

这篇文章建议可以从密钥库中选择单个证书,但是如何将其附加到请求似乎完全是另一个问题。

我们正在使用Java 1.5,Axis2和通过wsimport或生成的客户端类wsdl2java


问题答案:

Java SSL客户端仅在服务器请求时发送证书。服务器可以发送有关其将接受哪些证书的可选提示。如果有多个证书,这将帮助客户选择一个证书。

通常,将SSLContext使用特定的客户端证书创建一个新的Socket实例,并从从该上下文中获得的工厂创建实例。不幸的是,Axis2似乎不支持使用an
SSLContext或custom SocketFactory。其客户端证书设置是全局的。



 类似资料:
  • 问题内容: 这不是设计上应该发生的事情,但是出于安全考虑,我想知道,如果有多个证书与某个CA签署的要求相匹配,那么如何将“正确的”证书发送到服务器? 我正在使用一个简单的SSL JAVA示例客户端,连接到Apache HTTPD。 我尝试用4个证书进行测试,每次删除选择的证书,并记下下一个是谁。除了证书的“ sha256”的词典顺序之外,我找不到合理的逻辑(即日期,别名等)。在我看来这不太可能…

  • 问题内容: 我正在使用Java 6,并尝试使用客户端证书针对远程服务器创建一个。 服务器正在使用自签名的根证书,并且要求提供受密码保护的客户端证书。我已将服务器根证书和客户端证书添加到在中找到的默认Java密钥库中。密钥库文件的名称似乎表明不应将客户端证书放入其中? 无论如何,将根证书添加到此存储解决了臭名昭著的问题 但是,我现在停留在如何使用客户端证书上。我尝试了两种方法,但都无济于事。 首先,

  • 问题内容: 在Python中,我使用了这样的请求: 非常简单。 现在,我需要使用Apache HttpClient在Java中实现相同的功能。使用HttpClient进行请求时如何通过客户端证书? 问题答案: 我认为主要区别在于,在Java中,通常将密钥和证书放在密钥存储区中,然后从那里使用它。就像您提到的那样,人们经常希望为此使用单独的库,例如提到的httpcomponents客户端(就像您在p

  • 问题内容: 它看起来像一个标准问题,但是我在任何地方都找不到清晰的方向。 我有Java代码试图连接到可能带有自签名(或过期)证书的服务器。该代码报告以下错误: 据我了解,我必须使用keytool并告诉java允许这种连接是可以的。 解决此问题的所有说明均假定我完全精通keytool,例如 生成服务器的私钥并将其导入密钥库 是否有人可以发布详细说明? 我正在运行Unix,所以bash脚本是最好的。

  • 我有一个用Java Spring写的应用程序运行在Wildfly 10上。我已经使用我的RootCA和客户端证书设置了基本的x509身份验证。 基于客户端的证书CN,我可以处理多个用户角色。 我想实现的是如何动态选择应该使用的客户端证书。访问https时会显示一个对话框(这是一个系统对话框——来自火狐)。但是这个对话框只显示一次,即使注销后,对话框也不会再次显示,最后一个客户端证书会自动选择。 即

  • There are many Ethereum clients to choose from. We recommend different clients depending on whether you are developing or deploying. 开发过程中 Ganache We recommend Ganache, a personal blockchain for Ether