我最近创建了一个applet,当我将它嵌入到我的站点中时,Java会阻止它,因为它没有被受信任的机构签名。
我已从CACert(.crt& .cer文件)下载了认证,我的jar文件(FollowMe.jar)。
在Google上搜索几个小时后,如何用crt文件签署jar文件,我仍然无法做到。有人可以帮帮我吗?这太令人沮丧了。
答案 0 :(得分:1)
要签名一个jar,你需要一个带有私钥的密钥库(通常是PCKS12
或JKS
格式)在你的问题中我不清楚你是否有私钥,因为你评论的是:
我已从CACert下载了认证
这听起来让我感到困惑,不管怎样我认为你有一个正确的密钥库,由于签署了一个jar,你可以使用jarsigner
中的$JAVA_HOME/bin
使用跟随指令:
jarsigner -keystore [yourKeystore] -storeType [PKCS12 or JKS] [yourApplet.jar] [keyAlias]
如果我怀疑您尝试使用没有私钥的证书对jar进行签名,您就会知道这是不可能的,您需要一个私钥来执行此操作。您有以下选项:
keytool
(也在$JAVA_HOME/bin
中)使用以下命令生成带有自签名证书的密钥对: keytool -genkey -keyalg [RSA or another] -alias [yourkeyalias] -keystore [yourkeystore.jks] -storepass [keystorePassword] -validity [validity period for your certificate in days] -keysize [key size for algorithm in RSA for example 2048]
然后填写有关证书subject85的提示。
请注意,使用自签名证书,您可以生成一个密钥库来进行测试以对您的jar进行签名,但是为了让jvm将您的applet识别为受信任,您无法使用自签名证书对该applet进行签名,而是您需要对其进行签名使用密钥和使用受信任的证书颁发机构签名的证书进行Java代码签名。所以请看第二个选项。
csr
(证书签名请求)并向证书颁发机构发出请求,该证书颁发机构生成代码签名Java证书以签署您的csr
并生成证书。然后将证书,密钥和证书链放到密钥库中,并使用jarsigner命令对jar文件进行签名。您可以在许多Java代码签名供应商之一中查看说明,例如Symantec
,Thawte
,Digicert
,Globalsign
,Entrust
或其他一些(您可以制作)通过谷歌搜索:)。 希望这有帮助,
答案 1 :(得分:0)
以下是常见的做事方式:
keytool -import -trustcacerts -alias appletCert -file CAcert.crt
jarsigner "C:\path\FollowMe.jar" appletCert