在 SSL 中进行安全安装以检索客户机签署者

WebSphere® Application Server 环境中的每个概要文件都包含由创建概要文件时创建的唯一长寿命根证书签署的唯一链式证书。 此证书将替换随 WebSphere Application Server V 6.1 一起提供的缺省自签名证书以及在版本 6.1之前的发行版中提供的缺省哑元证书。 将某一概要文件联合到 Deployment Manager 中时,就会将根签署证书的签署者添加到单元的公共信任库中,以便为该根证书签署的所有证书建立信任关系。

最佳实践: 请勿在生产环境中使用本主题中引用的哑元密钥库和信任库文件。 这些文件包含相同的证书并且到处使用,这样不安全。 此外,请更改密钥库和信任库的密码,以便不使用缺省密码 WebAS

缺省情况下,客户机不信任 WebSphere Application Server 环境中不同概要文件中的服务器。 也就是说,它们不包含这些服务器的根签署者。 但是,可以执行以下操作来帮助建立这种信任:

  1. 启用签署者交换提示,以在尝试连接期间接受签署者。
  2. 在建立连接之前,运行 retrieveSigners 实用程序以从该系统中下载签署者。
  3. 将服务器概要文件的 /config/cells/<cell_name>/nodes/<node_name> 目录中的 trust.p12 文件复制到客户机的 /etc 目录中。 如果新的文件名和密码不同,那么更新 SSL 配置以反映它们。 复制上述文件时将为客户机提供 trust.p12(该文件包含该单元中所有服务器的签署者)。 另外,对于仍在使用 DummyClientTrustFile.jks 文件的后备级别客户机可能也需要执行此步骤。 在这种情况下,可能需要更改 sas.client.propssoap.client.props 文件,以反映新的信任库、信任库密码和类型 (PKCS12)。
要让客户机执行频带内签署者交换,必须将 ssl.client.props 文件指定为 SSL 配置中的 com.ibm.SSL.ConfigURL 属性。 对于受管客户机将自动执行此操作。 在连接期间,签署者被指定为频带内;而在运行时被指定为频带外。 还必须将 com.ibm.ssl.enableSignerExchangePrompt 属性设置为 true
提示: 您可以配置证书到期监视器以替换即将到期的服务器证书。 有关客户机如何从配置中检索新签署者的更多信息,请参阅 SSL 中的证书到期监视

使用签署者交换提示来从客户机中检索签署者

当客户机中还没有签署者连接至某一进程时,可以启用签署者交换提示。 对于每个唯一证书和每个节点,都会显示一次签署者交换提示。 在添加节点的签署者之后,该签署者会保留在客户机信任库中。 以下样本代码显示用于从客户机中检索签署者的签署者交换提示:[AIX Solaris HP-UX Linux Windows]
C:\WASX_e0540.11\AppServer\profiles\AppSrv01\bin\serverStatus -all ADMU0116I: Tool information is being logged in file
C:\WASX_e0540.11\AppServer\profiles\AppSrv01\logs\serverStatus.log ADMU0128I: Starting tool with the 
AppSrv01 profile ADMU0503I:
Retrieving server status for all servers ADMU0505I: Servers found in configuration: 
ADMU0506I: Server name: dmgr
*** SSL SIGNER EXCHANGE PROMPT *** SSL signer from target host 192.168.1.5 is not found in truststore
C:\WebSphere\AppServer\profiles\AppSrv01\etc\trust.p12.

Here is the signer information (verify the digest value matches what is  displayed at the server):
Subject DN:    CN=myhost.austin.ibm.com, OU=myhostNode01Cell, OU=myhostNode01, O=IBM, C=US
Issuer DN:     CN=myhost.austin.ibm.com, OU=Root Certificate, OU=myhostNode01Cell, OU=myhostNode01, 
O=IBM, C=US
Serial number: 2510775664686266 Expires:       Thu Feb 19 15:58:49 CST 2009
SHA-1 Digest:  2F:96:70:23:08:58:6F:66:CD:72:61:E3:46:8B:39:D4:AF:62:98:C3
MD5 Digest:    04:53:F8:20:A2:8A:6D:31:D0:1D:18:90:3D:58:B9:9D

Subject DN: CN=myhost.austin.ibm.com, OU=Root Certificate, OU=myhostNode01Cell,
OU=myhostNode01, O=IBM, C=US Issuer DN:  CN=myhost.austin.ibm.com, OU=Root
Certificate, OU=myhostNode01Cell, OU=myhostNode01, O=IBM, C=US Serial number:
2510773295548841 Expires: Tue Feb 15 15:58:46 CST 2028 SHA-1 Digest:
2F:96:70:23:08:58:6F:66:CD:72:61:E3:46:8B:39:D4:AF:62:98:C3
MD5 Digest: 04:53:F8:20:A2:8A:6D:31:D0:1D:18:90:3D:58:B9:9D
Add signer to the truststore now? (y/n) y A retry of the request may need to occur. ADMU0508I:
The Deployment Manager "dmgr" is STARTED
[IBM i]
/QIBM/UserData/WebSphere/AppServer/V85/profiles/default/bin/serverStatus -all ADMU0116I:
Tool information is being logged in file 
/QIBM/UserData/WebSphere/AppServer/V85/profiles/default/logs/serverStatus.log ADMU0128I:
Starting tool with the default profile ADMU0503I: Retrieving server status for all servers 
ADMU0505I: Servers found in
configuration: ADMU0506I: Server name: server1
*** SSL SIGNER EXCHANGE PROMPT *** SSL signer from target host 192.168.1.5 
is not found in truststore
/QIBM/UserData/WebSphere/AppServer/V85/profiles/default/etc/trust.p12.  
Here is the signer information
(verify the digest value matches what is  displayed at the server):
Subject DN:    CN=myhost.austin.ibm.com, OU=myhostNode01Cell, OU=myhostNode01, 
O=IBM, C=US Issuer DN:
CN=myhost.austin.ibm.com, O=IBM, C=US
Serial number: 2510775664686266 Expires:       Thu Feb 19 15:58:49 CST 2009
SHA-1 Digest:  2F:96:70:23:08:58:6F:66:CD:72:61:E3:46:8B:39:D4:AF:62:98:C3
MD5 Digest:    04:53:F8:20:A2:8A:6D:31:D0:1D:18:90:3D:58:B9:9D

Subject DN: CN=myhost.austin.ibm.com, OU=Root Certificate, OU=myhostNode01Cell,
OU=myhostNode01, O=IBM, C=US Issuer DN:  CN=myhost.austin.ibm.com, OU=Root
Certificate, OU=myhostNode01Cell, OU=myhostNode01, O=IBM, C=US Serial number:
2510773295548841 Expires: Tue Feb 15 15:58:46 CST 2028 SHA-1 Digest:
2F:96:70:23:08:58:6F:66:CD:72:61:E3:46:8B:39:D4:AF:62:98:C3
MD5 Digest: 04:53:F8:20:A2:8A:6D:31:D0:1D:18:90:3D:58:B9:9D

Add signer to the truststore now? (y/n) y A retry of the request may need to occur.
ADMU0508I: The Application Manager "server1" is STARTED
[IBM i]
/QIBM/UserData/WebSphere/AppServer/V85/Base/profiles/default/bin/serverStatus -all 
ADMU0116I: Tool information is being logged in file
/QIBM/UserData/WebSphere/AppServer/V85/Base/profiles/default/logs/serverStatus.log 
ADMU0128I: Starting tool with the default profile
ADMU0503I: Retrieving server status for all servers ADMU0505I: Servers found in configuration: 
ADMU0506I: Server name: server1
*** SSL SIGNER EXCHANGE PROMPT *** SSL signer from target host 192.168.1.5 
is not found in truststore
/QIBM/UserData/WebSphere/AppServer/V85/Base/profiles/default/etc/trust.p12.  
Here is the signer information
(verify the digest value matches what is  displayed at the server):  Subject DN:
CN=myhost.austin.ibm.com, OU=myhostNode01Cell, OU=myhostNode01, O=IBM, C=US
Issuer DN:     CN=myhost.austin.ibm.com, OU=Root Certificate, OU=myhostNode01Cell, 
OU=myhostNode01, O=IBM, C=US
Serial number: 2510775664686266 Expires:       Thu Feb 19 15:58:49 CST 2009
SHA-1 Digest:  2F:96:70:23:08:58:6F:66:CD:72:61:E3:46:8B:39:D4:AF:62:98:C3
MD5 Digest:    04:53:F8:20:A2:8A:6D:31:D0:1D:18:90:3D:58:B9:9D

Subject DN: CN=myhost.austin.ibm.com, OU=Root Certificate, OU=myhostNode01Cell,
OU=myhostNode01, O=IBM, C=US Issuer DN:  CN=myhost.austin.ibm.com, OU=Root
Certificate, OU=myhostNode01Cell, OU=myhostNode01, O=IBM, C=US Serial number:
2510773295548841 Expires: Tue Feb 15 15:58:46 CST 2028 SHA-1 Digest:
2F:96:70:23:08:58:6F:66:CD:72:61:E3:46:8B:39:D4:AF:62:98:C3
MD5 Digest: 04:53:F8:20:A2:8A:6D:31:D0:1D:18:90:3D:58:B9:9D
Add signer to the truststore now? (y/n) y A retry of the request may need to occur. 
ADMU0508I: The Application Manager Manager
"server1" is STARTED
要自动执行此过程,请参阅 retrieveSigners 命令

当提示您接受签署者时,可能会发生套接字超时,并且连接可能会中断。 因此,可能需要对请求进行消息 A 重试。 在应答提示后显示。 此消息告诉用户需要重新提交该请求。 不应频繁发生此问题,而某些协议可能比其他协议更容易发生此问题。

如果等待提示响应时套接字超时,那么可能需要重试请求。 如果需要重试,请注意,在输入了 (y)(这表示已将签署者添加到信任库中)的情况下,将不会重新显示该提示。

验证所显示的 SHA-1 摘要,它是由服务器发送的证书的签名。 如果在服务器上查看该证书,那么验证是否显示相同的 SHA-1 摘要。

如果不想显示提示,那么可以禁用提示。而通过运行 retrieveSigners 实用程序来检索特定单元的所有签署者。 通过使用此客户机脚本来引用公共信任库,可以将签署者从远程密钥库下载到任何本地密钥库中,也可以将签署者从本地密钥库上载到远程密钥库中。 有关更多信息,请参阅 SSL 中的缺省链式证书配置

使用 retrieveSigners 实用程序来为客户机下载签署者

可以运行 retrieveSigners 实用程序来从指定的客户机密钥库的远程密钥库中检索所有签署者。

要引用的典型远程密钥库为 NodeDefaultTrustStore。

信任库中包含使客户机能够与它的进程相连的签署者。 retrieveSigners 实用程序可以指向目标配置中属于目标进程作用域内的任何密钥库,并且可以将签署者(仅包括证书条目)下载到 ssl.client.props 文件中的任何客户机密钥库。

从前发行版中获取客户机和服务器的签署者

对于转换用户: 当来自版本 7.0 之前的发行版的客户机连接到当前发行版时,该客户机必须获取签署者才能成功握手。 使用先前发行版的 WebSphere Application Server 的客户机无法像在当前发行版中一样轻松地获取签署者。 可以将 Deployment Manager 公共信任库复制到后备级别客户机或服务器中,然后将 SSL 配置重新配置为直接引用该信任库。 这个类型为 PKCS12 的公共信任库位于配置库中的 /config/cells/<cell_name>/nodes/<node_name> 目录中,它的缺省密码为 WebAS

要在单个 trust.p12 密钥库文件中收集某个单元的所有签署者,请完成以下步骤:

  1. 复制服务器上的 trust.p12 密钥库文件,然后在客户机上复制它。 客户机直接从用于指定前发行版的 SSL 属性的 sas.client.propssoap.client.props 文件中引用该文件。
  2. 更改客户机端密钥库密码,使它跟与已复制的密钥库相关联的缺省单元名相匹配。
  3. 在客户机配置中,将 trust.p12 文件的缺省密钥库类型更改为 PKCS12

下面两个代码样本显示一个视图在更改前后的情况。

前发行版[AIX Solaris HP-UX Linux Windows]sas.client.props 的缺省 SSL 配置
com.ibm.ssl.protocol=SSL com.ibm.ssl.keyStore=file\:///  C\:/SERV1_601_0208/AppServer/profiles/AppSrv01/etc/
DummyClientKeyFile.jks com.ibm.ssl.keyStorePassword={xor}CDo9Hgw\= com.ibm.ssl.keyStoreType=JKS
com.ibm.ssl.trustStore=
file\:/// C\:/SERV1_601_0208/AppServer/profiles/AppSrv01/etc/DummyClientTrustFile.jks
com.ibm.ssl.trustStorePassword={xor}CDo9Hgw\=
com.ibm.ssl.trustStoreType=JKS
[IBM i]
com.ibm.ssl.protocol=SSL com.ibm.ssl.keyStore=/QIBM/UserData/WebSphere/AppServer/V85/Base/
profiles/default/
etc/DummyClientKeyFile.jks
com.ibm.ssl.keyStorePassword={xor}CDo9Hgw\= com.ibm.ssl.keyStoreType=JKS com.ibm.ssl.trustStore=
/QIBM/UserData/WebSphere/AppServer/
V85/Base/profiles/default/etc/DummyClientTrustFile.jks com.ibm.ssl.trustStorePassword={xor}CDo9Hgw\=
com.ibm.ssl.trustStoreType=JKS
[IBM i]
com.ibm.ssl.protocol=SSL com.ibm.ssl.keyStore=/QIBM/UserData/WebSphere/AppServer/V85/Base/
profiles/default/etc/
DummyClientKeyFile.jks com.ibm.ssl.keyStorePassword={xor}CDo9Hgw\= com.ibm.ssl.keyStoreType=JKS 
com.ibm.ssl.trustStore=
/QIBM/UserData/WebSphere/AppServer/V85/Base/profiles/default/etc/DummyClientTrustFile.
jks com.ibm.ssl.trustStorePassword=
{xor}CDo9Hgw\= com.ibm.ssl.trustStoreType=JKS
需要对客户机[AIX Solaris HP-UX Linux Windows]/etc 目录中的公共信任库文件进行 SSL 配置更改
com.ibm.ssl.protocol=SSL com.ibm.ssl.keyStore=file\:/// C\:/SERV1_601_0208/AppServer/profiles/AppSrv01/etc/
DummyClientKeyFile.jks com.ibm.ssl.keyStorePassword={xor}CDo9Hgw\= com.ibm.ssl.keyStoreType=JKS
com.ibm.ssl.trustStore=file\:/// C\:/SERV1_601_0208/AppServer/profiles/AppSrv01/etc/trust.p12
com.ibm.ssl.trustStorePassword=myhostNode01Cell com.ibm.ssl.trustStoreType=PKCS12
[IBM i]
com.ibm.ssl.protocol=SSL com.ibm.ssl.keyStore=/QIBM/UserData/WebSphere/AppServer/V85/Base/
profiles/default/etc/
DummyClientKeyFile.jks com.ibm.ssl.keyStorePassword={xor}CDo9Hgw\= com.ibm.ssl.keyStoreType=JKS
com.ibm.ssl.trustStore=/QIBM/UserData/WebSphere/AppServer/V85/Base/profiles/default/etc/trust.p12
com.ibm.ssl.trustStorePassword=myhostNode01Cell com.ibm.ssl.trustStoreType=PKCS12
[IBM i]
com.ibm.ssl.protocol=SSL com.ibm.ssl.keyStore=/QIBM/UserData/WebSphere/AppServer/V85/Base/
profiles/default/etc/
DummyClientKeyFile.jks com.ibm.ssl.keyStorePassword={xor}CDo9Hgw\= com.ibm.ssl.keyStoreType=JKS
com.ibm.ssl.trustStore=/QIBM/UserData/WebSphere/AppServer/V85/Base/profiles/default/etc/
trust.p12 com.ibm.ssl.trustStorePassword=myhostNode01Cell com.ibm.ssl.trustStoreType=PKCS12
提示: 您可以运行 PropsFilePasswordEncoder 脚本,该脚本位于 /bin 目录中以对密码进行编码。

还可以在 soap.client.props 文件中进行这些更改,并指定 key.p12 文件来替代 DummyClientKeyFile.jks 文件。 但是,还必须更改 keyStorePassword 和 keyStoreType 值,以使它们与缺省 key.p12 文件中的相应值相匹配。

WebSphere Application Server V 7.0之前的发行版中,必须编辑服务器上的 SSL 配置以替换公共信任库。 服务器使用的 trust.p12 文件中还必须包含用于前发行版级别的服务器之间建立连接所需要的缺省伪证书签署者。 可能需要从 DummyServerKeyFile.jks 文件中手动抽取缺省证书,然后将该证书导入到已添加至配置的 trust.p12 文件中。