配置联邦信息处理标准 Java 安全套接字扩展文件

使用本主题来配置联邦信息处理标准 Java™ 安全套接字扩展文件。

关于此任务

在 WebSphere® Application Server 中,使用的 Java 安全套接字扩展 (JSSE) 提供程序是 IBMJSSE2 提供程序。此提供程序将加密和签名功能委派给 Java 密码术扩展 (JCE) 提供程序执行。因此,由于 IBMJSSE2 不执行密码术功能,所以它不需要通过联邦信息处理标准 (FIPS) 核准。但是,JCE 提供程序需要通过 FIPS 核准。
WebSphere Application Server 提供了已通过 FIPS 核准并且可供 IBMJSSE2 使用的 IBMJCEFIPS 提供程序。WebSphere Application Server V9.0 中提供的 IBMJCEFIPS 提供程序支持下列 SSL 密码:
  • SSL_RSA_WITH_AES_128_CBC_SHA
  • SSL_RSA_WITH_3DES_EDE_CBC_SHA
  • SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA
  • SSL_DHE_RSA_WITH_AES_128_CBC_SHA
  • SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
  • SSL_DHE_DSS_WITH_AES_128_CBC_SHA
  • SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA

在服务器的“SSL 证书和密钥管理”面板上启用使用美国联邦信息处理标准 (FIPS) 算法选项后,运行时将总是使用 IBMJSSE2,而不考虑您对 SSL 指定的 contextProvider 值(IBMJSSE 或 IBMJSSE2S)。并且,由于 FIPS 要求 SSL 协议是 TLS,所以,启用 FIPS 后,运行时将总是使用 TLS,而不考虑 SSL 指令表中的 SSL 协议设置。在 V9.0 中,管理员只需要在服务器的“SSL 证书和密钥管理”面板中启用使用美国联邦信息处理标准 (FIPS) 算法选项就可以使所有传输都能够使用 SSL,这简化了 FIPS 配置。

过程

  1. 单击安全性 > SSL 证书和密钥管理 > 管理 FIPS
  2. 选择启用 FIPS 140-2 选项,然后单击应用 此选项使 IBMJSSE2 和 IBMJCEFIPS 成为活动的提供程序。
  3. 适应必须访问企业 Bean 的 Java 客户机。

    profile_root/properties/ssl.client.props 文件中的 com.ibm.security.useFIPS 属性值从 false 更改为 true

  4. 确保 profile_root/properties/ssl.client.props 文件中的 com.ibm.ssl.protocol 属性已设置为 TLS。
  5. 确保 java.security 文件包含该提供程序。 [AIX Solaris HP-UX Linux Windows][IBM i]

    编辑 java.security 文件,在 IBMJCE 提供程序前面插入 IBMJCEFIPS 提供程序(com.ibm.crypto.fips.provider.IBMJCEFIPS),并对提供程序列表中的其他提供程序进行重新编号。IBMJCEFIPS 提供程序必须包含在 java.security 文件提供程序列表中。

    [IBM i]java.security 文件在 profile_root/properties 目录中。

    [AIX Solaris HP-UX Linux Windows][z/OS]java.security 文件在 WASHOME/java/jre/lib/security 目录中。

    完成此步骤后,IBM® SDK java.security 文件内容如以下示例所示: [AIX Solaris HP-UX Linux Windows][z/OS]
    security.provider.1=com.ibm.crypto.fips.provider.IBMJCEFIPS 
    security.provider.2=com.ibm.crypto.provider.IBMJCE
    security.provider.3=com.ibm.jsse.IBMJSSEProvider
    security.provider.4=com.ibm.jsse2.IBMJSSEProvider2
    security.provider.5=com.ibm.security.jgss.IBMJGSSProvider
     security.provider.6=com.ibm.security.cert.IBMCertPath
    security.provider.7=com.ibm.crypto.pkcs11impl.provider.IBMPKCS11Impl
    security.provider.8=com.ibm.security.cmskeystore.CMSProvider
    security.provider.9=com.ibm.security.jgss.mech.spnego.IBMSPNEGOsecurity.provider.10=com.ibm.security.sasl.IBMSASL 
    security.provider.11=com.ibm.xml.crypto.IBMXMLCryptoProvider 
    security.provider.12=com.ibm.xml.enc.IBMXMLEncProvider  
    security.provider.13=org.apache.harmony.security.provider.PolicyProvider
    [IBM i]
    security.provider.1=com.ibm.crypto.fips.provider.IBMJCEFIPS
    security.provider.2=com.ibm.crypto.provider.IBMJCE
    security.provider.3=com.ibm.jsse.IBMJSSEProvider
    security.provider.4=com.ibm.jsse2.IBMJSSEProvider2
    security.provider.5=com.ibm.security.jgss.IBMJGSSProvider
    security.provider.6=com.ibm.security.cert.IBMCertPath
    security.provider.7=com.ibm.i5os.jsse.JSSEProvider
    security.provider.8=com.ibm.crypto.pkcs11.provider.IBMPKCS11
    security.provider.9=com.ibm.security.jgss.mech.spnego.IBMSPNEGOsecurity.provider.10=com.ibm.security.cmskeystore.CMSProvider
    security.provider.11=com.ibm.security.sasl.IBMSASL
    security.provider.12=com.ibm.xml.crypto.IBMXMLCryptoProvider
    security.provider.13=com.ibm.xml.enc.IBMXMLEncProvider
    security.provider.14=org.apache.harmony.security.provider.PolicyProvider
    [AIX Solaris HP-UX Linux Windows][IBM i]如果您正在使用 Oracle Java SE 开发包,那么在完成此步骤之后,java.security 文件如以下示例所示:
    security.provider.1=sun.security.provider.Sun  
    security.provider.2=com.ibm.crypto.fips.provider.IBMJCEFIPS
    security.provider.3=com.ibm.crypto.provider.IBMJCE
    security.provider.4=com.ibm.jsse.IBMJSSEProvider
    security.provider.5=com.ibm.jsse2.IBMJSSEProvider2
    security.provider.6=com.ibm.security.jgss.IBMJGSSProvider
    security.provider.7=com.ibm.security.cert.IBMCertPath
    #security.provider.12=com.ibm.crypto.pkcs11.provider.IBMPKCS11
    security.provider.8=com.ibm.security.jgss.mech.spnego.IBMSPNEGOsecurity.provider.9=com.ibm.security.cmskeystore.CMSProvider 
    security.provider.10=com.ibm.security.sasl.IBMSASL 
    security.provider.11=com.ibm.xml.crypto.IBMXMLCryptoProvider 
    security.provider.12=com.ibm.xml.enc.IBMXMLEncProvider   
    [z/OS]

    编辑 java.security 文件以取消带有 IBMJCEFIPS 提供程序的行的注释,并对其余提供程序列表进行重新编号。IBMJCEFIPS 提供程序必须包含在 java.security 文件提供程序列表中。java.security 文件在 WASHOME/java/jre/lib/security 目录中。要编辑该文件,请完成下列步骤:

    [z/OS]
    1. java.security 文件复制到有写许可权的目录中。
    2. 编辑 java.security 文件以注释掉带有 IBMJCE 提供程序的行,取消带有 IBMJCEFIPS 提供程序的行的注释,然后保存文件。

      在完成此步骤之前,IBM 软件开发包 (SDK) 的 java.security 文件内容如以下示例所示:

      #security.provider.1=com.ibm.crypto.fips.provider.IBMJCEFIPS
      security.provider.1=com.ibm.crypto.provider.IBMJCE
      security.provider.2=com.ibm.jsse.IBMJSSEProvider
      security.provider.3=com.ibm.jsse2.IBMJSSEProvider2
      security.provider.4=com.ibm.security.jgss.IBMJGSSProvider
      security.provider.5=com.ibm.security.cert.IBMCertPath
      security.provider.6=com.ibm.crypto.pkcs11.provider.IBMPKCS11
      security.provider.7=com.ibm.security.cmskeystore.CMSProvider
      security.provider.8=com.ibm.security.jgss.mech.spnego.IBMSPNEGO
    3. 对单元中的每个 Java 虚拟机 (JVM) 配置 security.overridePropertiesFilejava.security.properties 系统属性。 添加下列属性-值对:
      表 1. 对属性进行定制以便指定 java.security 文件的新位置.

      此表描述用于为 java.security 文件指定新位置的定制属性。

      属性名称
      security.overridePropertiesFile true
      java.security.properties 指定 java.security 文件的新位置。
      必须对 Deployment Manager、Node Agent 和其他应用程序服务器指定上一组系统属性。对于 Deployment Manager 来说,请对控制方和服务方都指定这组系统属性。对于 Node Agent 来说,对控制方指定这组系统属性。对于所有应用程序服务器来说,对附属方、控制方和服务方指定这组系统属性。例如,完成以下步骤以便对应用程序服务器上的控制方指定这些系统属性:
      1. 在管理控制台中,请单击服务器 > 应用程序服务器 > server_name
      2. 在“服务器基础结构”下,单击 Java 和进程管理 > 进程定义 > 控制
      3. 在“其他属性”下,单击 Java 虚拟机 > 定制属性
      4. 以两组“名称/值”对形式输入属性。
      5. 单击保存

下一步做什么

完成这些步骤后,FIPS 核准的 JSSE 或 JCE 提供程序将提供增强的加密功能。但是,在使用 FIPS 核准的提供程序时:
  • 缺省情况下,Microsoft Internet Explorer 可能未启用 TLS。要启用 TLS,请打开 Internet Explorer 浏览器并单击工具 > Internet 选项。在“高级”选项卡上,选择“使用 TLS 1.0”选项。
    注: Netscape V4.7.x 和早期版本可能不支持 TLS。
  • 在“SSL 证书和密钥管理”面板上选择使用联邦信息处理标准 (FIPS) 选项后,轻量级第三方认证 (LTPA) 令牌格式不向后兼容前发行版的 WebSphere Application Server。但是,可以从先前版本的应用程序服务器导入 LTPA 密钥。
  • 注: 当前的 WebSphere 限制是,不会评估密钥中的密钥长度是否符合 FIPS sp800-131a。如果密钥在密钥库中,那么通过使用 {WebSphere_install_dir}\java\jre\bin 目录中的 iKeyman 或使用其他密钥库工具检查密钥长度。
[AIX Solaris HP-UX Linux Windows]注意: 在启用 FIPS 选项后,如果尝试停止 WebSphere Application Server,那么可能会发生以下错误:
ADMU3007E: Exception com.ibm.websphere.management.exception.ConnectorException
如果 java.security 文件中的以下条目先前已移除或注释掉,请取消对该条目的注释,然后重新启动服务器:
security.provider.2=com.ibm.crypto.provider.IBMJCE
注: 启用 FIPS 后,不能在 SSL 指令表中配置密码令牌设备。在使用 FIPS 的密码服务时,IBMJSSE2 必须使用 IBMJCEFIPS。
FIPS 选项支持的设备仅包括 FIPS 140-2 核准的下列密码提供程序:
  • IBMJCEFIPS(证书 376)
  • IBM Cryptography for C (ICC)(证书 384)
以下 NIST Web 站点上列示了相关证书:Cryptographic Module Validation Program FIPS 140-1 and FIPS 140-2 Pre-validation List
要取消对 FIPS 提供程序的配置,请撤销您在先前步骤中所作的更改。撤销更改后,验证是否对 sas.client.propssoap.client.propsjava.security 文件作了下列更改:
  • ssl.client.props 文件中,必须将 com.ibm.security.useFIPS 值更改为 false
  • [AIX Solaris HP-UX Linux Windows][z/OS]java.security 文件中,必须将 FIPS 提供程序更改为非 FIPS 提供程序。
    如果正在使用 IBM SDK java.security 文件,那么必须将第一个提供程序更改为非 FIPS 提供程序,如以下示例所示:
    #security.provider.1=com.ibm.crypto.fips.provider.IBMJCEFIPS
    security.provider.1=com.ibm.crypto.provider.IBMJCE
    security.provider.2=com.ibm.jsse.IBMJSSEProvider
    security.provider.3=com.ibm.jsse2.IBMJSSEProvider2
    security.provider.4=com.ibm.security.jgss.IBMJGSSProvider
    security.provider.5=com.ibm.security.cert.IBMCertPath
    #security.provider.6=com.ibm.crypto.pkcs11.provider.IBMPKCS11
    如果正在使用 Sun JDK java.security 文件,那么必须将第三个提供程序更改为非 FIPS 提供程序,如以下示例所示:
    security.provider.1=sun.security.provider.Sun
    security.provider.2=com.ibm.security.jgss.IBMJGSSProvider
    security.provider.3=com.ibm.crypto.fips.provider.IBMJCEFIPS 
    security.provider.4=com.ibm.crypto.provider.IBMJCE
    security.provider.5=com.ibm.jsse.IBMJSSEProvider
    security.provider.6=com.ibm.jsse2.IBMJSSEProvider2
    security.provider.7=com.ibm.security.cert.IBMCertPath
    #security.provider.8=com.ibm.crypto.pkcs11.provider.IBMPKCS11
  • [IBM i]编辑 java.security 文件,移除 FIPS 提供程序,对各个提供程序进行重新编号,如以下示例所示:
    security.provider.1=sun.security.provider.Sun
    #security.provider.2=com.ibm.crypto.fips.provider.IBMJCEFIPS
    security.provider.2=com.ibm.crypto.provider.IBMJCE
    security.provider.3=com.ibm.jsse.IBMJSSEProvider
    security.provider.4=com.ibm.jsse2.IBMJSSEProvider2
    security.provider.5=com.ibm.security.jgss.IBMJGSSProvider
    security.provider.6=com.ibm.security.cert.IBMCertPath
    security.provider.7=com.ibm.i5os.jsse.JSSEProvider
    #security.provider.8=com.ibm.crypto.pkcs11.provider.IBMPKCS11
    security.provider.8=com.ibm.security.jgss.mech.spnego.IBMSPNEGO
[z/OS]使用 FIPS 提供程序时,IBM 软件开发包 (SDK) 可能会发出一条错误消息,指出证书不正确。虽然会导致此错误消息的原因众多,但是请复审安全性配置并考虑下列其中一个操作:
  • 如果当前密码套件级别是“强”,请将其降低为“中”。
    避免故障 避免故障: 可为不同的环境级别(例如节点或服务器级别)更改密码套件级别。应限制对需要更改的环境级别的更改。gotcha

    要更改密码套件,请参阅保护质量设置文档中的密码套件组信息。如果将密码套件级别更改为“中”,请保存更改并使更改同步。如果选择了在 SSL 配置更改时动态更新运行时选项,那么不需要重新启动服务器。但是,如果未选择该选项,那么必须重新启动服务器才能使更改生效。在 SSL 配置更改时动态更新运行时选项在 SSL 证书和密钥管理面板上的管理控制台中可用。要访问该面板,请单击安全性 > SSL 证书和密钥管理

  • 对于 z/OS® 操作系统,请安装安全性级别 3 FMID JCPT3A1。

    安全性级别 3 FMID JCPT3A1 是 FIPS 140-2 批准的密码提供程序在 z/OS 操作系统上的实现。


指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_fips
文件名:tsec_fips.html