问题标签 [truststore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java SSL 信任库设置
在一个应用程序中,我通过 SSL 使用三个不同的连接。其中两个已签署证书,但一个我正在验证:
问题是 - 如何在连接结束时摆脱这些设置,以便下一个连接使用新服务器的证书?
web-services - 使用 WebSphere、Spring-WS 和 WSS4J 的 WebService 证书验证
我正在开发一个使用 Spring-WS 2.0 提供 SOAP WebServices 的 webapp。WebService 请求需要使用在服务器上经过验证的证书进行签名。为了做到这一点 WSS4J 并使用了信任库 - 这里是 spring-config:
应用程序应部署到 WebSphere 7,主要要求是,信任库不应随应用程序一起提供,而应由 Application Server 提供。有谁知道我可以如何实现,WebSphere 要么提供信任库,要么如何配置 WebSphere 以执行安全授权?主要的挑战似乎是,使用 Spring-WS 而不是使用 WebSphere 的 WebServices 工具......
java - 在同一个 JVM 上设置多个信任库
我有一个在 weblogic 服务器上运行的 Java 应用程序。该应用程序有两个不同的模块,它们使用 SSL 连接到外部 Web 服务——比如说模块 A 和模块 B。
模块 A - 建立在 Axis 上 - 使用信任库 A 模块 B - 建立在 Spring-ws 上 - 使用信任库 B。
模块 A 已存在。模块 B 正在引入。
我需要能够根据正在调用的模块在 JVM 中动态设置信任库。
由于某些限制,我没有选择 - 创建自定义密钥管理器。- 使用一个信任库
我尝试使用 System.setProperty im Module B 代码库来设置信任库。然而,它只有在模块 B 被首先调用时才有效。例如 - 假设我重新启动了 JVM,然后我调用模块 A - 它在 JVM 中设置了它自己的信任库,然后我调用模块 B - 它失败了 - 即使我使用过,它也没有在 JVM 中设置它自己的信任库System.setProperty 方法。
我是否遗漏了什么,或者只是 System.setProperty 没有覆盖现有的设置值。如果是这样,我的选择是什么。
jboss - 用于 Java 应用服务器的自定义 SSL TrustManager
我正在尝试为 B2B 的 Web 服务设置 SSL 连接,并且需要在服务器上进行客户端身份验证。由于服务器托管的 URL 也可由普通用户通过浏览器访问,因此并非所有与主机的连接都需要进行客户端身份验证。只有特定的 URL 需要 client-auth 来验证调用者 X509 证书。我们使用的是基于 Tomcat 5.x 的 JBoss 5.x,所以我有一个连接器配置,如下所示:
如您所见,我配置了一个密钥库,因此我们可以提供我们的签名证书,并且我有 clientAuth=false,因为需要 client-auth 的特定 URL 将在 web.xml 中配置,如下所示:
通过自定义 JAAS 登录模块,如果在上面的连接器配置中,我实际上可以让它工作,我还指定了一个具有客户端证书的信任库。这就是我的问题所在。鉴于我们应用程序的设置以及我们如何扩展,每个 jboss 应用程序服务器设置都支持我们的用户的特定隔离,我不希望在文件系统上到处配置信任库。我们需要从我们的数据库中以代码动态加载受信任的证书。自定义 JAAS 登录模块在 Web 级别执行此操作,并且它还分配角色,但是如果没有连接器信任库,则永远不会调用登录模块,连接在涉及 HTTP 之前在 SSL 级别终止。
经过对网络的大量研究,我确定我需要在 SSLContext/SSLSocketFactory 中配置一个自定义 X509TrustManager 来解决这个问题。此自定义信任管理器还将验证存储在我们数据库中的客户端证书。我已经创建了这个自定义信任管理器,但是我似乎无法连接它。有谁知道在 jboss 或 tomcat 5.x 中配置它的方法?我注意到在 Tomcat 7 中,连接器 trustManagerClassName 上提供了以下配置,但这对我来说不是一个选项。我认为这是可能的,非常感谢任何帮助。
java - 使用 Java 标准密钥库是一种不好的做法吗
我们一直使用 java 标准密钥库 ( $JAVA_HOME/jre/lib/security/cacerts
) 作为 tomcat 的可信存储。该tomcat服务器将与其他一些服务器通信。最近的 OS(AIX) 升级显然覆盖了文件$JAVA_HOME/jre/lib/security/cacerts
,导致证书丢失和托管在 tomcat 中的应用程序出现很多问题。
看看这是不是在 $JAVA_HOME/jre/lib/security/cacerts 上中继是一种不好的做法?解决这种情况的替代(更好|标准)方法是什么?
java - 信任库是否还需要 CA 的证书来进行身份验证?
我正在使用 WSO2 ESB 4.0.0 和 Application Server 4.1.0 通过 SSL 相互通信。两者都配置了相同的密钥库。两者都在不同的服务器上。这样做的原因是 WSAS 只与 ESB 通信。我的证书不是自签名的。
我的问题是;为了让 WSAS 只与 ESB 通信,我是否还需要将 CA 的证书导入到 WSAS 的信任库中?我相信这会完成信任链吗?
如果我不导入 CA 的证书,我会在 WSAS 日志中得到以下信息:
谢谢
java - javax.net.ssl.SSLException: java.security.InvalidAlgorithmParameterException: trustAnchors 参数必须为非空
我希望解析一个每天更新所述文件的 XML 文件——我遇到的唯一问题是他们使用自己的证书(https://..),我不能使用那个特定的 URL,也不能使用是否有 http://... 链接可用。
此代码在运行我的测试时引发以下异常:
javax.net.ssl.SSLException:java.lang.RuntimeException:意外错误:java.security.InvalidAlgorithmParameterException:trustAnchors 参数必须为非空
我已经看到了各种关于创建各种类来处理这种连接或个人服务器的建议,以及将证书添加到密钥库,然后将该密钥库添加到 Java 项目,但我一直无法做到这一点,我正在寻找一种稍微简单的方法来在线访问 XML。
java - 在 JVM 信任库中列出证书
我已经通过系统属性定义了一个自定义信任库:
鉴于 VM 已经负责加载文件,我想列出那些已加载的证书。我不想再次将信任库加载到流中并从那里获取证书,而是希望查看 VM 已经自行加载的那些。另外,我想从我自己的应用程序中查看它们,而不是使用单独的工具。我已经做了一些谷歌搜索,但到目前为止我一直无法找到这个。
java - 使用信任库的 java ssl 连接
我有一个连接到 https 站点的 Web 应用程序。为此,我必须将证书安装在 lib/security 文件夹中的 cacerts 中。我想创建一个信任库并将其放置在应用程序中,并在连接到其他站点时使应用程序引用此信任库,以便在移动应用程序时证书随之移动。
我连接到 https 站点的方式是使用表单发布。我该怎么做。此外,在进行表单发布而不是使用 HttpsURLConnection 时,如何配置以查看自定义信任库而不是 cacerts。
java - 在 java(自定义)信任库中管理多个条目
我已经阅读了一些相关的问题,但它们都没有真正帮助我。所以,让我给你讲一个背景故事:我正在编写一个投票系统,你有几个服务器来管理注册、投票卡交换和投票。在注册用户提交他的个人数据期间,服务器检查数据是否与数据库中的数据匹配,然后接受用户的证书并将其添加到其 trustStore,如下所示:
然后将 trustStore 存储在文件中。在注册过程中,许多用户注册了他们的证书,然后他们连接到另一个服务器,该服务器同时请求客户端和服务器身份验证,问题就出现了。我认为这个“其他服务器”可以使用前面提到的 trustStore 与用户执行 SSLHandshake,但似乎 trustStore 只“记住”最后一个注册的用户。我正在创建这样的 SSLServerSocket:
正如我之前提到的,双方身份验证都可以正常工作,但仅适用于 trustStore 中的最后一个条目。所以,现在最后我的问题是 - 我必须为每个用户创建一个单独的 trustStore 吗?我必须重载 TrustManager 吗?基本上,有什么方法可以让 SSLContext/SSLEngine 遍历我所有的受信任证书并在找到匹配的证书时进行握手?
更新
我想我需要澄清一些事情。首先,这不是一个 Web 应用程序,只是一个普通的客户端-服务器 java swing 应用程序。使用的每个证书(服务器或客户端)都是自签名的,但是服务器的证书是内置到客户端应用程序中的,因此当客户端连接到服务器时,他可以比较证书(工作)。我还尝试完全按照 Bruno 建议的方式解决它 - 用户注册后,服务器检查他的数据是否有效,如果它为客户端颁发新证书,将其添加到他的信任库并将其发送给客户端。但这甚至对最后一个注册的客户也不起作用。