我无法验证是否有任何问题。你能仔细看看你的环境有什么不同吗?我在 Windows 7 RC 上运行。
让我们检查一下版本:
C:\temp>java -版本
java版本“1.5.0_14”
Java(TM) 2 运行时环境,标准版(内部版本 1.5.0_14-b03)
Java HotSpot(TM) Client VM(build 1.5.0_14-b03,混合模式,共享)
让我们看看我们的罐子里会有什么:
C:\temp>dir /s /b com
C:\temp\com\rdc
C:\temp\com\rdc\test
C:\temp\com\rdc\test\logging.properties
让我们制作罐子:
C:\temp>jar -cfv test-source.jar com/*
添加清单
添加:com/rdc/(in = 0) (out= 0)(存储 0%)
添加:com/rdc/test/(in = 0) (out= 0)(已存储 0%)
添加:com/rdc/test/logging.properties(in = 13) (out= 15)(deflate -15%)
让我们在 jar 上签名:我使用的是自签名证书。
C:\temp>jarsigner -signedjar test-dest.jar test-source.jar vinay
输入密钥库的密码:
警告:签名者证书将在六个月内到期。
让我们看看我们签名的 jar 中有什么:
C:\temp>jar tvf test-dest.jar
2009 年 7 月 15 日星期三 23:39:12 BST 155 META-INF/MANIFEST.MF
276 7 月 15 日星期三 23:39:12 BST 2009 META-INF/VINAY.SF
1130 年 7 月 15 日星期三 23:39:12 BST 2009 META-INF/VINAY.DSA
2009 年 7 月 15 日星期三 23:37:18 BST 2009 META-INF/
2009 年 7 月 15 日星期三 19:44:44 BST com/rdc/
2009 年 7 月 15 日星期三 19:44:58 BST com/rdc/test/
2009 年 7 月 15 日星期三 23:37:10 BST com/rdc/test/logging.properties
好的,它似乎已经签名,并且它没有类。我们看一下内容MANIFEST.MF
:
清单版本:1.0
创建者:1.5.0_14(Sun Microsystems Inc.)
名称:com/rdc/test/logging.properties
SHA1-摘要:Ob/S+a7TLh+akYGEFIDugM12S88=
和内容VINAY.SF
:
签名版:1.0
创建者:1.5.0_14(Sun Microsystems Inc.)
SHA1-摘要-清单-主要属性:4bEkze9MHmgfBoY+fnoS1V9bRPs=
SHA1-摘要-清单:YB8QKIAQPjEYh8PkuGA5G8pW3tw=
名称:com/rdc/test/logging.properties
SHA1-摘要:qXCyrUvUALII7SBNEq4R7G8lVQQ=
现在,让我们验证 jar:
C:\temp>jarsigner -verify -verbose test-dest.jar
2009 年 7 月 15 日星期三 23:51:34 BST 155 META-INF/MANIFEST.MF
276 7 月 15 日星期三 23:51:34 BST 2009 META-INF/VINAY.SF
1131 年 7 月 15 日星期三 23:51:34 BST 2009 META-INF/VINAY.DSA
2009 年 7 月 15 日星期三 23:37:18 BST 2009 META-INF/
2009 年 7 月 15 日星期三 19:44:44 BST com/rdc/
2009 年 7 月 15 日星期三 19:44:58 BST com/rdc/test/
smk 13 7 月 15 日星期三 23:37:10 BST 2009 com/rdc/test/logging.properties
s = 签名已验证
m = 条目在清单中列出
k = 在密钥库中至少找到一个证书
i = 在身份范围内找到至少一个证书
jar 验证。
警告:此 jar 包含签名证书将在
六个月。使用 -verbose 和 -certs 选项重新运行以获取更多详细信息。
从表面上看,一切似乎都井然有序。您可以检查您的证书是否已过期或被吊销?您使用的是自签名证书还是真实证书?还是我误解了你的问题?