将SSL证书导入Eclipse

50

如何将Java创建的SSL证书导入Eclipse项目中?

8个回答

49

如果您已经在Windows的证书存储中拥有证书(这在使用MITM证书的企业/公司部署中很常见),您也可以按照以下步骤操作(借助于另一个具有更详细解释的Stackoverflow答案):

  1. 找到Eclipse安装目录下的eclipse.ini文件并打开它

  2. -vmargs一行下面添加以下行,然后保存文件:

-Djavax.net.ssl.trustStore=NUL
-Djavax.net.ssl.trustStoreType=Windows-ROOT 
  1. 重新启动eclipse。

1
在企业局域网中运行,已在 Windows 10 64 位 PC 上测试通过 Eclipse 4.10。运行得非常顺畅! - alphaGeek
这是唯一对我有效的解决方案。我在企业局域网上,使用Win10 64位系统,eclipse版本为2020-12(4.18.0)。谢谢! - Darren Parker
如果您在公司代理后面工作,这是解决方案。 - fuat
1
这个解决方案解决了我在安装Eclipse插件时遇到的问题,这些插件在Marketplace上发布了一个更新站点,位于https://raw.githubusercontent.com/! - Cristiano Costantini
@CristianoCostantini 你是救星!谢谢你。 - rajugaadu
显示剩余4条评论

49

你可能想要在JRE的trustcacerts中导入一张“伪造”的SSL证书,以避免出现“不是有效证书”的问题。是这样吗?

正如Jon所说,你可以使用keytool完成这项任务:

keytool
    -import
    -alias <provide_an_alias>
    -file <certificate_file>
    -keystore <your_path_to_jre>/lib/security/cacerts

当被询问时,请使用“changeit”作为默认密码(感谢Brian Clozel)。请确保在您的服务器或启动配置中使用此运行时。


11
对我有用。FYI,与您的密钥库相关联的默认密码为“changeit”。 - Brian Clozel
1
当我在cmd.exe中输入java keytool时,会出现“错误:找不到或加载主类keytool”。我们应该在哪里输入这些命令? - Stevoisiak
1
不需要使用“-keystore <your_path_to_jre>/lib/security/cacerts”这种方式,你可以直接使用“-cacerts”来代替。我相信这个快捷方式是最近才加入该工具的,可能在旧版本的Java中无法使用。 - Truisms Hounds
终于做到了——Eclipse在c:/users/.....文件夹中拥有自己的jre,我们必须在该文件夹中搜索cacerts或查找Eclipse正在使用的jre并将其导入,然后它就可以工作了。我在"C:\Users\username.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.3.v20220515-1416\jre\lib\security"中找到了cacerts。 - Ajay K N

9

有一个更好的工具可以完成这项工作。

KeyStore Explorer

当您运行应用程序时(在Windows中以管理员身份运行以保存更改到系统,在Linux中使用sudo等),它有一个内置功能来编辑系统的cacerts文件:

文件 -> 特殊打开 -> 打开CA证书

打开CA证书

要么您已经有证书文件并且可以转到:

工具 -> 导入受信任的证书

或者您需要从服务器下载证书;转到:

检查 -> 检查SSL

检查菜单

检查SSL

从那里输入主机名并单击确定。它将弹出一个窗口显示证书详细信息。在该窗口的底部,有一个“导入”按钮,允许您直接将其导入到cacerts中。

SSL连接的证书详细信息

确保保存并关闭cacerts,并重新启动您的Eclipse /应用程序以使设置生效。


相当有趣/有用的工具,点赞。 - alphaGeek
这个回答应该得到更多的投票 :) - th1rdey3

5

Mac

  1. 打开Keychain Access.app(快捷键:按Command和空格键,然后输入“Keychain”)
  2. 搜索所需的证书文件(例如example.cer),右键单击 ➡️ 选择导出... ➡️ 将其保存到某个位置,例如桌面
  3. 按照此答案中的说明将其导入到Java证书存储区。重要的命令如下:
cd $JAVA_HOME/lib/security
sudo cp cacerts cacerts.bak
sudo keytool -importcert -alias youralias -file ~/Desktop/example.cer -keystore cacerts

密钥库的默认密码为:changeit

  1. 假设 $JAVA_HOME/lib/security 在您的系统中指向 /Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home/lib/security,请在 eclipse.ini 文件中添加以下行:
-Djavax.net.ssl.trustStore=/Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home/lib/security/cacerts
-Djavax.net.ssl.trustStorePassword=changeit

注意: 如果您正在使用STS,请按照此答案查找.ini文件。

  1. 重新启动Eclipse。

2
我们需要导入证书,这意味着我们需要使用以下内容:
keytool 
 -importcert 
 -file <certificate_location> 
 -keystore <jre_location\lib\security\cacerts> 
 -alias "<cert_name>"

它会要求输入密码。将密码输入为changeit

Type Password : changeit

最后会询问是否需要添加{是/否}:

输入“是”。

注意:在路径中不要留空格。


冒昧问一句,Windows版的Eclipse中是否有keytool工具可用?如果有,它在哪里? 谢谢。编辑:找到了。为了其他人的方便,它在Java安装目录下,例如C:\ Program Files \ Java \ jre1.8.0_161 \ bin。 - Flyto
这将有助于在服务器端应用程序(如ESB、JBoss等)和HTTPS服务客户端调用中的工作。 - Navaneeth

1
如果您使用默认的Java设置并提供了Java类路径,那么您必须使用Java Truststore来管理SSL证书。
以下是将证书导入Trust store的步骤:
1. 导航到您的Java设置的JRE\bin文件夹 理想情况下路径应该是:

user\Java\jre1.8.0_221\bin

  1. 您可以在bin文件夹中找到Keytool(用于运行命令):

查找Keytool的路径

  1. 现在,一旦您在此路径上,就可以在CMD提示符中打开该路径:

在CMD中打开Bin文件夹

  1. 现在,您将在以下路径中找到Java的默认信任存储: 路径-

user\Java\jre1.8.0_221\bin

Java默认信任存储路径

  1. 现在,您可以运行以下命令来查看此信任存储的内容:

    keytool -list -v -keystore "C:\Program Files\Java\jre1.8.0_221\lib\security\cacerts"

注意:如果您的信任存储路径中有空格,则需要使用双引号将路径括起来。否则,您可以像下面这样提供路径:

keytool -list -v -keystore C:\Temp\Java\jre1.8.0_221\lib\security\cacerts

现在只需提供信任库的密码(默认密码为:changeit)即可访问信任库: 使用Keytool访问信任库 根据您的需求,您现在可以向信任库添加任何证书: JRE_HOME/bin/keytool -import -trustcacerts -alias certAlias -file certFile -keystore trustStoreFile

0
sudo  keytool -import  -file /Users/balaji-pt2176/Desktop/Apple\ Worldwide\ Developer\ Relations\ Certification\ Authority.cer  -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/security/cacerts

在 Mac 上


0

你应该使用keytool创建证书并将其导入到默认密钥库中。我不确定你的应用程序想要做什么,但它应该能够使用那个证书。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接