Java:证书自我签署一个罐子

时间:2012-07-17 16:34:42

标签: java security certificate

我有一段时间没有完成证书,我正在寻求一些帮助。

理想情况下,我想实现这一目标。

  • 创建jar。
  • 使用证书签名。
  • 让该jar中的代码验证它是否已使用该证书进行签名。

我已经创建了一个自签名证书。

keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048

导出其公共证书

keytool -storepass password -alias selfsigned -export -rfc -file outfile.txt.cer -keystore keystore.jks

签署了jar

jarsigner -keystore keystore.jks -signedjar signedX.jar x.jar selfsigned
Enter Passphrase for keystore: password

然后我在Jar中有一个类来加载outfile.cer并验证这个jar是否已经签名。

这听起来合理吗?

我正在使用我的私人证书签署jar,然后在jar中包含公共证书,并确保使用相同的证书签名。

对我来说,大洞似乎是我可以解开jar,更改代码,使用新的私人证书签名,在jar中包含NEW-Public-Cert,它将是有效的。

我认为这个问题的解决方案是要有一些外部密钥存储来验证,而不是我的jar中的证书。这听起来合理吗?

我理解这是一个悬而未决的问题,更多的是设计问题,而不是单一的正确答案问题。

任何建议都会很棒。


编辑...

一夜之间想到这一点,我意识到了我的过程中的错误。

我需要将PUBLIC证书导入客户端的密钥库。 然后当我用私钥签署我的jar时,客户端jvm将验证它。 我不需要在内部进行任何检查。

我会测试一下,然后写下我的发现。

0 个答案:

没有答案