Java Web Start:如何与用户共享证书

时间:2014-05-07 22:21:50

标签: java security java-web-start

我开发了一个使用Java Webstart的应用程序。它需要对磁盘的写访问权限,因此必须对其进行签名,但它只能由有限的一组用户使用,因此我不想为可信证书付费。

让用户信任我的应用程序/自签名证书的最简单方法是什么?我不希望他们使用 keytool ,因为它不是真正用户友好的。我想创建一个可以通过Java控制面板导入的证书,并首先尝试使用以下命令创建可导入的证书:

keytool -genkeypair -keystore patrickgotthard.jks -alias patrickgotthard
keytool -exportcert -keystore patrickgotthard.jks -alias patrickgotthard -file patrickgotthard.cer

但是无法导入生成的.cer文件。然后我找到了Cannot import certificate into java control panel并使用了以下命令:

keytool -genkey -alias patrickgotthard -keystore patrickgotthard.p12 -storetype pkcs12

但据我了解,.p12文件还包含我的私钥 - 我不认为应该共享私钥?!您能告诉我如何创建可以通过Java控制面板导入但不包含我的私钥的自签名证书吗?或者您对我的问题有更好的解决方案吗?

3 个答案:

答案 0 :(得分:2)

在这种情况下,检查与用于签署JAR的自签名证书关联的SHA1指纹可能就足够了:

  • 使用自签名证书签署JAR。

  • 使用keytool -v -list确定证书的指纹。

  • 以双方同意的方式传达证书的指纹。

  • 指示用户将您的安全网站添加到 Java控制面板Security标签中的异常网站列表;这允许用户保留建议的最低安全级别设置

  • security prompt,点击更多信息,将通信指纹与收到的指纹进行比较。

这种方法不会带来信任,但会降低用户接受更改后的JAR的风险。

附录:文章Self-signed certificates for a known community讨论了如何导出自签名证书。然后,社区成员可以根据保证导入证书。

答案 1 :(得分:1)

几年前,我使用NetBeans开发了Java Web Start应用程序。它自动为我做了一切。 您只需将权限标记放在JNLP文件中即可。 还有6个月后,我遇到了创建新的自签名证书的问题。 但自签名的应用仍然有效。 (许多年后,没有修改,证书安装) 客户端不必安装任何证书。 它只是在每次启动时都会发出警告,并使用自签名证书进行签名。

答案 2 :(得分:1)

另一个选择是让这个“有限的用户组”降低Java的安全级别。在Windows中,您转到控制面板 - > Java,然后其中一个选项卡用于安全性(现在我的Mac上很抱歉,它并不完全相同)。我相信如果你将安全级别降低到中等,你可以逃脱自签名证书。