安全套接字层客户机证书认证
想要使用安全套接字层 (SSL) 协议与服务器建立安全连接的客户机软件通过利用 SSL 协议或者称为传输层安全性 (TLS) 的增强协议来执行与 SSL 证书进行 SSL 握手。个人证书可以表示服务器,也可以表示特定客户机,并由认证中心 (CA) 签名以确保正确标识该个人证书。
SSL 确保管理员有可用的 CA 签署者证书,用来为个人证书签名,并且该证书存储在客户机和/或服务器信任库中。在使用 SSL 证书进行连接握手期间,将进行 SSL 客户机证书认证。
- 服务器端必须确定是否将进行客户机认证。必须在服务器的 SSL 配置中启用客户机认证;如果使用了 ORB 间协议 (IIOP),那么还必须在公共安全互操作性 V2 (CSIv2) 配置中启用客户机认证。
- 必须在全局安全性中(而不是在安全域中)进行 CSIv2 配置。
- 必须从客户机的密钥库中抽取客户机的签署者证书,并将其添加至服务器的信任库。
- 必须从服务器的密钥库中抽取服务器的签署者证书,并将其添加至客户机的信任库。
配置 WebSphere 服务器以进行客户机认证
如果服务器端请求客户端发送证书,那么将进行客户机证书认证。可以在 SSL 配置中配置 WebSphere 服务器以进行客户机证书认证。但是,如果需要对 IIOP 进行客户机认证,那么必须在 CSIv2 配置中配置 IIOP。
- 单击 。
- 选择 SSL 配置。
- 在“其他属性”下,选择保护质量 (QoP) 设置。
- 在“客户机认证”下,选择必需。
- 单击确定以保存更改。
- 单击 。
- 在“RMI/IIOP 安全性”下,选择 CSIv2 入站通信。
- 在“CSIv2 传输层”部分的“客户机证书认证”下,选择必需。
- 单击确定以保存更改。
如果设置了客户端以进行客户机认证,那么必须将客户机的签署者证书添加至服务器的信任库。当证书文件中具有客户机的证书时,可以将其添加至服务器的信任库。
- 单击 。
- 选择所配置的用于进行客户机认证的信任库。
- 在“其他属性”下,选择“签署者证书”。
- 单击添加。
- 在“别名”字段中,输入您用以存储证书的别名。
- 在“文件名”框中,输入证书文件的完整路径。
- 单击确定以保存更改。
设置客户端以进行客户机认证
客户机:
管理客户机、瘦客户机或者纯客户机的密钥库中必须具有个人证书。安装 WebSphere® Application Server 时所创建的 WebSphere 客户机缺省密钥库中已经具有个人证书。可以在 ssl.client.props 文件中的 com.ibm.ssl.keyStore 属性中找到此密钥库。客户机密钥库不是由 WebSphere Application Server 管理,因此,可以使用密钥管理实用程序 (IKEYMAN) 或者 Java™ keytool 实用程序将证书抽取到证书文件中。
- 启动 iKeyman。
- 选择 。
- 输入密钥库文件的路径。可以从 ssl.client.props 文件中获取此路径。
- 单击确定。
- 输入密钥库的密码,然后单击确定
- 在“个人证书”下,选择客户机缺省证书。
- 输入证书文件的路径和文件名,然后单击确定。
可以使用其中包含已抽取的证书的文件将签署者添加至服务器的信任库。请遵循“配置 WebSphere 服务器以进行客户机认证”一节中的步骤将该签署者添加至服务器的信任库。
- 启用 SSL:
com.ibm.CSI.performTransportAssocSSLTLSSupported=true com.ibm.CSI.performTransportAssocSSLTLSRequired=false
- 在消息层禁用客户机认证:
com.ibm.CSI.performClientAuthenticationRequired=false com.ibm.CSI.performClientAuthenticationSupported=false
- 在传输层启用客户机认证(这是受支持的,但不是必须这样做):
com.ibm.CSI.performTLClientAuthenticationRequired=false com.ibm.CSI.performTLClientAuthenticationSupported=true
瘦客户机和纯客户机可能未使用 WebSphere Application Server SSL 属性文件 ssl.client.props。它们很有可能使用 Java 系统属性来设置客户机密钥库和信任库。必须将服务器的签署者证书添加至使用 java.net.ssl.trustStore 系统属性指定的信任库。可以使用 keytool 或 iKeyman 来添加签署者证书。必须从 javax.net.ssl.keyStore 系统属性所指定的密钥库中的个人证书中抽取签署者,然后将其添加至服务器的信任库。
javax.net.ssl.keyStore
javax.net.ssl.keyStorePassword
javax.net.ssl.keyStoreType
javax.net.ssl.trustStore
javax.net.ssl.trustStorePassword
javax.net.ssl.trustStoreType
充当客户机的服务器:
客户机可以是一个充当客户机的 WebSphere 服务器。如果情况如此,请确定正在将哪个 SSL 配置用作进行通信的客户端,抽取其证书的签署者并添加至服务器端的信任库。建议您使用根证书签署者。
- 单击“安全性”>“SSL 证书和密钥管理”>“密钥库和证书”。
- 在“密钥库用法”下拉菜单中,选择根证书密钥库。
- 选择 DmgrDefaultRootStore(对于 Network Deployment 服务器)或者 NodeDefaultRootStore(对于应用程序服务器)。
- 在“其他属性”下,选择个人证书。
- 选择缺省根证书(通常称为 root),然后单击抽取。
- 在“证书文件名”框中,输入用于保存证书的文件的完整路径。
- 单击确定进行保存。
可以将所创建的证书文件传送到服务器端,并将其添加至服务器的信任库。
当服务器充当客户机时,客户端服务器需要目标服务器中的签署者。可以使用签署者证书的从端口中检索选项来检索签署者。
- 单击 。
- 从集合中选择服务器的信任库。
- 在“其他属性”下,选择签署者证书。
- 单击从端口检索。
- 输入目标主机名和目标端口名。
- 输入证书的别名。
- 单击检索签署者信息。
- 单击确定进行保存。
您还可以使用 retrieveSignerFromPort 命令从端口中检索签署者。请参阅 AdminTask 对象的 SignerCertificateCommands 命令组以了解有关此命令的更多信息。
设置浏览器以进行客户机认证:
如果已配置 WebSphere Application Server 以进行客户机证书认证,并且已尝试从浏览器来访问服务器,那么浏览器必须具有证书以进行客户机证书认证。如果修改了服务器的缺省 SSL 配置以启用客户机证书认证,那么您无法登录到管理控制台。
可以使用管理控制台为浏览器创建证书。您必须先创建密钥库,然后创建链式证书。创建证书之后,按照浏览器的指示信息来导入证书。浏览器要求添加该链的每一部分以验证该证书,因此,必须抽取根证书并将其添加至该浏览器。请遵循“设置客户端以进行客户机认证”一节中的指示信息,以了解有关抽取根证书的信息。
- 单击 。
- 单击新建。
- 输入密钥库的名称。
- 输入密钥库文件的完整路径。
- 输入密钥库的密码,然后进行确认。
- 单击确定进行保存。
- 单击 。
- 选择您先前所创建的密钥库。
- 在“其他属性”下,单击个人证书。
- 在“创建”按钮下的下拉列表中,选择链式证书。
- 输入证书的别名。
- 提供证书的公共名。该名称是主体集 DN 的“CN=”部分。
- 您可以在其余任何字段中输入信息来构建该链式证书的主体集 DN。
- 单击确定进行保存。
您还可以使用 createKeyStore 命令来创建密钥库。请参阅 AdminTask 对象的 KeyStoreCommands 命令组以了解有关此命令的更多信息。
您还可以使用 createChainedCertificate 命令来创建链式证书。请参阅 AdminTask 对象的 PersonalCertificateCommands 命令组以了解有关此命令的更多信息。
Web 证书认证
配置了 Java 2 Platform, Enterprise Edition (J2EE) Web 模块以进行客户机证书认证时,可以在这些模块上执行证书基本认证。这使用户能够使用证书登录到 Web 模块以认证该证书,然后将其映射至注册表中的用户。
启用 Web 证书认证将要求配置服务器的 SSL 配置,以在安装了该模块的服务器上进行客户机证书认证。
服务器端确定要进行客户机认证。请参阅“配置 WebSphere 服务器以进行客户机认证”一节以了解有关如何配置客户机认证的信息。客户端必须将服务器中的签署者添加至客户机信任库。请参阅“设置客户端以进行客户机认证”一节以了解更多信息。
Web 模块的 web.xml 文件必须支持 web.xml 文件的 login-config 部分将认证方法设置为 CLIENT-AUTH。
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>
必须将该证书映射至注册表中的用户,否则您无法登录到该 Web 模块。
对于本地操作系统用户注册表,必须将证书主体集 DN 的 CN 值映射至本地操作系统用户注册表中的用户。例如,如果证书主体集 DN 为 CN=tester,o=ibm,c=us,那么 tester 是在本地用户注册表中搜索的用户。如果本地注册表中不存在该用户,那么认证将失败。
轻量级目录访问协议 (LDAP) 用户注册表提供了更多选项用于将证书映射至用户身份。LDAP 中的缺省证书映射方式用于 LDAP 注册表项与证书中的主体集 DN 之间进行 DN 精确匹配。例如,如果证书 DN 为 CN=user1,o=ibm,c=us,那么 LDAP 注册表中必须有一个具有精确值的项。LDAP 用户注册表还有一个“证书过滤器”选项,可以提供证书主体集 DN 的特定部分与 LDAP 存储库中的条目的匹配项。有关 LDAP 证书映射的更多详细信息,请阅读“轻量级目录访问协议存储库配置设置”。
在联合存储库配置中,缺省情况下,基于文件的存储库不支持客户机证书登录。要在基于文件的存储库中启用证书映射支持,请遵循“在基于联合存储库文件的存储库中启用客户机证书登录支持”主题中的过程。
联合存储库 LDAP 注册表支持证书映射。它使用 LDAP 用户注册表所使用的映射规则和属性。
如果定制注册表实现了 mapCertificate() 方法,那么定制用户注册表可以将证书映射至用户。