Generate Keys

在对包含contract文件的Contract.jar JAR 文件进行签名之前,如果还没有合适的密钥可用,则需要生成密钥。您需要使用私钥对 JAR 文件进行签名,而收件人需要相应的公钥来验证签名。

本课假定您还没有密钥对。您将创建一个名为examplestanstore的密钥库,并使用新生成的公共/私有密钥对(证书中包含公共密钥)创建一个条目。

现在,假设您是 Stan Smith,并且您在 Example2 公司的法律部门工作。在命令窗口中键入以下内容,以创建名为examplestanstore的密钥库并为 Stan Smith 生成密钥:

keytool -genkey -alias signLegal -keystore examplestanstore

密钥库工具会提示您 Importing 密钥库密码,专有名称信息和密钥密码。以下是提示:粗体字表示您应 Importing 的内容。

Enter keystore password:   <password>
What is your first and last name?
  [Unknown]:  Stan Smith 
What is the name of your organizational unit?
  [Unknown]:  Legal 
What is the name of your organization?
  [Unknown]:  Example2 
What is the name of your City or Locality?
  [Unknown]:  New York
What is the name of your State or Province?
  [Unknown]:  NY 
What is the two-letter country code for this unit?
  [Unknown]:  US 
Is <CN=Stan Smith, OU=Legal, O=Example2, L=New York, ST=NY, C=US> correct?
  [no]:  y 
    
Enter key password for <signLegal>
        (RETURN if same as keystore password):

前面的keytool命令在执行命令的同一目录中创建名为examplestanstore的密钥库(假定指定的密钥库尚不存在)并为其分配 Importing 的密码。该命令为实体的公用名称/专用密钥对生成,该实体的专有名称具有 Stan Smith 的通用名称和 Legal 的组织单位。

您刚刚创建的自签名证书包括公用密钥和专有名称信息。 (自签名证书是由与证书中的公钥相对应的私钥签名的证书.)此证书的有效期为 90 天。如果您未指定-validity 选项,则这是默认有效期。该证书与别名signLegal所引用的密钥库条目中的私钥相关联。私钥被分配 Importing 的密码。

自签名证书对于开发和测试应用程序很有用。但是,会警告用户使用不可信证书对应用程序进行签名,并询问他们是否要运行该应用程序。为了使用户更有信心运行您的应用程序,请使用由公认的证书颁发机构颁发的证书。