Convert RACF digital certificate setup commands for NSS and AT-TLS to Top Secret from IBM Redbook;
Certificate definition for NSS and AT-TLS
First, examine the CA certificate definition that is shown in Example 9-1. This certificate is the self-signed CA certificate with which we sign our SITE certificate for the NSS daemon.
Example 9-1
racdcert certauth gencert
subjectsdn( o('IBM Corporation')
ou('ITSO Certificate Authority')
C('US'))
NOTBEFORE(DATE(2008-11-10))
NOTAFTER(DATE(2012-11-11))
keyusage(certsign)
withlabel('CS19 ITSO CA1')
setropts raclist(DIGTCERT) refresh
racdcert certauth list(label('CS19 ITSO CA1')
TSS GENCERT(CERTAUTH) DIGICERT(itsoca) SUBJECTN(‘o=”IBM Corporation” ou=”ITSO Certificate Authority” C=”US”’) NBDATE(11/10/28) NADATE(11/10/28) KEYUSAGE(CERTSIGN) LABLCERT('CS19 ITSO CA1')
TSS LIST(CERTAUTH) DIGICERT(itsoca)
Next, examine the shared SITE certificate that we used for several servers, such as FTP and TN3270, on behalf of SSL/TLS. We decided to use the same SITE certificate to represent the NSS server during the SSL/TLS flows.
Example9-2 shows the JCL that we used to create the NSS server certificate.
Example 9-2 SITE certificate for SSL/TLS communication between NSS server and client
racdcert site gencert subjectsdn(cn('ITSO.IBM.COM') -
o('IBM Corporation') -
ou('ITSO CS19 Shared SITE') -
C('US')) -
NOTBEFORE(DATE(2008-11-11)) -
NOTAFTER(DATE(2012-11-11)) -
withlabel('CS19 ITSO SharedSite1') -
signwith(certauth label('CS19 ITSO CA1')
racdcert site list(label('CS19 ITSO SharedSite1'))
TSS GENCERT(CERTSITE) DIGICERT(itsosite) SUBJECTN(‘CN=”ITSO.IBM.COM” o=”IBM Corporation” ou=”ITSO CS19 Shared SITE” C=”US”’) NBDATE(11/10/28) NADATE(11/10/28) KEYUSAGE(CERTSIGN) LABLCERT('CS19 ITSO SharedSite1') SIGNWITH(CERTAUTH,itsoca)
TSS LIST(CERTSITE) DIGICERT(itsosite)
Example9-3 shows the JCL that we used to create the key ring for AT-TLS and to attach the certificates to that key ring.
racdcert ID(TCPIP) ADDRING(SharedRing1)
racdcert ID(TCPIP) CONNECT(CERTAUTH -
LABEL('CS19 ITSO CA1') -
RING(SharedRing1) -
USAGE(CERTAUTH)
racdcert ID(TCPIP) CONNECT(SITE -
LABEL('CS19 ITSO SharedSite1') -
RING(SharedRing1) -
DEFAULT -
USAGE(PERSONAL)
setropts raclist(DIGTRING) refresh
setropts raclist(DIGTCERT) refresh
racdcert listring(SharedRing1) id(TCPIP)
TSS ADD(TCPIP) KEYRING(shrring1) LABLRING(SharedRing1)
TSS ADD(TCPIP) KEYRING(shrring1) RINGDATA(CERTAUTH,itsoca) USAGE(CERTAUTH)
TSS ADD(TCPIP) KEYRING(shrring1) RINGDATA(CERTSITE,itsosite) USAGE(PERSONAL) DEFAULT
TSS LIST(TCPIP) KEYRING(shrring1)
IKED certificate definition for NSS client
To create the key ring for the NSS server and connect the required certificates to NSSD’s key ring, complete the following steps:
TSS EXPORT(CERTSITE) DIGICERT(itsosite) DCDSN('CS02.CERT.EXPORT32') FORMAT(PKCS12DER) PKCSPASS('security')
TSS REMOVE(CERTSITE) DIGICERT(itsosite)
TSS LIST(CERTSITE) DIGICERT(itosite)
TSS ADD(NSSD) KEYRING(itsoring) LABLRING(NSSD_keyring)
TSS ADD(NSSD) KEYRING(itsoring) RINGDATA(CERTSITE,itsosite) USAGE(PERSONAL)
TSS LIST(NSSD) KEYRING(itsoring)
9.2.6 Configuring authorizations for NSS
TSS ADD(TCPIP) UID(0) HOME(‘/’) GROUP(TCPGRP) DFLTGRP(TCPGRP)
TSS ADD(STC) PROCNAME(NSSD) ACID(NSSD)
Permit the NSSD user ID to SYS1.PARMLIB, as shown in the following example:
PERMIT SYS1.PARMLIB ID(NSSD) ACCESS(READ)
TSS ADD(owningacid) IBMFAC(IRR.) Already done in previous step.
NSS IPSec (IKED) client
To authorize an NSS IPSEC (IKED) client, complete the following steps:
TSS ADD(NSS32A) UID(?) HOME(/u/nss32a) OMVSPGM(/bin/sh)
TSS ADD(NSS32A) PROFILE(SYS1)
TSS ADD(NSS32A) GROUP(omvs_group_acid) DFLTGRP(omvs_group_acid)
CONNECT NSSXML GROUP(SYS1) OWNER(HAIMO) AUTHORITY(JOIN) +
UACC(ALTER)
TSS ADD(NSSXML) PROFILE(SYS1)
TSS ADD(NSSXML) GROUP(omvs_group_acid) DFLTGRP(omvs_group_acid)
ALU NSSXML PASSWORD(NSSPASS) NOEXPIRED
PASSWORD USER(NSS32A) NOINTERVAL
TSS REPLACE(NSSXML) PASSWORD(NSSPASS,0)
ADDSD 'NSS32A.**' UACC(NONE) OWNER(NSS32A)
SETROPTS REFRESH RACLIST(TSOPROC ACCTNUM TSOAUTH)
TSS ADD(owningacid) DSN(NSS32A.)
TSS ADD(owningacid) SERVAUTH(EZB.)
TSS PERMIT(NSS32A) SERVAUTH(EZB.NSS.SC33.SC32_TCPIPA.IPSEC.CERT) ACCESS(READ)
This class uses the following syntax:
EZB.NSS.<NSSD MVS System ID>.<NSS Client Symbolic Name>.CERT
Design and diagram this scenario carefully and assign meaningful naming conventions to it. You need a class for each client. Alternatively, you can wildcards, but
you lose some granularity and control when using wildcards.
Example 9-12 Authorizing user IDs to new SERVAUTH facility class for NSS
RDEFINE SERVAUTH EZB.NSS.SC33.SC32_TCPIPA.IPSEC.NETMGMT UACC(NONE)
PERMIT EZB.NSS.SC33.SC32_TCPIPA.IPSEC.NETMGMT CLASS(SERVAUTH) ID(NSS32A) ACCESS(READ)
SETROPTS RACLIST(SERVAUTH) REFRESH
SETROPTS GENERIC(SERVAUTH) REFRESH
TSS PERMIT(NSS32A) SERVAUTH(EZB.NSS.SC33.SC32_TCPIPA.IPSEC.NETMGMT) ACCESS(READ)
Note that the syntax of this second class is similar to the syntax for Certificate Services. However, there is an extra IPSEC segment. This SERVAUTH class uses the following syntax:
EZB.NSS.<NSSD MVS System ID>.<NSS Client Symbolic Name>.IPSEC.NETMGMT
Example 9-14 shows our definition. Example 9-14
SERVAUTH Resource profile for NSS client’s CA certificate
RDEFINE SERVAUTH EZB.NSSCERT.SC33.IKE$DAEMON$ON$SC32.HOST UACC(NONE)
PERMIT EZB.NSSCERT.SC33.IKE$DAEMON$ON$SC32.HOST CLASS(SERVAUTH) ID(NSS32A) SETROPTS RACLIST(SERVAUTH) REFRESH
SETROPTS GENERIC(SERVAUTH) REFRESH
TSS PER(NSS32A) SERVAUTH(EZB.NSSCERT.SC33.IKE+DAEMON+ON+SC32.HOST)
Notice the unusual syntax of the certificate label field in the SERVAUTH and PERMIT definitions. Because our label contains lowercase characters, we need to ensure that our SERVAUTH definitions are created with uppercase characters. Furthermore, because our label contains blanks, we need to represent those blanks with dollar signs ($). Such a representation of a label is called a mapped label name. A mapped label name imposes the following strict requirements: – All lowercase alphabetics in a label name must be converted to uppercase.
– Certain characters in a certificate label must be mapped to the dollar sign ($).
The following characters are affected by this rule:
– Asterisk (*)
– Percent sign (%)
– Ampersand (&)
– Blank
Tip: We ran the RDEFINE and the PERMIT statements from the TSO ISPF environment. As a result, even if we entered the label in lowercase, our definitions were successful because TSO converts the alphabetics to uppercase automatically.
For more information about mapped label names, see z/OS Communications Server: IP Configuration Guide, SC27-3650.
TSS PERMIT(CS01) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.CONTROL) ACCESS(READ)
TSS PERMIT(CS02) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.CONTROL) ACCESS(READ)
TSS PERMIT(CS03) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.CONTROL) ACCESS(READ)
TSS PERMIT(CS04) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.CONTROL) ACCESS(READ)
TSS PERMIT(CS05) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.CONTROL) ACCESS(READ)
TSS PERMIT(CS06) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.CONTROL) ACCESS(READ)
TSS PERMIT(CS07) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.CONTROL) ACCESS(READ)
TSS PERMIT(CS08) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.CONTROL) ACCESS(READ)
TSS PERMIT(CS09) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.CONTROL) ACCESS(READ)
TSS PERMIT(CS10) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.CONTROL) ACCESS(READ)
TSS PERMIT(CS01) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.DISPLAY) ACCESS(READ)
TSS PERMIT(CS02) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.DISPLAY) ACCESS(READ)
TSS PERMIT(CS03) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.DISPLAY) ACCESS(READ)
TSS PERMIT(CS04) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.DISPLAY) ACCESS(READ)
TSS PERMIT(CS05) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.DISPLAY) ACCESS(READ)
TSS PERMIT(CS06) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.DISPLAY) ACCESS(READ)
TSS PERMIT(CS07) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.DISPLAY) ACCESS(READ)
TSS PERMIT(CS08) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.DISPLAY) ACCESS(READ)
TSS PERMIT(CS09) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.DISPLAY) ACCESS(READ)
TSS PERMIT(CS10) SERVAUTH(EZB.NETMGMT.SC33.SC32_TCPIPA.IPSEC.DISPLAY) ACCESS(READ)
Note the following syntax of this SERVAUTH resource:
– EZB.NETMGMT.<NSSD MVS System ID>.<NSS Client Symbolic Name>.IPSEC.CONTROL
– EZB.NETMGMT.<NSSD MVS System ID>.<NSS Client Symbolic Name>.IPSEC.DISPLAY
The syntax that is shown in Example 9-17 is quite different from what we have seen before, as shown in the following example:
EZB.NETMGMT.<NSS Server SYSID>.<NSS Server SYSID>.NSS.DISPLAY
Note that the NSS MVS system ID represents two of the fields in the resource profile.
Important:
The following display commands are used for NSS management: The ipsec command with its various options The nssctl command
Authorization for both commands is provided through the resource profile, as shown in the following example:
EZB.NETMGMT.<NSS Server SYSID>.<NSS Server SYSID>.NSS.DISPLAY
Although both commands are used for the NSS IPSec (IKED) discipline, the XML discipline takes advantage of only the nssctl command.
If user CS02 wants to display information about the IKE daemon at the NSS server node with the ipsec -w display command, the resource profile that is shown in Example 9-18 must be defined.
Example 9-18
SERVAUTH profile to display IKE at server with ipsec -w display
rdefine SERVAUTH EZB.NETMGMT.SC33.SC33.IKED.DISPLAY
PERMIT EZB.NETMGMT.SC33.SC33.IKED.DISPLAY CLASS(SERVAUTH) ID(CS01,CS02,CS03, CS04,CS05,CS06,CS07,CS09,CS10) ACC(READ)
setropts generic(servauth) refresh
setropts raclist(servauth) refresh
TSS PERMIT(CS01) SERVAUTH(EZB.NETMGMT.SC33.SC33.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS02) SERVAUTH(EZB.NETMGMT.SC33.SC33.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS03) SERVAUTH(EZB.NETMGMT.SC33.SC33.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS04) SERVAUTH(EZB.NETMGMT.SC33.SC33.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS05) SERVAUTH(EZB.NETMGMT.SC33.SC33.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS06) SERVAUTH(EZB.NETMGMT.SC33.SC33.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS07) SERVAUTH(EZB.NETMGMT.SC33.SC33.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS08) SERVAUTH(EZB.NETMGMT.SC33.SC33.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS09) SERVAUTH(EZB.NETMGMT.SC33.SC33.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS10) SERVAUTH(EZB.NETMGMT.SC33.SC33.IKED.DISPLAY) ACCESS(READ)
Tip: Until now, all the SERVAUTH resource profiles have been defined on the NSS server node, SC33. This pattern changes with the next SERVAUTH resource profile that we define on the NSS client node.
TSS PERMIT(CS01) SERVAUTH(EZB.NETMGMT.SC32.SC32.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS02) SERVAUTH(EZB.NETMGMT.SC32.SC32.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS03) SERVAUTH(EZB.NETMGMT.SC32.SC32.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS04) SERVAUTH(EZB.NETMGMT.SC32.SC32.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS05) SERVAUTH(EZB.NETMGMT.SC32.SC32.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS06) SERVAUTH(EZB.NETMGMT.SC32.SC32.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS07) SERVAUTH(EZB.NETMGMT.SC32.SC32.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS08) SERVAUTH(EZB.NETMGMT.SC32.SC32.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS09) SERVAUTH(EZB.NETMGMT.SC32.SC32.IKED.DISPLAY) ACCESS(READ)
TSS PERMIT(CS10) SERVAUTH(EZB.NETMGMT.SC32.SC32.IKED.DISPLAY) ACCESS(READ)
Tips: Although the numerous authorizations that we describe here might seem tedious, we show them in detail to emphasize the following critical points:
- The numerous individual SERVAUTH profiles and authorizations provide a great deal of control and security. To understand them well, it is necessary to provide this level of detail. However, after you understand the concepts, you can use wildcards in many of the fields to reduce the amount of definition that is required.
-The definitions require detailed planning. As described in 9.2.1, “Preliminary tasks overview” on page 339, two of the planning steps are to prepare a logical network diagram and to complete a worksheet that contains the necessary information for these definitions. This preliminary work is useful to expediting the steps that are described in 9.2.6, “Configuring authorizations for NSS” on page 351.
-If you worked with IPSec and IP Filtering, the task of setting up NSSD for IPSec (IKED) clients becomes simple.
NSS XML client RACF user ID
The authorization tasks in this section apply only to the NSS XML client. Complete the following steps:
TSS ADD(NSS32A) UID(?) HOME(/u/nssxml) OMVSPGM(/bin/sh)
TSS ADD(NSS32A) PROFILE(SYS1)
TSS ADD(NSS32A) GROUP(omvs_group_acid) DFLTGRP(omvs_group_acid)
ALU NSSXML PASSWORD(XMLPASS) NOEXPIRED
PASSWORD USER(NSSXML) NOINTERVAL
TSS REPLACE(NSSXML) PASSWORD(XMLPASS,0)
ADDSD 'NSSXML.**' UACC(NONE) OWNER(NSSXML)
SETROPTS REFRESH RACLIST(TSOPROC ACCTNUM TSOAUTH)
TSS ADD(owningacid) DSN(NSSML.)