Java 教程是针对 JDK 8 编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用已不再可用的技术。
请参阅Java 语言更改,了解 Java SE 9 及其后续版本中的更新语言特性的摘要。
请参阅JDK 发行说明,了解所有 JDK 发行版的新功能、增强功能和已删除或不推荐使用的选项的信息。
在您可以授予已签名代码读取指定文件的权限之前,您需要将Susan的证书作为受信任的证书导入到密钥库中。
假设您从Susan那里收到了:
Count.class
文件的已签名JAR文件sCount.jar
,以及Example.cer
。即使这些文件是您创建的,并且实际上并未传输到任何地方,您可以模拟成其他人而不是创建者和发送者Susan。假装您现在是Ray。作为Ray,您将创建一个名为exampleraystore
的密钥库,并使用它来导入带有别名susan
的证书。
每当您使用指定尚不存在的密钥库的keytool
命令时,将创建一个密钥库。因此,我们可以通过单个keytool
命令创建exampleraystore
并导入证书。请在命令窗口中执行以下操作。
Example.cer
的目录。(实际上,您应该已经在那里,因为本课程假设您在一个目录中保持不变。)keytool -import -alias susan -file Example.cer -keystore exampleraystore
由于密钥库尚不存在,因此将创建它,并提示您输入密钥库密码;键入您想要的任何密码。
keytool
命令将打印出证书信息并要求您进行验证,例如通过将显示的证书指纹与从另一个(受信任的)信息来源获取的指纹进行比较。(每个指纹是一个相对较短的数字,可以唯一且可靠地标识证书。)例如,在现实世界中,您可以打电话给Susan并询问她指纹应该是什么。她可以通过执行以下命令获取她创建的Example.cer
文件的指纹
keytool -printcert -file Example.cer
如果她看到的指纹与keytool
向您报告的指纹相同,则证书在传输过程中未被修改。在这种情况下,您允许keytool
继续在密钥库中放置一个受信任的证书条目。该条目包含来自文件Example.cer
的公钥证书数据,并被分配别名susan
。