Java虚拟机体系结构 - JAR包的签名与认证

本文详细介绍了Java虚拟机中JAR文件的签名和认证过程,包括生成公钥/私钥对,使用jarsigner工具进行签名,以及证书机构在公钥发布中的作用。确保代码安全的关键在于保护私钥,正确使用keystore,并通过证书机构验证公钥。
摘要由CSDN通过智能技术生成

       要对一段代码作担保或者签名,必须首先生成一个公钥/私钥对。用户应该保管那把私钥而把公钥对外公开,然后将要签名的class文件和其它文件放到一个JAR文件中,使用工具jarsigner对整个JAR文件签名。

数字签名的第一步是单向散列(详见图1-1);输入(jar文件)和散列的组合并不安全,因为黑客可以方便地将输入和散列一起替换掉,为了防止这种情况,必须在发送前,用私钥对散列进行加密(加密只对散列进行而不是整个JAR)。


图1-1 对一个Jar文件数字签名

在产生散列值并用私钥对它签名后,随后需要将这个加密后的散列值加到同一个JAR文件(签名后的JAR文件还包含了最初产生这个散列的文件以及签名后的散列)。

        但是公钥的发布应该采取哪种通信方式才能保证不被篡改或者偷偷替换了?为了解决公钥发布的困难,建立了许多证书机构来为这些公钥做担保。发布公钥的机构可以申请证书机构对其公钥进行签名,最终得到的数字序列被称为证书,发布公钥的机构可以发布他的证书而不是他的公钥。当你获得证书以后,可以通过证书机构发布的公钥对证书进行解密从而得到发布公钥机构的公钥。这种证书模式使得黑客可以替换公钥的可能性更小了,因为黑客必须得到证书机构的私钥(伪造证书需要私钥)。

        最后,对JAR文件签名后,必须保证不要让那些意图不轨的人得到你的私钥,也就是说,你必须记住keystore的密码并确保你的keystore文件不被丢失;而且要让使用你JAR包的人得到你的公钥(为了确保发布的公钥的安全性,可以去认证机构申请证书)。

举例:

产生密钥对:keytool –genkey–alias friend –keypass friend4life –validity 1000 –keystore ijvmkeys    //为别名friend产生friend4life的密钥对,这个过程将生成一个名为ijvmkeys的keystore文件,而密钥对就存放在其中,对该文件访问或修改时都需要这个keystore密码(ijvm2ed)。

对JAR文件签名:jarsigner –keystore ijvmkeys –storepass ijvm2ed–keypass friend4life friend.jar friend

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值