Set up a Keyring using a Third Party Signed Certificate 
search cancel

Set up a Keyring using a Third Party Signed Certificate 

book

Article ID: 141128

calendar_today

Updated On:

Products

Top Secret

Issue/Introduction

Top Secret Commands to set up a keyring using a third party signed certificate

Environment

Top Secret

Resolution

Commands to set up a keyring using a third party signed certificate:  
 

Generate a Certificate:

TSS GENCERT(acid) DIGICERT(certU) SUBJECTN('o="company" CN=" selfsigned cert"  OU="department" C="US" ')


** Plug in the information in the lower case values.

** If the LABLCERT field is not used then the certificate label will default to the DIGICERT name. 
    This is the best thing to do  because it avoids the possibility of specifying the digicert name when
    the LABLNAME should be specified in application parmfile data.  There may be applications that
    will require the certificate specific label.  Follow the application documentation.

Create a CSR(Certificate Signing Request).  This puts the certificate in a dataset in PKCS#10 format.  PKCS#10 does not contain the private key:

TSS GENREQ(acid) DIGICERT(certU) DCDSN('unsigned.cert)


***   Note: The dataset cannot be preallocated.

*** CAUTION NOTE*** Do not delete the original certU.  It is holding the private key.  If original certificate is
                                  deleted before pairing the keys then the private key will be forever gone.

Send the certificate in the dataset to the Certificate Authority to be signed.

Receive the signed certificate from the CA(Certificate Authority) and put it into a dataset.

Add the certificate back to the owning ACID with a slightly different name.  It is good practice to give the certificates names ending in U for unsigned and S for signed:

TSS ADD(acid) DIGICERT(certS) DCDSN('signed.cert)TRUST



** Note: A message that indicates that the certificate was added with NOTRUST may occur (TSS1573I THE CERTIFICATE <digicertname> SIGNER NOT FOUND. ADDING CERTIFICATE  WITH NOTRUST STATUS).  This is because the signing CA certificate is not in the Top Secret Database yet.  The following TSS REPLACE command should be issued:

TSS REPLACE(acid) DIGICERT(certS) TRUST



The above ADD command paired the keys and there is now a signed certificate with a private key.

Create the KEYRING

TSS ADD(acid) KEYRING(keyring)



** If the LABLRING field in not used then the keyring label will default to the keyring name.
    There may be applications that require the keyring label be a specific value.  Follow
    the application documentation.

Add the certificates to the keyring

TSS ADD(acid) KEYRING(keyring) RINGDATA(owner, certS) USAGE(PERSONAL) DEFAULT



All the CA certificate(s) will also need to to be added to complete the signing chain

TSS ADD(acid) KEYRING(keyring) RINGDATA(CERTAUTH,ca-cert) USAGE(CERTAUTH)



Give the owner of the keyring the following permits to read the keyring and certificates on it

TSS ADD(dept) IBMFAC(IRR.DIGTCERT) <---(skip if previously done)
TSS PER(acid) IBMFAC(IRR.DIGTCERT.LISTRING)
              ACCESS(UPDATE)
TSS PER(acid) IBMFAC(IRR.DIGTCERT.LIST)
              ACCESS(UPDATE)


 
Note: If the owner of the client/personal certificate is not the owner of the keyring then specify
         ACCESS(CONTROL) on the PERMIT commands.

For the SERVER, a copy of the personal certificate needs to be sent to the client.  The following command puts the certificate into a dataset without the private key

TSS EXPORT(acid) DIGICERT(certS) DCDSN('signed.server.cert')



Send the certificate to the client.

The client needs to add this certificate to their keyring.

**Note: Many SERVER/CLIENT information is sent two ways.  In that case each side would send the other their personal certificate.