webMethods 10.15 includes Bouncy Castle libraries, but they are either incomplete, outdated, or not properly exposed to the classloader that the pub.security services use. The provided errors indicate missing classes and an unregistered security provider.
Solution
Follow these steps in order. A full Integration Server restart is required after completing the steps.
Step 1: Add the Correct Bouncy Castle JARs
You must manually add the correct versions of the Bouncy Castle JARs to the server's library path.
-
Download the Bouncy Castle "JDK 15+" JARs from the official repository: https://www.bouncycastle.org/latest_releases.html
-
You will need these three JAR files:
-
bcpg-jdk15on-1.68.jar
-
bcprov-jdk15on-1.68.jar
-
bcpkix-jdk15on-1.68.jar
Version 1.68 is recommended for webMethods 10.15. Newer versions may introduce compatibility issues.
-
Copy these JAR files into your Integration Server's lib/jars directory (e.g., SoftwareAG/IntegrationServer/instances/default/lib/jars).
-
Ensure there are no duplicate or older versions of these JARs in any other classpath location, such as your package's code/jars folder, as this will cause conflicts.
Step 2: Configure the Java Security Policy
The BC security provider must be explicitly registered in the Java security policy file.
-
Locate the java.security file for your Integration Server instance. It is typically found in: SoftwareAG/IntegrationServer/instances/default/config/java.security
-
Open the file in a text editor.
-
Find the list of security providers, which starts with security.provider.1=....
-
Add the Bouncy Castle provider to the list. You will need to renumber the subsequent providers. The goal is to have a line like this (usually added around position 3):
security.provider.1=com.softwareag.psec.provider.SagProvider
security.provider.2=sun.security.provider.Sun
security.provider.3=org.bouncycastle.jce.provider.BouncyCastleProvider
security.provider.4=com.sun.crypto.provider.SunJCE
security.provider.5=sun.security.rsa.SunRsaSign
If the SagProvider is already in position 1, leave it there and add the BC provider after it.
Step 3: Ensure Non-FIPS Mode for Initial Testing
While you have tried both modes, the NoSuchProviderException: BC is a strong indicator of a FIPS-mode conflict. The standard BC JARs are not FIPS-compliant. For initial testing and to confirm the solution, ensure the server is running in non-FIPS mode.
-
Check the server's startup parameters in the server.cnf file or your startup script.
-
Ensure the following JVM argument is either not present or is set to false:
-Dcom.softwareag.jce.fips=false
-
If you must run in FIPS mode, you will need to obtain and configure the special FIPS-certified Bouncy Castle libraries, which is a more complex process and likely requires assistance from SoftwareAG support.
Step 4: Restart and Test the Service
-
Perform a full shutdown and then a cold start of the Integration Server. This is critical for the new JARs and security configuration to be loaded.
-
Once the server is fully started, test the pub.security:encrypt service directly from the webMethods Admin UI (Service -> Execute Service).
-
Use a simple test case:
-
encryptionKey: Path to a valid PGP public key file (e.g., pubKey.asc).
-
inputData: A simple string like "Hello, World!".
-
armorEncoding: true
-
withIntegrityCheck: true
Expected Result
If the configuration is correct, the service will execute without throwing an exception. The outputData pipeline variable will contain a valid PGP-encrypted block, starting with:
-----BEGIN PGP MESSAGE-----
If the Problem Persists
If you continue to see the same errors after these steps, the issue is almost certainly a classloader conflict or a residual configuration problem.
-
Double-check for JAR conflicts. Search your entire installed directory for any other versions of bcprov-*.jar, bcpg-*.jar, or bcpkix-*.jar and remove them, keeping only the 1.68 versions in the lib/jars directory.
-
Contact Support. Provide them with the exact errors and the steps you have already taken. There may be a specific patch or known issue (e.g., a bug report like WM-XXXXX) for your exact fix level of webMethods 10.15 that requires a patch from them.