如何将Java创建的SSL证书导入Eclipse项目中?
如果您已经在Windows的证书存储中拥有证书(这在使用MITM证书的企业/公司部署中很常见),您也可以按照以下步骤操作(借助于另一个具有更详细解释的Stackoverflow答案):
找到Eclipse安装目录下的eclipse.ini
文件并打开它
在-vmargs
一行下面添加以下行,然后保存文件:
-Djavax.net.ssl.trustStore=NUL
-Djavax.net.ssl.trustStoreType=Windows-ROOT
你可能想要在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)。请确保在您的服务器或启动配置中使用此运行时。
java keytool
时,会出现“错误:找不到或加载主类keytool”。我们应该在哪里输入这些命令? - Stevoisiak有一个更好的工具可以完成这项工作。
当您运行应用程序时(在Windows中以管理员身份运行以保存更改到系统,在Linux中使用sudo等),它有一个内置功能来编辑系统的cacerts文件:
文件 -> 特殊打开 -> 打开CA证书
要么您已经有证书文件并且可以转到:
工具 -> 导入受信任的证书
或者您需要从服务器下载证书;转到:
检查 -> 检查SSL
从那里输入主机名并单击确定。它将弹出一个窗口显示证书详细信息。在该窗口的底部,有一个“导入”按钮,允许您直接将其导入到cacerts中。
确保保存并关闭cacerts,并重新启动您的Eclipse /应用程序以使设置生效。
example.cer
),右键单击 ➡️ 选择导出... ➡️ 将其保存到某个位置,例如桌面
。cd $JAVA_HOME/lib/security
sudo cp cacerts cacerts.bak
sudo keytool -importcert -alias youralias -file ~/Desktop/example.cer -keystore cacerts
密钥库的默认密码为:changeit
。
$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
文件。
keytool
-importcert
-file <certificate_location>
-keystore <jre_location\lib\security\cacerts>
-alias "<cert_name>"
它会要求输入密码。将密码输入为changeit
Type Password : changeit
最后会询问是否需要添加{是/否}:
输入“是”。
注意:在路径中不要留空格。
user\Java\jre1.8.0_221\bin
user\Java\jre1.8.0_221\bin
现在,您可以运行以下命令来查看此信任存储的内容:
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
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 上
你应该使用keytool创建证书并将其导入到默认密钥库中。我不确定你的应用程序想要做什么,但它应该能够使用那个证书。