RACF Configuration
RACF configuration requires the assistance of your RACF and networking administrators. The two main components in this part of the configuration are a personal certificate and the AT-TLS rules that control which ports are to be secured.
Personal Certificate
To configure RACF, you must have a personal certificate and the user ID which starts the CICS region, and you also must be granted read access to this certificate.
Example
The following JCL illustrates the requirements for one possible configuration. In this example, the certificate named BWCP_Server_Cert is the personal certificate that is used to secure the connection. It has been exported with its private key included as a P12 file.
The signing certificate TIBCO Software Inc CA is exported as a DER-formatted certificate without its private key because it is not needed. It is unnecessary to expose the signing certificate outside of RACF.
//#JOBNAME JOB (&SYSUID),'CERT CREATE',CLASS=A //GENCERT EXEC PGM=IKJEFT01 //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * RACDCERT GENCERT CERTAUTH - SUBJECTSDN( - OU('TIBCO Software Inc CA') - CN('TIBCO Software Inc Mainframe Server Root CA') - O('TIBCO Software Inc.') - L('Palo Alto') - SP('CA') - C('US') ) - SIZE(2048) - NOTAFTER( DATE(2030-02-04) TIME(23:59:59) ) - WITHLABEL('TIBCO Software Inc CA') - KEYUSAGE(CERTSIGN HANDSHAKE DATAENCRYPT DOCSIGN) RACDCERT ID(TCPIP) GENCERT - This id may be an id you use to own all of your application certs if you choose SUBJECTSDN( - OU('BWCP_Server_Cert') - O('TIBCO Software Inc.') - L('Palo Alto') - SP('CA') - C('US') ) - SIZE(4096) - See IBM RACDCERT GENCERT doc on this. Allowed maximum values: 512, 1024, 2048, 4096 NOTAFTER( DATE(2030-02-04) TIME(15:50:00) ) - WITHLABEL('BWCP_Server_Cert') - SIGNWITH(CERTAUTH LABEL('TIBCO Software Inc CA')) - Use this as the LABEL in subsequent CONNECT and EXPORT commands KEYUSAGE(HANDSHAKE DATAENCRYPT DOCSIGN) RACDCERT ID(TIBUSER) ADDRING(Personal_TIBUSER) RACDCERT CONNECT(CERTAUTH LABEL('TIBCO Software Inc CA') - RING(Personal_TIBUSER) USAGE(CERTAUTH)) ID(TIBUSER) RACDCERT CONNECT(ID(TIBUSER) LABEL('BWCP_Server_Cert') + RING(Personal_TIBUSER) DEFAULT) ID(TIBUSER) SETROPTS RACLIST(DIGTCERT, DIGTRING) REFRESH To export the certificate and the signing CA to datasets for transfer to the client: //EXPORT EXEC PGM=IKJEFT01,COND=(2,LT) //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * RACDCERT EXPORT(LABEL('BWCP_Server_Cert')) ID(TCPIP) - FORMAT(PKCS12DER) DSN('TIBUSER.BWCP.SERVER.CERT.DER') - PASSWORD('password') RACDCERT EXPORT(LABEL('TIBCO Software Inc CA')) CERTAUTH - FORMAT(CERTDER) DSN('TIBUSER.BWCP.CA.DER') /* //
AT-TLS Configuration with Rules
After the personal certificate is created, you must configure the z/OS TCP/IP stack application transparent TLS feature to secure the connection.
AT-TLS configuration is covered in the z/OS Communications Server bookshelf, which even includes a configuration assistant to simplify the process.
With the assistance of your z/OS network administrator, you might customize the set of rules shown in the following example so that your port or ports are secured by the personal certificate created previously.
Example
TTLSGroupAction grp_Action { TTLSEnabled On Trace 2 # Log Errors to syslogd } # Common StartUp Group that new Rules may use # Shows how each connection maps to policy TTLSGroupAction grp_StartUp { TTLSEnabled On Trace 6 # Log Errors and Info messages to syslogd } # Common Diagnostic Group that a problem Rule may use # Shows AT-TLS events and result of each System SSL call TTLSGroupAction grp_Diagnostic { TTLSEnabled On Trace 255 # Log Error, Info, Event and Flow to syslogd } # Common Environment that most servers could use TTLSEnvironmentAction Generic_Server_Env { HandshakeRole Server TTLSKeyRingParms { Keyring Server_Ring } } ################################################################### # # # BWCP Specific Rules and Actions # # # ################################################################### # Server # ################################################################### TTLSRule BWCP_Server { LocalAddr ALL RemoteAddr ALL LocalPortRange 6810-6819 RemotePortRange 1024-65535 # Jobname (do not know, do not care) Direction Inbound Priority 255 TTLSGroupActionRef grp_Action TTLSEnvironmentActionRef BWCP_Env_Action_Server TTLSConnectionActionRef BWCP_Connection_Action_Server } # BWCP Environment TTLSEnvironmentAction BWCP_Env_Action_Server { HandshakeRole Server TTLSKeyringParms { # In this configuration (non-z/OS client), this cannot be a shared # keyring with a site certificate. It must be a keyring and # certificate owned by the userid assigned to the application. # Keyring Personal_TIBUSER } } # BWCP Connections TTLSConnectionAction BWCP_Connection_Action_Server { HandshakeRole Server TTLSCipherParms { V3CipherSuites TLS_RSA_WITH_AES_256_CBC_SHA V3CipherSuites TLS_RSA_WITH_AES_128_CBC_SHA V3CipherSuites TLS_RSA_WITH_3DES_EDE_CBC_SHA } TTLSConnectionAdvancedParms { ApplicationControlled Off HandshakeTimeout 10 ResetCipherTimer 0 SecondaryMap Off } CtraceClearText Off Trace 3 } ################################################################### # Client # ################################################################### TTLSRule OSB_Client { LocalAddr ALL RemoteAddr ALL LocalPortRange 6810-6819 RemotePortRange 1024-65535 # LocalPortRange 0 # any local port, we are not sure # RemotePortRange 0 # any remote port, we are not sure # Jobname (not applicable) Direction Outbound Priority 255 TTLSGroupActionRef grp_Action TTLSEnvironmentActionRef BWCP_Env_Action_Client TTLSConnectionActionRef BWCP_Connection_Action_Client } # BWCP Environment TTLSEnvironmentAction BWCP_Env_Action_Client { HandshakeRole Client TTLSKeyringParms { # In this configuration (non-z/OS client), this cannot be a shared # keyring with a site certificate. It must be a keyring and # certificate owned by the userid assigned to the application. # Keyring Personal_TIBUSER } } # BWCP Connections TTLSConnectionAction BWCP_Connection_Action_Client { HandshakeRole Client TTLSCipherParms { V3CipherSuites TLS_RSA_WITH_AES_256_CBC_SHA V3CipherSuites TLS_RSA_WITH_AES_128_CBC_SHA V3CipherSuites TLS_RSA_WITH_3DES_EDE_CBC_SHA } TTLSConnectionAdvancedParms { ApplicationControlled Off HandshakeTimeout 10 ResetCipherTimer 0 SecondaryMap Off } CtraceClearText Off Trace 3 }