文档

Java™ 教程
隐藏目录
生成密钥
教程:Java SE中的安全特性
课程:对代码进行签名并授予权限
章节:代码签名者的步骤

生成密钥

如果代码签名者尚未拥有适合签署代码的私钥,则首先必须生成该私钥,以及一个相应的公钥,可以由代码接收方的运行时系统用于验证签名。

由于本课程假设您尚未拥有这些密钥,因此您将创建一个名为examplestore的密钥库,并创建一个包含新生成的公/私钥对的条目(公钥在证书中)。

在命令窗口中键入以下命令以创建名为examplestore的密钥库并生成密钥:

keytool -genkey -alias signFiles -keystore examplestore

您将被要求输入密钥和密钥库的密码。

keytool命令的子部分

让我们看一下keytool的每个子部分的含义。

注意:出于安全原因,您不应在命令行上设置密钥或密钥库密码,因为它们更容易被拦截。

专有名称信息

如果使用上述keystore命令,您将被要求输入专有名称信息。以下是提示;粗体表示您应该键入的内容。

您的名字和姓氏是什么?
  [Unknown]:  Susan Jones 
您的组织单位的名称是什么?
  [Unknown]:  Purchasing 
您的组织的名称是什么?
  [Unknown]:  ExampleCompany 
您所在城市或地区的名称是什么?
  [Unknown]:  Cupertino 
您所在州或省的名称是什么?
  [Unknown]:  CA 
该单位的两字母国家代码是什么?
  [Unknown]:  US 
<CN=Susan Jones, OU=Purchasing, O=ExampleCompany,
    L=Cupertino, ST=CA, C=US> 是否正确?
  [no]:  y 

命令结果

keytool命令在执行命令的同一目录中创建名为examplestore的密钥库(如果不存在)。该命令为具有Susan Jones为常用名称和Purchasing为组织单位的实体生成了一个公/私钥对。

该命令创建一个自签名证书,包括公钥和专有名称信息。(您提供的专有名称将用作证书中的“主题”字段。)该证书将在90天内有效,如果您不指定-validity选项,则默认有效期为90天。该证书与keystore中由别名signFiles引用的私钥关联。

自签名证书对于开发和测试应用程序非常有用。但是,用户会收到一个警告,说明应用程序是使用不受信任的证书签名的,并被询问是否要运行该应用程序。为了让用户更有信心运行您的应用程序,使用由认可的证书颁发机构颁发的证书。

注意:如果接受选项的默认值或希望提示输入各种值,该命令可以更简短。每当执行keytool命令时,未指定默认值的选项将使用默认值,并提示输入任何必需的值。对于genkey命令,具有默认值的选项包括alias(默认为mykey)、validity(90天)和keystore(您的主目录中名为.keystore的文件)。必需的值包括dnamestorepasskeypass


上一页: 创建包含类文件的JAR文件
下一页: 签署JAR文件