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

默认情况下,如何正确地将自签名证书导入到Java密钥库中,所有Java应用程序都可以使用该证书?

苍宝
2023-03-14
问题内容

我确实想将自签名证书导入Java,因此任何尝试建立SSL连接的Java应用程序都将信任此证书。

到目前为止,我设法将其导入

keytool -import -trustcacerts -noprompt -storepass changeit -alias $REMHOST -file $REMHOST.pem
keytool -import -trustcacerts -noprompt -keystore cacerts -storepass changeit -alias $REMHOST -file $REMHOST.pem

不过,当我尝试运行时HTTPSClient.class,仍然会得到:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

问题答案:

在Windows上,最简单的方法是使用程序portecle。

  1. 下载并安装portecle。
  2. 首先,请确保100%确保知道使用哪个JRE或JDK来运行程序。在64位Windows 7上,可能会有很多JRE。Process Explorer可以帮助你解决此问题,或者你可以使用:System.out.println(System.getProperty(“java.home”));
  3. 将文件JAVA_HOME \ lib \ security \ cacerts复制到另一个文件夹。
  4. 在Portecle中,单击文件>打开密钥库文件
  5. 选择cacerts文件
  6. 输入此密码:changeit
  7. 单击工具>导入可信证书
  8. 浏览文件mycertificate.pem
  9. 点击导入
  10. 单击“确定”以获取有关信任路径的警告。
  11. 当显示有关证书的详细信息时,单击“确定”。
  12. 单击“是”以接受证书为受信任的证书。
  13. 当要求输入别名时,请单击“确定”,然后在说已导入证书时再次单击“确定”。
  14. 点击保存。不要忘记这一点,否则更改将被放弃。
  15. 将文件cacerts复制回找到的位置。

在Linux上:

你可以从已经使用它的Web服务器上下载SSL证书,如下所示:

$ echo -n | openssl s_client -connect www.example.com:443 | \
   sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/examplecert.crt

(可选)验证证书信息:

$ openssl x509 -in /tmp/examplecert.crt -text

将证书导入到Java cacerts密钥库中:

$ keytool -import -trustcacerts -keystore /opt/java/jre/lib/security/cacerts \
   -storepass changeit -noprompt -alias mycert -file /tmp/examplecert.crt


 类似资料:
  • 问题内容: 在Java Web服务客户端的开发过程中,我遇到了一个问题。Web服务的身份验证使用客户端证书,用户名和密码。我从Web服务背后的公司那里收到的客户证书采用格式。当我使用文本编辑器检查文件时,它具有以下内容: 我可以在Internet Explorer中将该文件作为证书导入(无需输入密码!),并使用它通过Web服务进行身份验证。 通过首先剥离第一行和最后一行,转换为换行符并运行base

  • 我试图让一个运行在Tomcat 6之上的应用程序通过SSL连接到LDAP服务器。 我使用以下方法将服务器的证书导入密钥库: 当我用SSL调试打开启动Tomcat时,根据日志Tomcat正在使用正确的证书文件: 但是,Tomcat没有添加我刚刚导入的证书——cacerts文件中的所有其他证书都会打印到日志中——并且连接失败: 重启Tomcat没有帮助。我已经用keyool-list命令验证了新的证书

  • 问题内容: 我在配置中有这个: 我有一对X.509证书和一个密钥文件。 如何导入这两个以便在SSL和连接器中使用它们?我可以用google搜索的所有示例始终都会自己生成密钥,但是我已经有了密钥。 我试过了 但这只会导入证书而不是密钥文件,并导致 我已经尝试连接证书和密钥,但是得到了相同的结果。 如何导入密钥? 问题答案: 我使用了以下两个步骤,这些步骤是在其他答案中链接的评论/帖子中找到的: 第一

  • 我只使用自签名证书进行测试。 问题: Q1.我想知道为什么我需要在步骤6中将服务器和客户端自己的证书添加到各自的信任库中。 2.创建x509证书 openssl req-x509-new-nodes-key diagserverca.key-sha256-days 1024-out diagserverca.pem 3.从私钥和公共证书创建PKCS12密钥存储库。 keytool-importke

  • null 大多数示例使用makecert或New-SelfSignedCertificate创建证书。在这种情况下,对于生产应用程序,自签名证书是否有问题?这仅供应用程序使用Azure Key Vault进行身份验证,客户机在浏览器中不会看到这一点。 如果在这种情况下,自签名证书仍然不受欢迎,那么从受信任的权威机构购买证书是否与购买SSL/TLS证书的过程相同?甚至是同一类型的证书吗?