在服务器之间交换密钥库

要在 IBM® UrbanCode Deploy 服务器与代理程序之间共享具有受保护属性的应用程序或者配置相互认证,请交换每个服务器或代理程序的加密密钥库中的密钥。

开始之前

请确保 Java™ keytool 命令的位置在服务器的 PATH 变量中。

关于此任务

要共享具有受保护属性的应用程序,请导出服务器的密钥并将其导入至每个目标服务器。此过程使导出服务器中的应用程序能够由其他服务器使用。对具有要共享的应用程序的每个服务器重复此过程。

过程

  1. 在第一个服务器上,打开命令行窗口并转至服务器安装 conf 目录。
  2. install/conf/server/installed.properties 文件中找到 encryption.keystore.alias 属性的值。 例如,以下代码显示值 abcdkey1234
    encryption.keystore=../conf/encryption.keystore
    encryption.keystore.alias=abcdkey1234
    在下一个步骤中将需要此别名。
  3. 运行以下命令以将服务器密钥导入至临时密钥库。 必须在一行上输入此命令。
    keytool -importkeystore -srckeystore encryption.keystore 
      -srcstorepass srcPassword 
      -srcstoretype jceks 
      -alias alias 
      -destkeystore temp.keystore 
      -deststorepass tempPassword 
      -deststoretype jceks
    • 对于 srcPassword,请指定服务器密钥库的密码。缺省密码为 changeit
    • 对于 alias,请指定 encryption.keystore.alias 属性的值。
    • 对于 tempPassword,请指定临时密钥库的密码。稍后将需要此密码。
  4. 将临时密钥库(在先前示例中已命名为 temp.keystore)复制到第二个服务器上的 install/conf/ 文件夹。
  5. 在第二个服务器上,打开命令行窗口并转至服务器安装 conf 目录。
  6. 运行以下命令以将临时密钥库中的密钥导入至服务器密钥库。 必须在一行上输入此命令。
    keytool -importkeystore -srckeystore temp.keystore 
      -srcstorepass tempPassword 
      -srcstoretype jceks 
      -alias alias 
      -destkeystore encryption.keystore 
      -deststorepass destPassword 
      -deststoretype jceks
    • 对于 tempPassword,请指定临时密钥库的密码。
    • 对于 alias,请指定第一个服务器(而不是当前服务器)的 encryption.keystore.alias 属性。
    • 对于 destPassword,请指定当前服务器密钥库的密码。
  7. 可选: 从每个服务器中删除临时密钥库文件。

结果

来自第一个服务器密钥库的加密密钥现在位于第二个服务器密钥库中。因此,第二个服务器现在可以解密来自第一个服务器的应用程序。
通过在第二个服务器上运行以下命令,可以验证第二个服务器密钥库是否具有该密钥:
keytool -list -keystore encryption.keystore 
  -storepass password 
  -storetype jceks
对于 password,请使用服务器密钥库的密码。
此命令列示服务器密钥库中的密钥。如果已成功复制密钥,那么列表中至少包括两个密钥:这两个服务器各提供一个。将按照各自服务器的 encryption.keystore.alias 属性列示这些密钥。例如,以下输出显示了两个密钥:
Keystore type: jceks
Keystore provider: IBMJCE

Your keystore contains 2 entries

efghkey5678, Oct 15, 2013, SecretKeyEntry,
abcdkey1234, Nov 22, 2013, SecretKeyEntry,

下一步做什么

重复此过程以在其他服务器之间复制密钥。

反馈