Use this topic to configure Federal Information Processing Standard Java Secure Socket Extension files.
About this task In WebSphere Application Server, the Java Secure Socket Extension (JSSE) provider used is the IBMJSSE2 provider. This provider delegates encryption and signature functions to the Java Cryptography Extension (JCE) provider. Consequently, IBMJSSE2 does not need to be Federal Information Processing Standard (FIPS)-approved because it does not perform cryptography. However, the JCE provider requires FIPS-approval.WebSphere Application Server provides a FIPS-approved IBMJCEFIPS provider that IBMJSSE2 can utilize. The IBMJCEFIPS provider that is shipped in WebSphere Application Server Version 6 supports the following Secure Sockets Layer (SSL) ciphers:
Even though the IBMJSSEFIPS provider is still present, the runtime does not use this provider. If IBMJSSEFIPS is specified as a contextProvider, WebSphere Application Server automatically defaults to the IBMJSSE2 provider (with the IBMJCEFIPS provider) for supporting FIPS in Version 6. When enabling FIPS in the server Global security panel, the runtime always uses IBMJSSE2, despite the contextProvider that you specify for SSL (IBMJSSE, IBMJSSE2 or IBMJSSEFIPS). Also, because FIPS requires the SSL protocol to be TLS, the runtime always uses Transport Layer Security (TLS) when FIPS is enabled, regardless of the SSL protocol setting in the SSL repertoire. This simplifies the FIPS configuration in Version 6 because an administrator needs to enable only the FIPS flag in the Global security panel to enable all transports using SSL.
Change the com.ibm.security.useFIPS property value from false to true in the profile_root/properties/sas.client.props file.
/properties/soap.client.props file. Set the following property:
#com.ibm.ssl.contextProvider=IBMJSSE2 com.ibm.ssl.contextProvider=IBMJSSEFIPSYou are using an administrative client if you use the startServer.sh or stopServer.sh commands instead of the administrative console to start and stop the server.
Note: Specifying IBMJSSEFIPS indicates that the client wants to be in FIPS mode, and the runtime uses the IBMJSSE2 provider in combination with the IBMJCEFIPS provider.
java.security includes the provider.
Edit the java.security file to insert the IBMJCEFIPS provider (com.ibm.crypto.fips.provider.IBMJCEFIPS) before the IBMJCE provider, and also renumber the other providers in the provider list. The IBMJCEFIPS provider must be in the java.security file provider list.
The java.security file is located in the profile_root directory. The IBM SDK java.security file looks like the following example after completing this step:
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.7=com.ibm.crypto.pkcs11.provider.IBMPKCS11If you are using the Sun JDK, the java.security file looks like the following example after completing this step:
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
Note: Netscape Version 4.7.x and earlier versions might not support TLS.
com.ibm.ssl.contextProvider=IBMJSSEFIPS
Note: When enabling FIPS, you cannot configure cryptographic token devices in the SSL repertoires. IBMJSSE2 must use IBMJCEFIPS when utilizing cryptographic services for FIPS. The following FIPS 140-2 approved cryptographic providers that are the only devices that are supported with the FIPS option:
The relevant certificates are listed on the NIST Web site: Cryptographic Module Validation Program FIPS 140-1 and FIPS 140-2 Pre-validation List To unconfigure the FIPS provider, reverse the changes that you made in the previous steps. After you reverse the changes, verify that you have made the following changes to the
sas.client.props ,
soap.client.props, and
java.security files:
sas.client.props file, change the
com.ibm.security.useFIPS value to
false.
soap.client.props file, uncomment the
com.ibm.ssl.contextProvider=IBMJSSE2 property and comment out the
com.ibm.ssl.contextProvider=IBMJSSEFIPS property. These changes are shown in the following example:
com.ibm.ssl.contextProvider=IBMJSSE2 #com.ibm.ssl.contextProvider=IBMJSSEFIPS
java.security file, change the FIPS provider to a non-FIPS provider.If you are using the IBM SDK
java.security file, change the first provider to a non-FIPS provider as shown in the following example:
#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.IBMPKCS11If you are using the Sun JDK
java.security file, change the third provider to a non-FIPS provider as shown in the following example:
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
Related reference
Global security settings
Related information
Cryptographic Module Validation Program FIPS 140-1 and FIPS 140-2 Pre-validation List