文档

Java™ 教程
隐藏目录
生成密钥
路径:Java SE中的安全特性
课程:文件交换
章节:合同发送方的步骤

生成密钥

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

本课程假设您还没有密钥对。您将创建一个名为examplestanstore的密钥库,并创建一个带有新生成的公钥/私钥对(其中公钥在证书中)的条目。

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

keytool -genkey -alias signLegal -keystore examplestanstore

密钥库工具会提示您输入密钥库密码、您的可分辨名称信息和密钥密码。以下是提示信息;加粗部分表示您应输入的内容。

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的密钥库,并分配了所输入的密码。该命令为具有姓名为Stan Smith和法律部门的组织单位的实体生成了一个公钥/私钥对。

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

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


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