问题标签 [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.

0 投票
1 回答
8071 浏览

java - Java Webstart 信任库 SSL

需要一些指导。

我有 java webstart 应用程序,我希望它通过 SSL 连接到服务器。只需添加如下属性:System.setProperty("javax.net.ssl.trustStore","my.keystore");但由于 JAWS 程序是从服务器下载的文件不起作用,并且本地文件系统上没有 my.keystore。所以决定将证书分发给所有客户。我做了以下工作,它奏效了。

  1. 将此信任库作为流读取(使用 getResourceAsStream 方法)。
  2. 将其保存在客户端计算机上的任何文件中(sometemp)
  3. 调用 System.setProperty("javax.net.ssl.trustStore", trustStorePath);

但我相信一定有比这更好的解决方案。有什么想法可以让它变得更好吗?

-Padur ============================**=============

* */


Laz感谢您的耐心,当我有时间时尝试学习。我开始编写自己的 CustomSSLSocketFactory ..现在我正在绕过安全性...基于白金解决方案的示例。如果我这样做...信息会以明文形式在网络上传递吗?

现在我想知道我应该如何处理我拥有“sometruststore.jks”文件的信任库文件。我应该怎么做..我有自己的自定义信任管理器软件吗?请指导我正确的方向。

-帕杜尔

0 投票
1 回答
718 浏览

java - 需要帮助设置信任库的权限链(在 Tomcat 中)

带头... 到目前为止,我不是 SSL 应用程序安全方面的专家,但我正在尝试建立一个测试环境,其中包括我们在生产中可能遇到的所有可能场景。为此,我有一个证书颁发机构 (CA) 树,它们是各种测试客户端证书和节点/服务器证书(代表各种已发布 Web 服务和我们与之集成的其他应用程序的复杂测试环境)的颁发者。

这些 CA 的结构如下: Root CA,已签署/颁发了 Sub CA1、Sub CA2 和 Sub CA3。这些潜艇随后签署/颁发了环境中这些不同节点和客户端的所有证书。

现在的问题....在我的应用程序的信任库中,我想信任由 Sub CA1 和 Sub CA2 签名的所有内容,但不信任 Sub CA3(不受信任)。这是否意味着我的信任库应该 (1) 只包含 Sub CA1 和 Sub CA2,或者 (2) 它应该包含 Root CA、Sub CA1 和 Sub CA2?

我不知道在信任库中表示此信任链的正确方法是什么。将来我还想添加一个 Sub CA4(也由根 CA 签名/颁发),但将其添加到证书吊销列表 (CRL) 以进行测试。

提前感谢您对此提供的任何帮助。非常感谢。

0 投票
2 回答
17207 浏览

java - 如何在 Java SSL 客户端应用程序中支持多个 TrustStore

在我们的 java 应用程序中,我们需要使用 https 协议与 SSL 上的服务器列表进行通信。要通信的服务器列表将在运行时更改。最初我们没有任何服务器的证书。在运行时,我们将获取一个新的服务器证书并将公钥证书添加到信任库中;并且与服务器的任何新 https 连接都应使用更新的信任库。

我们正在考虑应该使用两个信任存储,一个 cacerts(默认一个随 jre 提供)和其他包含我们在列表中动态添加/删除的服务器的证书。这将确保我们不会修改 java 的默认 TrustStore(cacerts)。

请建议如何实现这一点。此外,有没有办法只为java中的特定线程使用特定的信任库,以便其他(现有的和新的)线程仍应使用默认的java trueststore(cacerts),并且一个特定的线程将使用特定的信任库服务器。

谢谢你,迪帕克

0 投票
4 回答
7192 浏览

java - 在 Windows JRE 中导入 StartCom CA 证书

我有一个 Java 应用程序访问使用 StartCom SSL 证书的服务。为此,我需要将 StartCom CA 证书添加到 Java 的信任库中,因为默认情况下它们还不存在。我已经使用这些命令在 linux 上成功完成了

(从这个脚本

但是,相同的命令(经过适当调整)在 Windows 上不起作用。我得到:

如何让它发挥作用?

0 投票
2 回答
4994 浏览

jakarta-ee - JBoss reload certificate truststore without restart

Is there a way to "reload" the certificate truststore in JBoss 4.2 without restart?

I am trying to have an EJB call a web service on a remote server with ssl and am seeing a similar problem with SSLHandshakeException as in the article below. What we are attmepting to do is the following and involves three machines, A the JBoss server acting as a web service client to servers B and C.

1) On A, user enters in hostname for B. The machine on A obtains the self-signed certificate of B and installs it in the trust store (via an external shell script).

2) The SSL socket connection is made to B at which it point it seems the certificate store is loaded on this first attempt. The connection is successful and everything works.

3) Again on A, user does the same thing as in 2, the shell script obtains C's certificate and installs it to the trusstore. However, on the attmepted connection to C, it appears (by enabling javax.net.debug=ssl) that the truststore is not "reloaded" and it doesn't find C's certificate and we get SSLHandshakeException.

After restarting JBoss the "updated" truststore is loaded, and the connection to both B and C work.

Would like to do this without restarting JBoss and gather the above scheme isn't correct. If someone could point me to documentation for the correct way to dynamically update truststore it would be very much appreciated.

Problem calling web service from within JBOSS EJB Service

0 投票
2 回答
2066 浏览

java - JavaMail:端口 25 上的 TLS 可以使用单独的信任库吗?

我正在尝试使用 TLS 在端口 25(无 SSL)上使用 JavaMail 发送邮件,但使用我自己的信任库(因为原始 cacerts 信任库不包含所需的证书,我不想修改 Java 的默认信任库) . 我的代码能够使用系统信任库使用 TLS 发送邮件,方法是设置

财产,也,设置

当连接变得安全时指向正确的信任库。由于它是普通的 25 端口,因此我也不需要设置任何socketFactory属性(和实现)。我可以使用系统信任库在端口 25 上使用 TLS 发送邮件。

但是..切换系统属性以设置正确的信任存储有点傻,尤其是在服务器上,当我不知道其他代码想要发送邮件并且可能还需要使用系统属性时,在一般:我正在寻找另一种解决方案,既不修改系统信任库(cacerts文件,制作它的副本并修改副本也可以!)也不是当前需要设置它的系统属性。

我已经尝试过的:

  • 设置我自己的 SSL socketFactory并使用我自己的密钥管理器加载另一个信任库。当不需要在端口 25 上发送但我已经可以在端口 465 上启动安全连接时,这将绝对完美。但是..我不能这样做,这样做会导致套接字异常,因为我'正在尝试安全地连接到不受保护的邮件服务器。

  • 尝试设置我自己的socketFactory,但使用普通套接字进行实际通信。这基本上与根本不使用我自己的 socketFactory 并最终使用系统 cacerts trustStore 文件的 Java 相同。

  • 修改cacerts系统信任库文件。这可行,但我不想修改系统的信任库,我可能没有写权限或密钥库密码可能被修改等。

  • 修改"javax.net.ssl.trustStore"系统属性以指向我自己的信任库文件。效果很好,但我也不想修改系统属性,因为我的代码在服务器上运行,我不知道其他代码在那里运行并且需要完整的属性。即使保存以前的状态并恢复并不能真正防止在修改时使用此属性的其他线程,所以我不太喜欢这种解决方案。

所以.. 简而言之:有没有人知道如何使用非安全连接到端口 25 上的邮件服务器,打开 TLS(通过设置邮件属性),这在内部保护连接并使用我自己的信任库文件没有修改 cacerts 或系统属性?也许有一种类似于 socketFactory 属性的方法,它只在非安全连接变得安全时使用?

0 投票
1 回答
2353 浏览

iphone - Storing certificate chains in the application keychain

On iOS, I know that we can evaluate a trust with SecTrustEvaluate(). To create a trust, we either import it from a *.p12 file or create it using an array of certificates and a set of policies.

I also know that in order to ensure that a server, that is not trusted by default, is trusted, we can use SecTrustSetAnchorCertificates() to augment the list of root CAs SecTrustEvaluate() uses to verify the server's certificate.

Now, how can I ensure that these anchor certificates are available on a subsequent launch? I can store certificates, keys and identities in the application keychain, but not a certificate chain. Even if I store all the certificates in the chain, how will I know what certificates are to be used as anchor certificates?

One solution that comes to mind is to just get all the certificates from the keychain and set them as anchor certificates. Another method could be to all the certificate chains on the disk as *.p12 files and load them once on every application run.

0 投票
2 回答
1678 浏览

java - 无法为 Exchange EWS 生成代理类:无法找到到所请求目标的有效证书路径

我想为 EWS 生成一个代理类(http://msdn.microsoft.com/en-us/library/dd877045%28v=exchg.140%29.aspx)。

但我收到此错误消息:

0 投票
1 回答
2020 浏览

java - 具有多个主机证书的 Trustore

我确实有一个通过 https 连接到服务器(“A”)的小程序的工作演示。服务器的证书链由小程序通过 JKS 信任库 ( myTrustManagerFactory.init(mytrustStore.jks) ) 加载。它工作正常。

现在我也需要这个小程序通过 https 连接到另一台服务器(“B”)。服务器的证书由自签名 CA 签名。所以我需要把这个自签名的 CA 传递给 applet TrustManagerFactory。

  • 我可以将它放在与服务器“A”相同的 JKS 信任库中吗?如果是这样,我是否必须使用第二个别名保存这个自签名 CA?我试过了,但在连接到服务器“B”时出现错误。有没有办法为 TrustManagerFactory 指定服务器“B”别名?

  • 在调用第二台服务器之前,我应该使用第二个 JKS 还是一些 SSL 上下文“重置”?

谢谢你的帮助,
鲁道夫

0 投票
2 回答
6607 浏览

java - 没有身份验证的java安全套接字?

我有一个简单的安全套接字服务器-客户端程序。
对于服务器证书,我使用 keytool 创建了一个密钥库。
当我尝试通过客户端连接到服务器时,出现以下异常:
在服务器中:

在客户端:

如果我的理解是正确的,那么这些异常是由于我使用我创建的证书这一事实引起的。
我的问题如下:
如果我在服务器和客户端中设置启用的密码套件,所有 *_anon* 密码套件,这不应该解决问题吗?
我的意思是如果我启用*_anon_*密码套件,则不需要身份验证,因此没有例外。
它是否正确?
因为我仍然遇到异常。我尝试在已启用的密码套件中包含所有已启用的+_anon 密码套件。没有成功。我尝试只设置 anon 并得到一个新的例外:

有人可以用匿名密码套件解释为什么我会得到这些例外吗?
注意:
如果我在客户端上设置javax.net.ssl.trustStore指向我创建并由我的服务器使用的密钥库的系统属性,则通信正常!
该程序正常工作,数据从客户端发送到服务器正常。


更新:
这是我用来启用匿名密码的片段(我已经为服务器和客户端部分做了这个):

堆栈跟踪位于客户端:

在服务器端:

现在,如果我只是这样做:

所以只有匿名密码套件被启用,我得到:

谢谢