Java 教程是针对 JDK 8 编写的。本页面中描述的示例和实践不利用后续版本引入的改进,并可能使用不再可用的技术。
有关 Java SE 9 及后续版本中更新的语言特性的概述,请参阅Java 语言更改。
有关所有 JDK 发行版的新功能、增强功能和已删除或已弃用选项的信息,请参阅JDK 发行说明。
假设你是 Ruth,并从 Stan Smith 那里收到了以下内容:
sContract.jar
StanSmith.cer
在使用 jarsigner
工具检查 JAR 文件签名的真实性之前,你需要将 Stan 的证书导入到你的密钥库中。
即使你(以 Stan 的身份)创建了这些文件,并且它们实际上还没有被传输到任何地方,你可以模拟成除创建者和发送者 Stan 之外的其他人,比如 Ruth。以 Ruth 的身份,输入以下命令创建一个名为 exampleruthstore
的密钥库,并将证书导入到别名为 stan
的条目中。
keytool -import -alias stan -file StanSmith.cer -keystore exampleruthstore
由于密钥库尚不存在,keytool
将为你创建它。它会提示你输入一个密钥库密码。
keytool
会打印证书信息并要求你进行验证;例如,通过将显示的证书指纹与从另一个(可信任的)信息来源获取的指纹进行比较。(每个指纹是一个相对较短的数字,可唯一而可靠地标识证书。)例如,在现实世界中,你可以打电话给 Stan 并询问他应该是什么指纹。他可以通过执行以下命令获取他创建的 StanSmith.cer
文件的指纹:
keytool -printcert -file StanSmith.cer
如果他看到的指纹与 keytool
向你报告的指纹相同,那么你们都可以假设证书在传输过程中没有被修改。你可以放心地让 keytool
继续将一个“受信任的证书”条目放入你的密钥库中。此条目包含来自文件 StanSmith.cer
的公钥证书数据。keytool
将为这个新条目分配别名 stan
。