+

Search Tips   |   Advanced Search

(zos)

RACF keyring setup


Use Java to create a RACFInputStream for a RACF keystore

During the SSL authentication process, WebSphere Application Server considers a certificate that connects as a PERSONAL certificate as a KeyEntry. We can use the certificate as an end-user certificate in a SSL handshake because the private key is available.

WebSphere Application Server considers a certificate that connects as a CERTAUTH certificate as a TrustedCertEntry and treats the certificate as a Certificate Authority (CA). Keyrings require certificates that connect as PERSONAL and CA certificates that connect as CERTAUTH. Certificates that connect as SITE are not supported in this release.

A RACF keyring that a Java Secure Socket Extension (JSSE) client and server can use for both trust and key information is shown in the following sample code:

Certificate Label Name Cert Owner USAGE    DEFAULT
---------------------- ---------- -------- -------
PersonalEndUserCert    ID(USERID) PERSONAL YES
PersonalEndUserCACert  CERTAUTH   CERTAUTH NO

We must add the certification path provider to the Java environment to construct certificate chains from certificates that WebSphere Application Server reads from the Resource Access Control Facility (RACF). Add the following line to the java.security file provider list:

If one of the RACF certificates fails to load, the keystore is not loaded. We must remove any unwanted certificates from the keyring. The RACFInputStream contains three parameters:

The following code example shows the RACFInputStream script passing in a user ID, a ring ID, and a null password directly:

import com.ibm.crypto.provider.RACFInputStream;
 String ksfname;
char[] storePass = null;
               RACFInputStream riStream = new RACFInputStream(System.getProperty("user.name"), ksfname,                                                 storePass);
KeyStore racfKeyStore = KeyStore.getInstance("JCERACFKS");
racfKeyStore.load(riStream, storePass);                                      riStream.close();
In the previous example, the system property user.name is referenced to provide the userID that WebSphere Application Server passes to RACF. This example is not typical.

For more information about running the RACFInputStream script, see the document z/OS Unique Considerations for the Java 2 SDK, Standard Edition, v 6.0. A link to this z/OS document is provided in the Related Links section of this topic.


Access a RACFInputStream using URLStreamHandler

In this release, we can access data through user-defined classes with the URLStreamHandler object. WAS can define the classes that access the data with the system property java.protocol.handler.pkgs. To access data that resides in a Service Authorization Facility (SAF) RACF keyring, use the safkeyring URL with the associated classes.

To use the URLStreamHandler class to create a RACFInputStream, define the following Java property :

For the IBM Java Cryptography Extension (IBMJCE) provider to provide cryptographic support, set the property to the following value:

For the IBMJCE4758 provider to provide cryptographic support, set the property to the following value:

We can use a URL to specify a stream handler in the java.policy file. The jarsigner utility also accepts a URL for the -keystore parameter. When certificates from a RACF keyring verify signed jar files, we can specify that WebSphere Application Server must use the keyring as an input stream to the keystore in the java.policy file, as shown in the following example code:

In this example,

The Java Virtual Machine (JVM) must be started with the java.protocol.handler.pkgs property set to one of the values described previously, so that WAS can call the appropriate URLStreamHandler. The following example shows the jarsigner utility using a safkeyring URL:

jarsigner -keystore safkeyring://myracfid/my_key_ring -signedjar
ibmjceproviders.jar ibmjceprovider.jar ibmprovider -storetype JCERACFKS 

For more information on inserting or updating information in the RACF External Security Manager, refer to the RACDCERT command in the following publications:


Related tasks

  • Secure specific application servers


    Related information:

    z/OS Unique Considerations for the Java 2 SDK, Standard Edition, v 6.0