Enabling FIPS 140-3
Enable FIPS 140-3 mode in IBM® Semeru Certified Edition for z/OS® by setting system properties at startup to activate the OpenJCEPlusFIPS provider and enforce NIST cryptographic constraints.
About this task
Enabling FIPS 140-3 mode is achieved by setting two primary system properties at startup. This configuration automatically prioritizes the OpenJCEPlusFIPS provider and enforces the cryptographic constraints defined in the NIST security policy.
Procedure
Results
The application runs in FIPS 140-3 mode with the selected security profile enforcing cryptographic constraints.
What to do next
- Profile enforcement behavior - The behavior of IBM Semeru
Runtime and the OpenJCEPlusFIPS provider varies based on the selected profile. The following table
shows how the runtime handles activation failures and enforcement.
Table 2. Runtime activation failure and enforcement behavior Profile Failure behavior Enforcement logic OpenJCEPlusFIPS.FIPS140-3 Fail-fast. The JVM typically throws an InternalError or a ConfigurationException during provider initialization if the module cannot enter FIPS mode. Non-FIPS algorithms are physically disabled or removed from the provider list. OpenJCEPlusFIPS.FIPS140-3-Strongly-Enforced Balanced. If the self-tests fail, the provider enters an error state, and subsequent cryptographic calls fail. Blocks the use of non-approved algorithms but allows the JVM to start. OpenJCEPlusFIPS.FIPS140-3-Weakly-Enforced Permissive. This is largely for migration. If FIPS cannot activate, it may log a warning and continue using non-FIPS implementations. Allows side-by-side execution of FIPS and non-FIPS algorithms. - Important considerations
- Programmatic overrides
- Once a FIPS profile is loaded, security properties are locked. Any attempt to use
Security.setProperty()orSecurity.insertProviderAt()to bypass the profile results in a SecurityException. - Hardware requirements
- Ensure you are running on a certified 64-bit supported platform. If the platform is not supported, the JVM fails to start when these properties are present.
- Profile extensions
- You can customize security configurations by building upon existing restricted security profiles. This mechanism functions similarly to class inheritance in Java™, where a new profile inherits all properties of a base profile but can selectively override or supplement them. For more information, see FIPS 140-3 enablement guide.
- Additional resources
For more information, see the following resources.
- OpenJCEPlus on GitHub - List of supported services by OpenJCEPlusFIPS
- FIPS 140-3 enablement guide - Detailed configuration instructions