我有一个java服务器,它正试图通过SSL连接到外部Ldap服务器(作为客户端来执行查询)。
我在连接时遇到了麻烦,因为他们在连接时发送给我的证书仅在我的本地窗口信任库中受信任,但在java信任库(cacerts)中不存在。
有没有办法告诉Java信任windows信任的任何证书?
或者,有没有一种方法可以将所有受信任的证书从窗口信任库导入到Java的cacerts?
任何想法都将不胜感激。
有没有办法告诉Java信任windows信任的任何证书?
请检查@synoly的答案
JVM默认值位于jre/lib/security/cacerts
。您还可以设置自己的信任库:
System.setProperty ("javax.net.ssl.trustStore", path_to_your_trustore_jks_file);
System.setProperty ("javax.net.ssl.trustStorePassword", "password");
有没有办法将所有受信任的证书从windows truststore导入Java的cacerts?
没有任何自动过程,但您可以构建一个程序,从windows证书存储中提取受信任的权限,并导入配置为在应用程序中使用的信任存储(不建议修改cacerts)
//Read Windows truststore
KeyStore ks = KeyStore.getInstance("Windows-ROOT");
ks.load(null, null) ;
在Windows上,设置以下JVM属性:
javax.net.ssl.trustStore=NUL
javax.net.ssl.trustStoreType=Windows-ROOT
我已经用Java 7成功地测试了这一点,Java 7在64位Windows安装上运行,该安装信任自签名CA。
如果上述解决方案对您有效(应该有效),您可以跳过本节。否则,请检查Java加密扩展(JCE)的设置,它与现代JDK捆绑在一起。您的JDK安装应该有一个属性文件,其中包含安全提供程序列表。该文件的位置可能因Java版本而异;我的位置是“%JAVA\u HOME%\jre\lib\security\JAVA.security”
。在该文件中,找到一组名称以security开头的属性。提供商
。其中一个条目应设置为sun。安全mscapi。SunMSCAPI
。
要在运行时设置属性,请使用以下Java代码:
System.setProperty("javax.net.ssl.trustStore", "NUL");
System.setProperty("javax.net.ssl.trustStoreType", "Windows-ROOT");
在Windows上,Java附带了SunMSCAPI,这是一个安全提供商,实际上是Windows CAPI的包装器。
将javax.net.ssl.trustStoreType
属性设置为Windows-ROOT
指示Java引用本机Windows ROOT密钥库以获取可信证书,其中包括根CA。(类似地,将javax.net.ssl.keyStoreType
设置为Windows-MY
会告诉Java引用本机Windows MY密钥库以获取用户特定的证书及其相应的密钥)。
如果javax。网ssl。trustStoreType
属性设置为Windows根目录
,可以预期javax的值。网ssl。信任库
被忽略,可以设置为e。
解决这个问题的一个常见方法是设置javax。网ssl。信任存储
到无
,然后创建一个文件名为无
的虚拟文件。如果您发现自己受到这种怪癖的影响,请尝试设置javax。网ssl。信任库
到NUL
,这样就不必创建任何虚拟文件。
我已经尝试了各种方法,通过导入一个基于BouncyCastle的X509Certificate实例和相关的私钥(RsaPrivateCrtKeyParameters)。NET X509Certificate2一个RSACryptServiceProvider实例,并将其保存到证书存储区(NET的X509Store,My/CurrentUser)。 在证书存储MMC管理单元中,似乎有一个与证书相关联
null 有什么想法吗?我一筹莫展...任何帮助都将不胜感激。
问题内容: 如何将Java创建的SSL证书导入Eclipse中的项目? 问题答案: 可能您想在JRE的trustcacerts中导入一个“伪” SSL证书,以避免证书无效的问题。是不是 正如乔恩所说,您可以使用keytool来完成这项工作: 询问时,请使用“ changeit”作为默认密码感谢BrianClozel。确保在服务器或启动配置上使用此运行时。
问题内容: 我有一个Java应用程序正在访问使用StartCom SSL证书的服务。为此,我需要将StartCom CA证书添加到Java的信任库中,因为默认情况下它们不在其中。我已经使用以下命令在linux上成功完成了此操作 (来自此脚本) 但是,同一命令(经过适当调整)在Windows上不起作用。我得到: 如何使其运作? 问题答案: 这是一个简单的错字。在转换命令时,我在“ trustcace
我有所有需要导入apache tomcat的文件,即: 证书申请文件(CSR文件) RSA私钥文件 证书颁发机构发送给我的证书(根证书、中间证书和实体/域) 现在我需要将它们导入我的ApacheTomcat服务器。 我的问题是,鉴于我尚未为我的服务器创建任何密钥存储(CSR和私钥已发送给我,我没有使用keytool等工具创建它们),下一步该怎么做?我需要通过keytool-genkey命令(哪个别
我会非常感谢任何能指引我正确方向的人。