代码签名的概念

本文介绍Java平台上的代码签名概念及其实现方式。通过使用jarsigner工具,开发者能够为JAR文件添加数字签名以确认代码来源及完整性。文章还提供了一个具体的代码签名示例,展示了如何创建和验证已签名的JAR文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:https://www6.software.ibm.com/developerworks/cn/education/java/j-sec1/tutorial/j-sec1-8-5.html

 

代码签名的概念

JAR 文件在 Java 平台上相当于 ZIP 文件,允许将多个 Java 类文件打包到一个具有 .jar 扩展名的文件中。然后,可以对这个 JAR 文件进行数字签名,以证实其中的类文件代码的来源和完整性。该 JAR 文件的接收方可以根据发送方的签名决定是否信任该代码,并可以确信该内容在接收之前没有被篡改过。JDK 提供了带有这种功能的 jarsigner 工具。
      在部署中,可以通过在策略文件中放置访问控制语句根据签名者的身份分配对机器资源的访问权。

 

 

jarsigner 工具
jarsigner 工具将一个 JAR 文件、一个私钥和相应的证书作为输入,然后生成 JAR 文件的签名版本作为输出。它为 JAR 文件中的每个类计算消息摘要,然后对这些摘要进行签名以确保文件的完整性并标识文件的拥有者。
      在 applet 环境中,HTML 页面引用已签名 JAR 文件中包含的类文件。当浏览器接收这个 JAR 文件时,会对照任何安装的证书或认证中心的公用签名检查该 JAR 文件的签名以验证其有效性。如果未找到现有的证书,则会向用户显示一个提示屏幕,给出证书详细信息并询问用户是否打算信任该代码。

 

 

 

代码签名示例
在本示例中,我们首先从 .class 文件创建 JAR 文件,然后通过在用于签名的密钥库中指定证书的别名来对 JAR 文件签名。然后,我们对已签名的 JAR 文件运行验证检查。

D:\IBM>jar cvf HelloWorld.jar HelloWorld.class
added manifest
adding: HelloWorld.class(in = 372) (out= 269)(deflated 27%)

D:\IBM>jarsigner HelloWorld.jar JoeUserKey
Enter Passphrase for keystore: password

D:\IBM>jarsigner -verify -verbose -certs HelloWorld.jar

         137 Mon Apr 15 12:38:38 CDT 2002 META-INF/MANIFEST.MF
         190 Mon Apr 15 12:38:38 CDT 2002 META-INF/JOEUSERK.SF
         938 Mon Apr 15 12:38:38 CDT 2002 META-INF/JOEUSERK.RSA
           0 Mon Apr 15 12:38:00 CDT 2002 META-INF/
smk      372 Mon Apr 15 12:33:02 CDT 2002 HelloWorld.class

      X.509, CN=Joe User, OU=Security, O="Company, Inc.", L=User City,
      ST=MN, C=US (joeuserkey)


  s = signature was verified
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar verified.

 

 

 

代码签名示例执行
下面是用于该程序的 HTML:

<HTML>
<HEAD>
<TITLE> Hello World Program </TITLE>
</HEAD>
<BODY>
<APPLET CODE="HelloWorld.class" ARCHIVE="HelloWorld.jar"
  WIDTH=150 HEIGHT=25>
</APPLET>
</BODY>
</HTML>

当在将 Java 插件用作 Java 虚拟机的浏览器中执行这个示例时,会弹出一个对话框询问用户是否希望安装和运行由“Joe User”分发的已签名的 applet,并告知用户发布者的可靠性是由“Company,Inc.”验证的,但安全性结论是由一家未获信任的公司发出的。该安全性证书还未过期并仍然有效。它警告:“Joe User”断言该内容是安全的,仅当您相信“Joe User”所作的断言时才应该安装或查看其内容。向用户提供了下列选项:

    * 准许这个会话
    * 拒绝
    * 始终准许
    * 查看证书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值