Certificate Authority
A Certificate Authority (CA) acts as the initially trusted shared entity between peers and issues signed certificates to make it possible for each party to trust the other. The CA issues and installs digital certificates and issues certificate signing requests (CSR).
A certificate generally acts as the identity of a server or client and this API can be used to issue server and client certificates for setting up trusted communication channels to the CipherTrust Manager system.
CipherTrust Manager distinguishes between local CAs and external CAs. A local CA can issue signed certificates since the private signing key is stored inside the CipherTrust Manager system. An external CA does not store the private key. Instead an external CA is used as a trusted entity for various interfaces and services inside the system. In this case certificates are issued externally. It is fine to have a mix of both.
The first time a CipherTrust Manager is started, a new local KeySecure root CA
is automatically generated. This CA is used to issue initial server certificates for the interfaces available in the system.
An easy way to inspect the certificate chain is to view the certificates in your browser when you connect to the web interface. All interfaces and services will by default trust this CA, meaning that for interfaces that support client authentication, a client certificate, issued from this initial KeySecure root CA
, will automatically be trusted by the system. If preferred, it is possible to create new local CAs and/or external CAs and use these instead for the internal interfaces and services.
Many CA operations can be performed via the CipherTrust Manager GUI.
Here are a few basic procedures for creating CAs and issuing certificates using the CLI Tool (ksctl).
Creating a Local CA
When creating a new local CA, it remains pending until signed:
ksctl ca locals create --cn "Test CA" --csr-outfile csrfile
This returns a CSR, the key remains with the CipherTrust Manager. This CSR can be signed by an external CA.
To just self-sign the CA with a one year duration, use the id returned in the call above:
ksctl ca locals self-sign --id 3593c53b-fbeb-4edb-b84d-c85526ae2f83 -x 365
Issuing a signed certificate
CipherTrust Manager can only issue certificates for “local” CAs. To create a certificate, a CSR must first be generated.
For the highest level of security, it is usually best for the CSR to be generated externally to CipherTrust Manager so the private key is never exposed. However, you can also select Download CSR from the pending CA on the GUI as this will not include the private key.
For convenience, CipherTrust Manager can create a CSR and private key for you:
$ ksctl ca csr -cn "My Client" --csr-outfile csrfile --key-outfile keyfile
Once you have a CSR, you can have the CipherTrust Manager issue a certificate:
$ ksctl ca locals certs issue --ca-id 3593c53b-fbeb-4edb-b84d-c85526ae2f83 --csr-infile csrfile -x 700 -o client
Note
It is also possible to create the CSR and the private key using any other software, as this API is stateless and doesn't store anything within CipherTrust Manager.
Certificate Expiration Check
CipherTrust Manager inspects the expiration date of each certificate everyday, at a preset system time. CipherTrust Manager then creates list of certificates on the following basis:
Certificates whose expiration dates are within 91 days
This list is logged in theRecordssection once every week
Certificates whose expiration dates are within 7 days
This list is logged in theRecordssection once every day
Certificates which have already expired
This list is logged in theRecordssection once every day
You can also create alarm triggers for these records. For more details, go to Creating Alarm Trigger for Certificate Expiration.
Creating an external CA
To create an external CA you just need to upload the PEM-formatted certificate file:
$ ksctl ca externals upload --cert-infile mycert.pem
Verifying Revocation Status of Client Certificates
CipherTrust Manager can be configured to verify the revocation status of client certificate presented to NAE or KMIP interface before establishing a connection with the client.
To configure the CipherTrust Manager for inspecting client certificate revocation status:
Select
TLS verify client cert
Interface Mode.Enable the Certificate Revocation Check.
A certificate contains an OCSP responder URL and a Certificate Revocation List (CRL) URL, which are used for verifying the revocation status of the certificate.
Let's understand how CipherTrust Manager verifies the revocation status of a certificate and permits/drops connection requests in such cases:
CipherTrust Manager looks the client certificate for OCSP responder URL and CRL URL.
If OCSP URL is present
CipherTrust Manager accesses this URL to verify the revocation status of the Client Certificate.
If OCSP URL is accessible, the status of certificate gets verified successfully, and CipherTrust Manager allows/drops connection request accordingly.
If OCSP URL is not accessible due to any reason, CipherTrust Manager considers the situation as a "Soft Fail". It allows the connection to establish, but reports a warning. This warning audit log and its details can be viewed in the Records.
If OCSP URL is not present, but CRL URL is present
CipherTrust Manager verifies the status of certificate using the CRL, and allows/drops connection request accordingly.
If CRL URL is accessible, the status of certificate gets verified successfully, and CipherTrust Manager allows/drops connection request accordingly.
If CRL URL is not accessible due to any reason, CipherTrust Manager considers the situation as a "Soft Fail". It allows the connection to establish, but reports a warning. This warning audit log and its details can be viewed in the Records.
If both OCSP URL and CRL URL are not present
CipherTrust Manager considers the client certificate to be signed by its local CA, and allows the connection to establish.
Note
In any case, if the certificate is found to be revoked, CipherTrust Manager drops the connection request and logs it in Records.
OCSP and CRL Caching
As stated above, verifying the revocation status of a certificate involves establishing a connection with the URL (OCSP or CRL) present in the certificate, and verifying its revocation status. Once the revocation status of a certificate is verified, CipherTrust Manager stores this information for some preset time.
Let's understand how long this information is stored in and how it is used in this time frame:
For OCSP method
After successfully connecting to the OCSP URL, CipherTrust Manager stores the revocation status of the client certificate for a duration of 5 minutes.
If CipherTrust Manager receives another connection request from the same client within 5 minutes of a previously successful connection, then CipherTrust Manager refers to the cached revocation status value to verify its revocation status.
If CipherTrust Manager recieves another connection request from the same client after 5 minutes of a previously successful connection, then CipherTrust Manager verifies its revocation status through the OCSP URL again.
For CRL method
Each CA promises to update its CRL at the day and time specified in the Next Update field for that CA. While performing a certificate revocation check, the CipherTrust Manager inspects the Next Update value for the CRL associated with each CA on the CipherTrust Manager.
If the Next Update value for that CRL is in the past, the CipherTrust Manager attempts to connect to the CRL distribution point (CDP) for the CA to download the updated CRL.
If the Next Update value for that CRL is in the future, the CipherTrust Manager waits until that specified time to attempt to connect to the CDP and download the updated CRL.
Enabling/Disabling Certificate Revocation Check
The Certificate Revocation Check is enabled by default. You can enable or disable the Certification Revocation Check using:
API playground
Refer to "Properties" section (/v1/configs/properties).
CLI tool (ksctl)
Refer the following examples:
Command to enable Certificate Revocation Check
$ ksctl properties modify -n ENABLE_CERT_REV_CHECK -p true
Command to disable Certificate Revocation Check
$ ksctl properties modify -n ENABLE_CERT_REV_CHECK -p false
Available Flags:
Flags Input Type Description -h
,--help
not applicable Command help -n
,--name
string Name of the system configuration -p
,--value
string Value to be set for the system configuration
Getting the Fingerprint of the CA Certificate
The fingerprint of the old CA certificate that was used to register the client with the CipherTrust Manager is needed when reregistering a client. A CipherTrust Manager administrator can provide you the fingerprint.
Fingerprint of the CA certificate can be viewed on the GUI or the API playground.
On the API Playground
To get the fingerprint of a CA certificate:
Acquire an authorization token.
In the left pane of the API playground, click Certificate Authority.
Under Certificate Authority, click Get local CA. The Get section of the API playground is displayed in the right pane.
Click
id
in/v1/ca/local-cas/{id}
.Enter id of the local CA in the text box.
Click GET. Details of the CA including fingerprints are displayed in the output. Only
sha256Fingerprint
andsha512Fingerprint
are supported for reregistration.Copy the desired fingerprint. This fingerprint will be used when reregistering clients.
Similarly, you can get fingerprint of external CA certificates.
On the GUI
To get the fingerprint of a CA certificate:
Log on to the CipherTrust Manager as administrator.
Click Keys & Access Management.
In the left pane, click CA. The list of available CAs is displayed.
Click the ellipsis icon corresponding to the CA.
Click Details. Details of the CA including fingerprints are displayed. Only
sha256Fingerprint
andsha512Fingerprint
are supported for reregistration.Copy the desired fingerprint. This fingerprint will be used when reregistering clients.
Similarly, you can get fingerprint of external CA certificates.