Planning, Installation, and Deployment Guide
Updated for Red Hat Certificate System 9.4
Abstract
Part I. Planning How to Deploy Red Hat Certificate System
Chapter 1. Introduction to Public-Key Cryptography
- Eavesdropping
- Information remains intact, but its privacy is compromised. For example, someone could gather credit card numbers, record a sensitive conversation, or intercept classified information.
- Tampering
- Information in transit is changed or replaced and then sent to the recipient. For example, someone could alter an order for goods or change a person's resume.
- Impersonation
- Information passes to a person who poses as the intended recipient. Impersonation can take two forms:
- Spoofing. A person can pretend to be someone else. For example, a person can pretend to have the email address
jdoe@example.netor a computer can falsely identify itself as a site calledwww.example.net. - Misrepresentation. A person or organization can misrepresent itself. For example, a site called
www.example.netcan purport to be an on-line furniture store when it really receives credit-card payments but never sends any goods.
- Encryption and decryption
- Encryption and decryption allow two communicating parties to disguise information they send to each other. The sender encrypts, or scrambles, information before sending it. The receiver decrypts, or unscrambles, the information after receiving it. While in transit, the encrypted information is unintelligible to an intruder.
- Tamper detection
- Tamper detection allows the recipient of information to verify that it has not been modified in transit. Any attempts to modify or substitute data are detected.
- Authentication
- Authentication allows the recipient of information to determine its origin by confirming the sender's identity.
- Nonrepudiation
- Nonrepudiation prevents the sender of information from claiming at a later date that the information was never sent.
1.1. Encryption and Decryption
1.1.1. Symmetric-Key Encryption

Figure 1.1. Symmetric-Key Encryption
1.1.2. Public-Key Encryption

Figure 1.2. Public-Key Encryption
1.1.3. Key Length and Encryption Strength
1.2. Digital Signatures
- The value of the hash is unique for the hashed data. Any change in the data, even deleting or altering a single character, results in a different value.
- The content of the hashed data cannot be deduced from the hash.

Figure 1.3. Using a Digital Signature to Validate Data Integrity
1.3. Certificates and Authentication
1.3.1. A Certificate Identifies Someone or Something
1.3.2. Authentication Confirms an Identity
- Password-based authentication
- Certificate-based authentication
1.3.2.1. Password-Based Authentication
- The user has already trusted the server, either without authentication or on the basis of server authentication over SSL/TLS.
- The user has requested a resource controlled by the server.
- The server requires client authentication before permitting access to the requested resource.

Figure 1.4. Using a Password to Authenticate a Client to a Server
- When the server requests authentication from the client, the client displays a dialog box requesting the user name and password for that server.
- The client sends the name and password across the network, either in plain text or over an encrypted SSL/TLS connection.
- The server looks up the name and password in its local password database and, if they match, accepts them as evidence authenticating the user's identity.
- The server determines whether the identified user is permitted to access the requested resource and, if so, allows the client to access it.
1.3.2.2. Certificate-Based Authentication

Figure 1.5. Using a Certificate to Authenticate a Client to a Server
Note
- The client software maintains a database of the private keys that correspond to the public keys published in any certificates issued for that client. The client asks for the password to this database the first time the client needs to access it during a given session, such as the first time the user attempts to access an SSL/TLS-enabled server that requires certificate-based client authentication.After entering this password once, the user does not need to enter it again for the rest of the session, even when accessing other SSL/TLS-enabled servers.
- The client unlocks the private-key database, retrieves the private key for the user's certificate, and uses that private key to sign data randomly-generated from input from both the client and the server. This data and the digital signature are evidence of the private key's validity. The digital signature can be created only with that private key and can be validated with the corresponding public key against the signed data, which is unique to the SSL/TLS session.
- The client sends both the user's certificate and the randomly-generated data across the network.
- The server uses the certificate and the signed data to authenticate the user's identity.
- The server may perform other authentication tasks, such as checking that the certificate presented by the client is stored in the user's entry in an LDAP directory. The server then evaluates whether the identified user is permitted to access the requested resource. This evaluation process can employ a variety of standard authorization mechanisms, potentially using additional information in an LDAP directory or company databases. If the result of the evaluation is positive, the server allows the client to access the requested resource.
1.3.3. Uses for Certificates
1.3.3.1. SSL/TLS
1.3.3.2. Signed and Encrypted Email
1.3.3.3. Single Sign-on
1.3.3.4. Object Signing
1.3.4. Types of Certificates
https://server.example.com:8443/ca/ee/ca.
Table 1.1. Common Certificates
| Certificate Type | Use | Example |
|---|---|---|
| Client SSL/TLS certificates | Used for client authentication to servers over SSL/TLS. Typically, the identity of the client is assumed to be the same as the identity of a person, such as an employee. See Section 1.3.2.2, “Certificate-Based Authentication” for a description of the way SSL/TLS client certificates are used for client authentication. Client SSL/TLS certificates can also be used as part of single sign-on. |
A bank gives a customer an SSL/TLS client certificate that allows the bank's servers to identify that customer and authorize access to the customer's accounts.
A company gives a new employee an SSL/TLS client certificate that allows the company's servers to identify that employee and authorize access to the company's servers.
|
| Server SSL/TLS certificates | Used for server authentication to clients over SSL/TLS. Server authentication may be used without client authentication. Server authentication is required for an encrypted SSL/TLS session. For more information, see Section 1.3.3.1, “SSL/TLS”. | Internet sites that engage in electronic commerce usually support certificate-based server authentication to establish an encrypted SSL/TLS session and to assure customers that they are dealing with the web site identified with the company. The encrypted SSL/TLS session ensures that personal information sent over the network, such as credit card numbers, cannot easily be intercepted. |
| S/MIME certificates | Used for signed and encrypted email. As with SSL/TLS client certificates, the identity of the client is assumed to be the same as the identity of a person, such as an employee. A single certificate may be used as both an S/MIME certificate and an SSL/TLS certificate; see Section 1.3.3.2, “Signed and Encrypted Email”. S/MIME certificates can also be used as part of single sign-on. | A company deploys combined S/MIME and SSL/TLS certificates solely to authenticate employee identities, thus permitting signed email and SSL/TLS client authentication but not encrypted email. Another company issues S/MIME certificates solely to sign and encrypt email that deals with sensitive financial or legal matters. |
| CA certificates | Used to identify CAs. Client and server software use CA certificates to determine what other certificates can be trusted. For more information, see Section 1.3.6, “How CA Certificates Establish Trust”. | The CA certificates stored in Mozilla Firefox determine what other certificates can be authenticated. An administrator can implement corporate security policies by controlling the CA certificates stored in each user's copy of Firefox. |
| Object-signing certificates | Used to identify signers of Java code, JavaScript scripts, or other signed files. | Software companies frequently sign software distributed over the Internet to provide users with some assurance that the software is a legitimate product of that company. Using certificates and digital signatures can also make it possible for users to identify and control the kind of access downloaded software has to their computers. |
1.3.4.1. CA Signing Certificates
Note
1.3.4.2. Other Signing Certificates
Note
1.3.4.3. SSL/TLS Server and Client Certificates
Note
1.3.4.4. User Certificates
1.3.4.5. Dual-Key Pairs
1.3.4.6. Cross-Pair Certificates
crossCertificatePair entry.
1.3.5. Contents of a Certificate
1.3.5.1. Certificate Data Formats
1.3.5.1.1. Binary
- DER-encoded certificate. This is a single binary DER-encoded certificate.
- PKCS #7 certificate chain. This is a PKCS #7
SignedDataobject. The only significant field in theSignedDataobject is the certificates; the signature and the contents, for example, are ignored. The PKCS #7 format allows multiple certificates to be downloaded at a single time. - Netscape Certificate Sequence. This is a simpler format for downloading certificate chains in a PKCS #7
ContentInfostructure, wrapping a sequence of certificates. The value of thecontentTypefield should benetscape-cert-sequence, while the content field has the following structure:CertificateSequence ::= SEQUENCE OF Certificate
This format allows multiple certificates to be downloaded at the same time.
1.3.5.1.2. Text
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
1.3.5.2. Distinguished Names
uid=doe, that uniquely identify an entity. This is also called the certificate subject name.
uid=doe, cn=John Doe,o=Example Corp.,c=US
uid is the user name, cn is the user's common name, o is the organization or company name, and c is the country.
1.3.5.3. A Typical Certificate
- The data section
- This section includes the following information:
- The version number of the X.509 standard supported by the certificate.
- The certificate's serial number. Every certificate issued by a CA has a serial number that is unique among the certificates issued by that CA.
- Information about the user's public key, including the algorithm used and a representation of the key itself.
- The DN of the CA that issued the certificate.
- The period during which the certificate is valid; for example, between 1:00 p.m. on November 15, 2004, and 1:00 p.m. November 15, 2018.
- The DN of the certificate subject, which is also called the subject name; for example, in an SSL/TLS client certificate, this is the user's DN.
- Optional certificate extensions, which may provide additional data used by the client or server. For example:
- the Netscape Certificate Type extension indicates the type of certificate, such as an SSL/TLS client certificate, an SSL/TLS server certificate, or a certificate for signing email
- the Subject Alternative Name (SAN) extension links a certificate to one or more host names
Certificate extensions can also be used for other purposes.
- The signature section
- This section includes the following information:
- The cryptographic algorithm, or cipher, used by the issuing CA to create its own digital signature.
- The CA's digital signature, obtained by hashing all of the data in the certificate together and encrypting it with the CA's private key.
Certificate:
Data:
Version: v3 (0x2)
Serial Number: 3 (0x3)
Signature Algorithm: PKCS #1 MD5 With RSA Encryption
Issuer: OU=Example Certificate Authority, O=Example Corp, C=US
Validity:
Not Before: Fri Oct 17 18:36:25 1997
Not After: Sun Oct 17 18:36:25 1999
Subject: CN=Jane Doe, OU=Finance, O=Example Corp, C=US
Subject Public Key Info:
Algorithm: PKCS #1 RSA Encryption
Public Key:
Modulus:
00:ca:fa:79:98:8f:19:f8:d7:de:e4:49:80:48:e6:2a:2a:86:
ed:27:40:4d:86:b3:05:c0:01:bb:50:15:c9:de:dc:85:19:22:
43:7d:45:6d:71:4e:17:3d:f0:36:4b:5b:7f:a8:51:a3:a1:00:
98:ce:7f:47:50:2c:93:36:7c:01:6e:cb:89:06:41:72:b5:e9:
73:49:38:76:ef:b6:8f:ac:49:bb:63:0f:9b:ff:16:2a:e3:0e:
9d:3b:af:ce:9a:3e:48:65:de:96:61:d5:0a:11:2a:a2:80:b0:
7d:d8:99:cb:0c:99:34:c9:ab:25:06:a8:31:ad:8c:4b:aa:54:
91:f4:15
Public Exponent: 65537 (0x10001)
Extensions:
Identifier: Certificate Type
Critical: no
Certified Usage:
TLS Client
Identifier: Authority Key Identifier
Critical: no
Key Identifier:
f2:f2:06:59:90:18:47:51:f5:89:33:5a:31:7a:e6:5c:fb:36:
26:c9
Signature:
Algorithm: PKCS #1 MD5 With RSA Encryption
Signature:
6d:23:af:f3:d3:b6:7a:df:90:df:cd:7e:18:6c:01:69:8e:54:65:fc:06:
30:43:34:d1:63:1f:06:7d:c3:40:a8:2a:82:c1:a4:83:2a:fb:2e:8f:fb:
f0:6d:ff:75:a3:78:f7:52:47:46:62:97:1d:d9:c6:11:0a:02:a2:e0:cc:
2a:75:6c:8b:b6:9b:87:00:7d:7c:84:76:79:ba:f8:b4:d2:62:58:c3:c5:
b6:c1:43:ac:63:44:42:fd:af:c8:0f:2f:38:85:6d:d6:59:e8:41:42:a5:
4a:e5:26:38:ff:32:78:a1:38:f1:ed:dc:0d:31:d1:b0:6d:67:e9:46:a8:
d:c4
-----BEGIN CERTIFICATE----- MIICKzCCAZSgAwIBAgIBAzANBgkqhkiG9w0BAQQFADA3MQswCQYDVQQGEwJVUzER MA8GA1UEChMITmV0c2NhcGUxFTATBgNVBAsTDFN1cHJpeWEncyBDQTAeFw05NzEw MTgwMTM2MjVaFw05OTEwMTgwMTM2MjVaMEgxCzAJBgNVBAYTAlVTMREwDwYDVQQK EwhOZXRzY2FwZTENMAsGA1UECxMEUHViczEXMBUGA1UEAxMOU3Vwcml5YSBTaGV0 dHkwgZ8wDQYJKoZIhvcNAQEFBQADgY0AMIGJAoGBAMr6eZiPGfjX3uRJgEjmKiqG 7SdATYazBcABu1AVyd7chRkiQ31FbXFOGD3wNktbf6hRo6EAmM5/R1AskzZ8AW7L iQZBcrXpc0k4du+2Q6xJu2MPm/8WKuMOnTuvzpo+SGXelmHVChEqooCwfdiZywyZ NMmrJgaoMa2MS6pUkfQVAgMBAAGjNjA0MBEGCWCGSAGG+EIBAQQEAwIAgDAfBgNV HSMEGDAWgBTy8gZZkBhHUfWJM1oxeuZc+zYmyTANBgkqhkiG9w0BAQQFAAOBgQBt I6/z07Z635DfzX4XbAFpjlRl/AYwQzTSYx8GfcNAqCqCwaSDKvsuj/vwbf91o3j3 UkdGYpcd2cYRCgKi4MwqdWyLtpuHAH18hHZ5uvi00mJYw8W2wUOsY0RC/a/IDy84 hW3WWehBUqVK5SY4/zJ4oTjx7dwNMdGwbWfpRqjd1A== -----END CERTIFICATE-----
1.3.6. How CA Certificates Establish Trust
1.3.6.1. CA Hierarchies

Figure 1.6. Example of a Hierarchy of Certificate Authorities
1.3.6.2. Certificate Chains

Figure 1.7. Example of a Certificate Chain
- Each certificate is followed by the certificate of its issuer.
- Each certificate contains the name (DN) of that certificate's issuer, which is the same as the subject name of the next certificate in the chain.In Figure 1.7, “Example of a Certificate Chain”, the
Engineering CAcertificate contains the DN of the CA,USA CA, that issued that certificate.USA CA's DN is also the subject name of the next certificate in the chain. - Each certificate is signed with the private key of its issuer. The signature can be verified with the public key in the issuer's certificate, which is the next certificate in the chain.In Figure 1.7, “Example of a Certificate Chain”, the public key in the certificate for the
USA CAcan be used to verify theUSA CA's digital signature on the certificate for theEngineering CA.
1.3.6.3. Verifying a Certificate Chain
- The certificate validity period is checked against the current time provided by the verifier's system clock.
- The issuer's certificate is located. The source can be either the verifier's local certificate database on that client or server or the certificate chain provided by the subject, as with an SSL/TLS connection.
- The certificate signature is verified using the public key in the issuer's certificate.
- The host name of the service is compared against the Subject Alternative Name (SAN) extension. If the certificate has no such extension, the host name is compared against the subject's CN.
- The system verifies the Basic Constraint requirements for the certificate, that is, whether the certificate is a CA and how many subsidiaries it is allowed to sign.
- If the issuer's certificate is trusted by the verifier in the verifier's certificate database, verification stops successfully here. Otherwise, the issuer's certificate is checked to make sure it contains the appropriate subordinate CA indication in the certificate type extension, and chain verification starts over with this new certificate. Figure 1.8, “Verifying a Certificate Chain to the Root CA” presents an example of this process.

Figure 1.8. Verifying a Certificate Chain to the Root CA
Engineering CA, is found in the verifier's local database, verification stops with that certificate, as shown in Figure 1.9, “Verifying a Certificate Chain to an Intermediate CA”.

Figure 1.9. Verifying a Certificate Chain to an Intermediate CA

Figure 1.10. A Certificate Chain That Cannot Be Verified
1.3.7. Certificate Status
1.3.7.1. Certificate Revocation List (CRL)
1.3.7.2. Online Certificate Status Protocol (OCSP)
1.4. Certificate Life Cycle
1.4.1. Certificate Issuance
1.4.2. Certificate Expiration and Renewal
- Verify if the certificate is present in the directory
- Servers can be configured so that the authentication process checks the directory for the presence of the certificate being presented. When an administrator revokes a certificate, the certificate can be automatically removed from the directory, and subsequent authentication attempts with that certificate will fail, even though the certificate remains valid in every other respect.
- Certificate revocation list (CRL)
- A list of revoked certificates, a CRL, can be published to the directory at regular intervals. The CRL can be checked as part of the authentication process.
- Real-time status checking
- The issuing CA can also be checked directly each time a certificate is presented for authentication. This procedure is sometimes called real-time status checking.
- Online Certificate Status Protocol
- The Online Certificate Status Protocol (OCSP) service can be configured to determine the status of certificates.
1.5. Key Management
Chapter 2. Introduction to Red Hat Certificate System
2.1. A Review of Certificate System Subsystems
- A certificate authority called Certificate Manager. The CA is the core of the PKI; it issues and revokes all certificates. The Certificate Manager is also the core of the Certificate System. By establishing a security domain of trusted subsystems, it establishes and manages relationships between the other subsystems.
- A key recovery authority (KRA). Certificates are created based on a specific and unique key pair. If a private key is ever lost, then the data which that key was used to access (such as encrypted emails) is also lost because it is inaccessible. The KRA stores key pairs, so that a new, identical certificate can be generated based on recovered keys, and all of the encrypted data can be accessed even after a private key is lost or damaged.
Note
In previous versions of Certificate System, KRA was also referred to as the data recovery manager (DRM). Some code, configuration file entries, web panels, and other resources might still use the term DRM instead of KRA. - An online certificate status protocol (OCSP) responder. The OCSP verifies whether a certificate is valid and not expired. This function can also be done by the CA, which has an internal OCSP service, but using an external OCSP responder lowers the load of the issuing CA.
- A token key service (TKS). The TKS derives keys based on the token CCID, private information, and a defined algorithm. These derived keys are used by the TPS to format tokens and enroll certificates on the token.
- A token processing system (TPS). The TPS interacts directly with external tokens, like smart cards, and manages the keys and certificates on those tokens through a local client, the Enterprise Security Client (ESC). The ESC contacts the TPS when there is a token operation, and the TPS interacts with the CA, KRA, or TKS, as required, then send the information back to the token by way of the Enterprise Security Client.
- A token management system or TMS environment, which manages smart cards. This requires a CA, TKS, and TPS, with an optional KRA for server-side key generation.
- A traditional non token management system or non-TMS environment, which manages certificates used in an environment other than smart cards, usually in software databases. At a minimum, a non-TMS requires only a CA, but a non-TMS environment can use OCSP responders and KRA instances as well.
2.2. Overview of Certificate System Subsystems
2.2.2. Instance Installation Prerequisites
2.2.2.1. Directory Server Instance Availability
2.2.2.2. PKI Packages
- The following base packages form the core of Certificate System, and are available in base Red Hat Enterprise Linux repositories:
- pki-core.el7
- pki-base
- pki-base-java
- pki-ca
- pki-javadoc
- pki-kra
- pki-server
- pki-symkey
- pki-tools
- The packages listed below are not available in the base Red Hat Enterprise Linux subscription channel. To install these packages, you must first use Subscription Manager to attach the Red Hat Certificate System subscription pool, and enable the RHCS9 repository. See the Subscription Manager chapter of the Red Hat Enterprise Linux 7 System Administrator's Guide for instructions.
- pki-console.el7pki
- pki-console
- pki-core.el7pki
- pki-ocsp
- pki-tks
- pki-tps
- redhat-pki.el7pki
- redhat-pki
- redhat-pki-theme.el7pki
- redhat-pki-console-theme
- redhat-pki-server-theme
#yum install redhat-pki
Note
2.2.2.3. Instance Installation and Configuration
pkispawn command line tool is used to install and configure a new PKI instance. It eliminates the need for separate installation and configuration steps, and may be run either interactively, as a batch process, or a combination of both (batch process with prompts for passwords). The utility does not provide a way to install or configure the browser-based graphical interface.
pkispawn --help command.
pkispawn command:
- Reads in its default
name=valuepairs from a plain text configuration file (/etc/pki/default.cfg). - Interactively or automatically overrides any pairs as specified and stores the final result as a Python dictionary.
- Executes an ordered series of scriptlets to perform subsystem and instance installation.
- The configuration scriptlet packages the Python dictionary as a JavaScript Object Notation (JSON) data object, which is then passed to the Java-based configuration servlet.
- The configuration servlet utilizes this data to configure a new PKI subsystem, and then passes control back to the
pkispawnexecutable, which finalizes the PKI setup. A copy of the final deployment file is stored in/var/lib/pki/instance_name/<subsystem>/registry/<subsystem>/deployment.cfg
pkispawn man page for additional information.
/etc/pki/default.cfg, is a plain text file containing the default installation and configuration values which are read at the beginning of the process described above. It consists of name=value pairs divided into [DEFAULT], [Tomcat], [CA], [KRA], [OCSP], [TKS], and [TPS] sections.
-s option with pkispawn and specify a subsystem name, then only the section for that subsystem will be read.
name=value pair specified in a subsystem section will override the pair in the [Tomcat] section, which in turn override the pair in the [DEFAULT] section. Default pairs can further be overriden by interactive input, or by pairs in a specified PKI instance configuration file.
Note
name=value pairs, they may be stored in any location and specified at any time. These files are referred to as myconfig.txt in the pkispawn man pages, but they are also often referred to as .ini files, or more generally as PKI instance configuration override files.
pki_default.cfg man page for more information.
/usr/share/java/pki/pki-certsrv.jar as com/netscape/certsrv/system/ConfigurationRequest.class. The servlet processes data passed in as a JSON object from the configuration scriptlet using pkispawn, and then returns to pkispawn using Java bytecode served in the same file as com/netscape/certsrv/system/ConfigurationResponse.class.
pkispawn command on a command line as root:
#pkispawn
Important
#mkdir -p /root/pki- Use a text editor such as vim to create a configuration file named
/root/pki/ca.cfgwith the following contents:[DEFAULT] pki_admin_password=<password> pki_client_pkcs12_password=<password> pki_ds_password=<password>
#pkispawn -s CA -f /root/pki/ca.cfg
pkispawn man page for various configuration examples.
2.2.2.4. Instance Removal
pkidestroy command. It can be run interactively or as a batch process. Use pkidestroy -h to display detailed usage inforamtion on the command line.
pkidestroy command reads in a PKI subsystem deployment configuration file which was stored when the subsystem was created (/var/lib/pki/instance_name/<subsystem>/registry/<subsystem>/deployment.cfg), uses the read-in file in order to remove the PKI subsystem, and then removes the PKI instance if it contains no additional subsystems. See the pkidestroy man page for more information.
pkidestroy may look similar to the following:
#pkidestroySubsystem (CA/KRA/OCSP/TKS/TPS) [CA]: Instance [pki-tomcat]: Begin uninstallation (Yes/No/Quit)? Yes Log file: /var/log/pki/pki-ca-destroy.20150928183547.log Loading deployment configuration from /var/lib/pki/pki-tomcat/ca/registry/ca/deployment.cfg. Uninstalling CA from /var/lib/pki/pki-tomcat. rm '/etc/systemd/system/multi-user.target.wants/pki-tomcatd.target' Uninstallation complete.
#pkidestroy -s CA -i pki-tomcatLog file: /var/log/pki/pki-ca-destroy.20150928183159.log Loading deployment configuration from /var/lib/pki/pki-tomcat/ca/registry/ca/deployment.cfg. Uninstalling CA from /var/lib/pki/pki-tomcat. rm '/etc/systemd/system/multi-user.target.wants/pki-tomcatd.target' Uninstallation complete.
2.2.3. Execution Management (systemctl)
2.2.3.1. Starting, Stopping, Restarting, and Obtaining Status
systemctl execution management system tool on Red Hat Enterprise Linux 7:
#systemctl start pki-tomcatd@instance_name.service
#systemctl status pki-tomcatd@instance_name.service
#systemctl stop pki-tomcatd@instance_name.service
#systemctl restart pki-tomcatd@instance_name.service
2.2.3.2. Starting the Instance Automatically
systemctl utility in Red Hat Enterprise Linux 7 manages the automatic startup and shutdown settings for each process on the server. This means that when a system reboots, some services can be automatically restarted. System unit files control service startup to ensure that services are started in the correct order. The systemd service and systemctl utility are described in the Red Hat Enterprise Linux System Administrator's Guide
systemctl, so this utility can set whether to restart instances automatically. After a Certificate System instance is created, it is enabled on boot. This can be changed by using systemctl:
#systemctl disable pki-tomcatd@instance_name.service
#systemctl enable pki-tomcatd@instance_name.service
Note
systemctl enable and systemctl disable commands do not immediately start or stop Certificate System.
2.2.4. Process Management (pki-server and pkidaemon)
2.2.4.1. The pki-server Command Line Tool
pki-server. Use the pki-server --help command and see the pki-server man page for usage information.
2.2.4.2. Enabling and Disabling an Installed Subsystem Using pki-server
pki-server utility.
#pki-server subsystem-disable -i instance_id subsystem_id
#pki-server subsystem-enable -i instance_id subsystem_id
ca, kra, tks, ocsp, or tps.
Note
pki-tomcat:
#pki-server subsystem-disable -i pki-tomcat ocsp
#pki-server subsystem-find -i instance_id
#pki-server subsystem-find -i instance_id subsystem_id
2.2.4.3. The pkidaemon Command Line Tool
pkidaemon tool:
pkidaemon {start|status} instance-type [instance_name]pkidaemon status tomcat- Provides status information such as on/off, ports, URLs of each PKI subsystem of all PKI instances on the system.pkidaemon status tomcat instance_name- Provides status information such as on/off, ports, URLs of each PKI subsystem of a specific instance.pkidaemon start tomcat instance_name.service- Used internally usingsystemctl.
pkidaemon man page for additional information.
2.2.4.4. Finding the Subsystem Web Services URLs
https://server.example.com:8443/ca/services
Note
pkidaemon status tomcat instance_name
https://server.example.com:8443/ca/ee/ca
https://192.0.2.1:8443/ca/services https://[2001:DB8::1111]:8443/ca/services
Note
Table 2.1. Default Web Services Pages
| Port | Used for SSL/TLS | Used for Client Authentication[a] | Web Services | Web Service Location |
|---|---|---|---|---|
| Certificate Manager | ||||
| 8080 | No | End Entities | ca/ee/ca | |
| 8443 | Yes | No | End Entities | ca/ee/ca |
| 8443 | Yes | Yes | Agents | ca/agent/ca |
| 8443 | Yes | No | Services | ca/services |
| 8443 | Yes | No | Console | pkiconsole https://host:port/ca |
| Key Recovery Authority | ||||
| 8080 | No | End Entities[b] | kra/ee/kra | |
| 8443 | Yes | No | End Entities[b] | kra/ee/kra |
| 8443 | Yes | Yes | Agents | kra/agent/kra |
| 8443 | Yes | No | Services | kra/services |
| 8443 | Yes | No | Console | pkiconsole https://host:port/kra |
| Online Certificate Status Manager | ||||
| 8080 | No | End Entities[c] | ocsp/ee/ocsp | |
| 8443 | Yes | No | End Entities[c] | ocsp/ee/ocsp |
| 8443 | Yes | Yes | Agents | ocsp/agent/ocsp |
| 8443 | Yes | No | Services | ocsp/services |
| 8443 | Yes | No | Console | pkiconsole https://host:port/ocsp |
| Token Key Service | ||||
| 8080 | No | End Entities[b] | tks/ee/tks | |
| 8443 | Yes | No | End Entities[b] | tks/ee/tks |
| 8443 | Yes | Yes | Agents | tks/agent/tks |
| 8443 | Yes | No | Services | tks/services |
| 8443 | Yes | No | Console | pkiconsole https://host:port/tks |
| Token Processing System | ||||
| 8080 | No | Unsecure Services | tps/tps | |
| 8443 | Yes | Secure Services | tps/tps | |
| 8080 | No | Enterprise Security Client Phone Home | tps/phoneHome | |
| 8443 | Yes | Enterprise Security Client Phone Home | tps/phoneHome | |
| 8443 | Yes | Yes | Admin, Agent, and Operator Services [d] | tps/ui |
[a]
Services with a client authentication value of No can be reconfigured to require client authentication. Services which do not have either a Yes or No value cannot be configured to use client authentication.
[b]
Although this subsystem type does have end entities ports and interfaces, these end-entity services are not accessible through a web browser, as other end-entity services are.
[c]
Although the OCSP does have end entities ports and interfaces, these end-entity services are not accessible through a web browser, as other end-entity services are. End user OCSP services are accessed by a client sending an OCSP request.
[d]
The agent, admin, and operator services are all accessed through the same web services page. Each role can only access specific sections which are only visible to the members of that role.
| ||||
2.2.4.5. Starting the Certificate System Console
pkiconsole utility. This utility uses the format:
pkiconsole https://server.example.com:admin_port/subsystem_type
ca, kra, ocsp, or tks. For example, this opens the KRA console:
pkiconsole https://server.example.com:8443/kra
https://192.0.2.1:8443/ca https://[2001:DB8::1111]:8443/ca
2.3. Certificate System Architecture Overview
2.3.1. Java Application Server
server.xml. The following links provide more information about Tomcat configuration;
web.xml file, which is defined in Java Servlet 3.0 specification. See https://jcp.org/en/jsr/detail?id=315 for details.
CS.cfg.
2.3.2. Java Security Manager

pki_security_manager=false option under its own Tomcat section.
# systemctl stop pki-tomcatd@instance_name.service
or# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
(if using thenuxwdogwatchdog)- Open the
/etc/sysconfig/instance_namefile, and setSECURITY_MANAGER="false" # systemctl start pki-tomcatd@instance_name.service
or# systemctl start pki-tomcatd-nuxwdog@instance_name.service
(if using thenuxwdogwatchdog)
pkidaemon from the following files:
/usr/share/pki/server/conf/catalina.policy /usr/share/tomcat/conf/catalina.policy /var/lib/pki/$PKI_INSTANCE_NAME/conf/pki.policy /var/lib/pki/$PKI_INSTANCE_NAME/conf/custom.policy
/var/lib/pki/instance_name/conf/catalina.policy.
2.3.3. Interfaces
2.3.3.1. Servlet Interface
web.xml file. The same file also defines the URL of each servlet and the security requirements to access the servlets. See Section 2.3.1, “Java Application Server” for more information.
2.3.3.2. Administrative Interface

2.3.3.3. End-Entity Interface

2.3.3.4. Operator Interface

2.3.4. REST Interface
web.xml of the corresponding subsystem. More information about RESTEasy can be found at http://resteasy.jboss.org/.
- CA certificate service:
http://<host_name>:<port>/ca/rest/certs/ - KRA key service:
http://<host_name>:<port>/kra/rest/agent/keys/ - TKS user service:
http://<host_name>:<port>/tks/rest/admin/users/ - TPS group service:
http://<host_name>:<port>/tps/rest/admin/groups/
{
"id":"admin",
"UserID":"admin",
"FullName":"Administrator",
"Email":"admin@example.com",
...
}- user name and password
- client certificate
/usr/share/pki/ca/conf/auth-method.properties.
/usr/share/pki/<subsystem>/conf/acl.properties.
2.3.5. JSS
2.3.6. Tomcatjss
tomcatjss as a bridge between the Tomcat Server HTTP engine and JSS, the Java interface for security operations performed by NSS. Tomcatjss is a Java Secure Socket Extension (JSSE) implementation using Java Security Services (JSS) for Tomcat.
server.xml file found in the pki-tomcat/conf directory can be used to explain how Tomcatjss fits into the entire Certificate System ecosystem. Portions of the Connector entry for the secret port are shown below.
<Connector name="Secure" # Info about the socket itself port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" sslProtocol="SSL" scheme="https" secure="true" connectionTimeout="80000" maxHttpHeaderSize="8192" acceptCount="100" maxThreads="150" minSpareThreads="25" enableLookups="false" disableUploadTimeout="true" #Points to our tomcat jss implementation sslImplementationName="org.apache.tomcat.util.net.jss.JSSImplementation" enableOCSP="false" #Optional ocsp responder configuration can be enabled here ocspResponderURL="http://server.example.com.com:9080/ca/ocsp" ocspResponderCertNickname="ocspSigningCert cert-pki-ca" ocspCacheSize="1000" ocspMinCacheEntryDuration="60" ocspMaxCacheEntryDuration="120" ocspTimeout="10" strictCiphers="true" #This configures the client auth scheme we want for this server socket. Want means that the client auth cert is optional. We could also have made it “required” to give no choice. clientAuth="want" # A collection of cipher related settings that make sure connections are secure. sslOptions="ssl2=false,ssl3=false,tls=true" ssl3Ciphers="-SSL3_FORTEZZA_ ..." tlsCiphers="-TLS_ECDH_ECDSA_WITH_AES_128_" sslVersionRangeStream="tls1_0:tls1_2" sslVersionRangeDatagram="tls1_1:tls1_2" sslRangeCiphers="-TLS_ECDH_ECDSA_W" serverCertNickFile="/var/lib/pki/pki-tomcat/conf/serverCertNick.conf" passwordFile="/var/lib/pki/pki-tomcat/conf/password.conf" passwordClass="org.apache.tomcat.util.net.jss.PlainPasswordFile" certdbDir="/var/lib/pki/pki-tomcat/alias" />
sslImplementation property of this Connector object.
- The server is started.
- Tomcat gets to the point where it needs to create the listening sockets for the Certificate System installation.
- The
server.xmlfile is processed. Configuration in this file tells the system to use a socket factory implemented by Tomcatjss. - For each requested socket, Tomcajss reads and processes the included attributes when it creates the socket. The resulting socket will behave as it has been asked to by those parameters.
- Once the server is running, we have the required set of listening sockets waiting for incoming connections to the Tomcat-based Certificate System.
2.3.7. PKCS#11 Modules
2.3.7.1. TLS Ciphers
server.xml file. When acting as a TLS client (for inter-subsystem communication), the instance’s TLS cipher list can be configured in the instance’s configuration file, CS.cfg.
2.3.7.2. NSS Soft Token
- Default NSS Internal PKCS #11 Module. This comes with two built-in tokens:
- The Internal Crypto Services token performs all cryptographic operations, such as encryption, decryption, and hashing.
- The Internal Key Storage token handles all communication with the certificate and key database files (called
certX.dbandkeyX.db, respectively, where X is a version number) that store certificates and keys.
- FIPS 140-2 module. This module complies with the FIPS 140-2 government standard for implementations of cryptographic modules. Many products sold to the US government must comply with one or more of the FIPS standards. The FIPS 140-2 module includes a single, built-in FIPS 140-2 Certificate DB token , which handles both cryptographic operations and communication with the
certX.dbandkeyX.dbfiles.
2.3.7.3. HSMs
pkispawn man page for an example of setting up a PKI subsystem to utilize an HSM.
Note
- All system keys for a subsystem must be generated on the same token.
- Preferably, the subsystem keys should be generated in an empty HSM slot. If the HSM slot has previously been used to store other keys, then use the HSM vendor's utilities to delete the contents of the slot. The Certificate System has to be able to create certificates and keys on the slot with default nicknames. If not properly cleaned up, the names of these objects may collide with previous instances.
- A single HSM can be used to store certificates and keys for multiple subsystem instances, which may be installed on multiple hosts. When an HSM is used, any certificate nickname for a subsystem must be unique for every subsystem instance managed on the HSM.
Note
Important
2.3.7.4. Smart Cards (Clients)
2.3.8. Certificate System Serial Number Management
2.3.8.1. Serial Number Ranges
- Current serial number management is based on assigning ranges of sequential serial numbers.
- Instances request new ranges when crossing below a defined threshold.
- Instances store information about a newly acquired range once it is assigned to the instance.
- Instances continue using old ranges until all numbers are exhausted from it, and then it moves to the new range.
- Cloned subsystems synchronize their range assignment through replication conflicts.
- Part of the current range of the master is transferred to a new clone in the process of cloning.
- New clones may request a new range if the transferred range is below the defined threshold.
[CA] section to the PKI instance override configuration file, and adding the following name=value pairs under that section as needed. Default values which already exist in /etc/pki/default.cfg are shown in the following example:
[CA] pki_serial_number_range_start=1 pki_serial_number_range_end=10000000 pki_request_number_range_start=1 pki_request_number_range_end=10000000 pki_replica_number_range_start=1 pki_replica_number_range_end=100
2.3.8.2. Random Serial Number Management
[CA] section to the PKI instance override file and adding the following name=value pair under that section:
[CA] pki_random_serial_numbers_enable=True
2.3.9. Security Domain
2.3.10. Passwords and Watchdog (nuxwdog)
<instance_dir>/conf/password.conf. At the same time, an identifying string is stored in the main configuration file CS.cfg as part of the parameter cms.passwordlist.
<name>=<password>
internal=413691159497
hardware-<name>=<password>
hardware-internal=413691159497
CS.cfg, is protected by Red Hat Enterprise Linux, and only accessible by the PKI administrators. No passwords are stored in CS.cfg.
password.conf.
password.conf. LDAP publishing is one example where the newly configured Directory Manager password for the publishing directory is entered into password.conf.
password.conf file altogether. On restart, the nuxwdog watchdog program will prompt the administrator for the required passwords, using the parameter cms.passwordlist as a list of passwords for which to prompt. The passwords are then cached by nuxwdog in the kernel keyring to allow automated recovery from a server crash. This automated recovery (automatic subsystem restart) happens in case of uncontrolled shutdown (crash). In case of a controlled shutdown by the administrator, administrators are prompted for passwords again.
2.3.11. Internal LDAP Database
pkispawn options will also be needed for installing such Certificate System instance.
#/usr/lib64/mozldap/ldapsearch -Z -h server.example.com -p 636 -D 'cn=Directory Manager' -w password -b "dc=example, dc=com" "objectclass=*"
#certutil -L -d /etc/dirsrv/slapd-pki -n "CA certificate" -a > $HOME/dscacert.pem
[DEFAULT] section of the PKI instance override configuration file:
[DEFAULT] pki_ds_secure_connection=True pki_ds_secure_connection_ca_pem_file=$HOME/dscacert.pem pki_ds_ldaps_port=636
pkispawn command to create the PKI subsystem.
pkispawn man page.
2.3.12. Security-Enhanced Linux (SELinux)

Figure 2.1. CA SELinux Port Policy
- Files and directories for each subsystem instance are labeled with a specific SELinux context.
- The ports for each subsystem instance are labeled with a specific SELinux context.
- All Certificate System processes are constrained within a subsystem-specific domain.
- Each domain has specific rules that define what actions that are authorized for the domain.
- Any access not specified in the SELinux policy is denied to the Certificate System instance.
pkispawn is run to configure a Certificate System subsystem, files and ports associated with that subsystem are labeled with the required SELinux contexts. These contexts are removed when the particular subsystems are removed using pkidestroy.
pki_tomcat_t domain. Certificate System instances are Tomcat servers, and the pki_tomcat_t domain extends the policies for a standard tomcat_t Tomcat domain. All Certificate System instances on a server share the same domain.
unconfined_t) and then transitions into the pki_tomcat_t domain. This process then has certain access permissions, such as write access to log files labeled pki_tomcat_log_t, read and write access to configuration files labeled pki_tomcat_etc_rw_t, or the ability to open and write to http_port_t ports.
2.3.13. Self-tests
#pki-server subsystem-enable <subsystem>
2.3.14. Instance Layout
/etc/pki/instance_name/server.xml, which is instance-specific, but the CA servlets are defined in /usr/share/pki/ca/webapps/ca/WEB-INF/web.xml, which is shared by all server instances on the system.
2.3.14.1. File and Directory Locations for Certificate System
pki-tomcat; the true value is whatever is specified at the time the subsystem is created with pkispawn.
Table 2.2. Tomcat Instance Information
| Setting | Value |
|---|---|
| Main Directory | /var/lib/pki/pki-tomcat |
| Configuration Directory | /etc/pki/pki-tomcat |
| Configuration File |
/etc/pki/pki-tomcat/server.xml
/etc/pki/pki-tomcat/password.conf
|
| Security Databases | /var/lib/pki/pki-tomcat/alias |
| Subsystem Certificates |
SSL server certificate
Subsystem certificate [a]
|
| Log Files | /var/log/pki/pki-tomcat |
| Web Services Files |
/usr/share/pki/server/webapps/ROOT - Main page
/usr/share/pki/server/webapps/pki/admin - Admin templates
/usr/share/pki/server/webapps/pki/js - JavaScript libraries
|
[a]
The subsystem certificate is always issued by the security domain so that domain-level operations that require client authentication are based on this subsystem certificate.
| |
2.3.14.2. CA Subsystem Information
pki-tomcat; the true value is whatever is specified at the time the subsystem is created with pkispawn.
Table 2.3. CA Subsystem Information
| Setting | Value |
|---|---|
| Main Directory | /var/lib/pki/pki-tomcat/ca |
| Configuration Directory | /etc/pki/pki-tomcat/ca |
| Configuration File | /etc/pki/pki-tomcat/ca/CS.cfg |
| Subsystem Certificates |
CA signing certificate
OCSP signing certificate (for the CA's internal OCSP service)
Audit log signing certificate
|
| Log Files | /var/log/pki/pki-tomcat/ca |
| Install Logs | /var/log/pki/pki-ca-spawn.YYYYMMDDhhmmss.log |
| Profile Files | /var/lib/pki/pki-tomcat/ca/profiles/ca |
| Email Notification Templates | /var/lib/pki/pki-tomcat/ca/emails |
| Web Services Files |
/usr/share/pki/ca/webapps/ca/agent - Agent services
/usr/share/pki/ca/webapps/ca/admin - Admin services
/usr/share/pki/ca/webapps/ca/ee - End user services
|
2.3.14.3. KRA Subsystem Information
pki-tomcat; the true value is whatever is specified at the time the subsystem is created with pkispawn.
Table 2.4. KRA Subsystem Information
| Setting | Value |
|---|---|
| Main Directory | /var/lib/pki/pki-tomcat/kra |
| Configuration Directory | /etc/pki/pki-tomcat/kra |
| Configuration File | /etc/pki/pki-tomcat/kra/CS.cfg |
| Subsystem Certificates |
Transport certificate
Storage certificate
Audit log signing certificate
|
| Log Files | /var/log/pki/pki-tomcat/kra |
| Install Logs | /var/log/pki/pki-kra-spawn.YYYYMMDDhhmmss.log |
| Web Services Files |
/usr/share/pki/kra/webapps/kra/agent - Agent services
/usr/share/pki/kra/webapps/kra/admin - Admin services
|
2.3.14.4. OCSP Subsystem Information
pki-tomcat; the true value is whatever is specified at the time the subsystem is created with pkispawn.
Table 2.5. OCSP Subsystem Information
| Setting | Value |
|---|---|
| Main Directory | /var/lib/pki/pki-tomcat/ocsp |
| Configuration Directory | /etc/pki/pki-tomcat/ocsp |
| Configuration File | /etc/pki/pki-tomcat/ocsp/CS.cfg |
| Subsystem Certificates |
OCSP signing certificate
Audit log signing certificate
|
| Log Files | /var/log/pki/pki-tomcat/ocsp |
| Install Logs | /var/log/pki/pki-ocsp-spawn.YYYYMMDDhhmmss.log |
| Web Services Files |
/usr/share/pki/ocsp/webapps/ocsp/agent - Agent services
/usr/share/pki/ocsp/webapps/ocsp/admin - Admin services
|
2.3.14.5. TKS Subsystem Information
pki-tomcat; the true value is whatever is specified at the time the subsystem is created with pkispawn.
Table 2.6. TKS Subsystem Information
| Setting | Value |
|---|---|
| Main Directory | /var/lib/pki/pki-tomcat/tks |
| Configuration Directory | /etc/pki/pki-tomcat/tks |
| Configuration File | /etc/pki/pki-tomcat/tks/CS.cfg |
| Subsystem Certificates | Audit log signing certificate |
| Log Files | /var/log/pki/pki-tomcat/tks |
| Install Logs | /var/log/pki/pki-tomcat/pki-tks-spawn.YYYYMMDDhhmmss.log |
2.3.14.6. TPS Subsystem Information
pki-tomcat; the true value is whatever is specified at the time the subsystem is created with pkispawn.
Table 2.7. TPS Subsystem Information
| Setting | Value |
|---|---|
| Main Directory | /var/lib/pki/pki-tomcat/tps |
| Configuration Directory | /etc/pki/pki-tomcat/tps |
| Configuration File | /etc/pki/pki-tomcat/tps/CS.cfg |
| Subsystem Certificates | Audit log signing certificate |
| Log Files | /var/log/pki/pki-tomcat/tps |
| Install Logs | /var/log/pki/pki-tps-spawn.YYYYMMDDhhhmmss.log |
| Web Services Files | /usr/share/pki/tps/webapps/tps - TPS services |
2.3.14.7. Shared Certificate System Subsystem File Locations
2.4. PKI with Certificate System
Note
2.4.1. Issuing Certificates
2.4.1.1. The Enrollment Process
2.4.1.1.1. Enrollment Using the User Interface
- The end entity provides the information in one of the enrollment forms and submits a request.The information gathered from the end entity is customizable in the form depending on the information collected to store in the certificate or to authenticate against the authentication method associated with the form. The form creates a request that is then submitted to the Certificate Manager.
- The enrollment form triggers the creation of the public and private keys or for dual-key pairs for the request.
- The end entity provides authentication credentials before submitting the request, depending on the authentication type. This can be LDAP authentication, PIN-based authentication, or certificate-based authentication.
- The request is submitted either to an agent-approved enrollment process or an automated process.
- The agent-approved process, which involves no end-entity authentication, sends the request to the request queue in the agent services interface, where an agent must processes the request. An agent can then modify parts of the request, change the status of the request, reject the request, or approve the request.Automatic notification can be set up so an email is sent to an agent any time a request appears in the queue. Also, an automated job can be set to send a list of the contents of the queue to agents on a pre configured schedule.
- The automated process, which involves end-entity authentication, processes the certificate request as soon as the end entity successfully authenticates.
- The form collects information about the end entity from an LDAP directory when the form is submitted. For certificate profile-based enrollment, the defaults for the form can be used to collect the user LDAP ID and password.
- The certificate profile associated with the form determine aspects of the certificate that is issued. Depending on the certificate profile, the request is evaluated to determine if the request meets the constraints set, if the required information is provided, and the contents of the new certificate.
- The form can also request that the user export the private encryption key. If the KRA subsystem is set up with this CA, the end entity's key is requested, and an archival request is sent to the KRA. This process generally requires no interaction from the end entity.
- The certificate request is either rejected because it did not meet the certificate profile or authentication requirements, or a certificate is issued.
- The certificate is delivered to the end entity.
- In automated enrollment, the certificate is delivered to the user immediately. Since the enrollment is normally through an HTML page, the certificate is returned as a response on another HTML page.
- In agent-approved enrollment, the certificate can be retrieved by serial number or request Id in the end-entity interface.
- If the notification feature is set up, the link where the certificate can be obtained is sent to the end user.
- An automatic notice can be sent to the end entity when the certificate is issued or rejected.
- The new certificate is stored in the Certificate Manager's internal database.
- If publishing is set up for the Certificate Manager, the certificate is published to a file or an LDAP directory.
- The internal OCSP service checks the status of certificates in the internal database when a certificate status request is received.
2.4.1.1.2. Enrollment Using the Command Line
2.4.1.1.2.1. Enrolling with CMC
- Generate a PKCS #10 or CRMF certificate signing request (CSR) using a utility, such as
PKCS10ClientorCRMFPopClient.Note
If key archival is enabled in the Key Recovery Agent (KRA), use theCRMFPopClientutility with the KRA's transport certificate in Privacy Enhanced Mail (PEM) format set in thekra.transportfile. - Use the
CMCRequestutility to convert the CSR into a CMC request. TheCMCRequestutility uses a configuration file as input. This file contains, for example, the path to the CSR and the CSR's format.For further details and examples, see the CMCRequest(1) man page. - Use the
HttpClientutility to send the CMC request to the CA.HttpClientuses a configuration file with settings, such as the path to the CMC request file and the servlet.If theHttpClientcommand succeeds, the utility receives a PKCS #7 chain with CMC status controls from the CA.For details about what parameters the utility provides, enter theHttpClientcommand without any parameters. - Use the
CMCResponseutility to check the issuance result of the PKCS #7 file generated byHttpClient. If the request is successful,CMCResponsedisplays the certificate chain in a readable format.For further details, see the CMCResponse(1) man page. - Import the new certificate into the application. For details, follow the instructions of the application to which you want to import the certificate.
Note
The certificate retrieved byHttpClientis in PKCS #7 format. If the application supports only Base64-encoded certificates, use theBtoAutility to convert the certificate.Additionally, certain applications require a header and footer for certificates in Privacy Enhanced Mail (PEM) format. If these are required, add them manually to the PEM file after you converted the certificate.
2.4.1.1.2.2. CMC Enrollment without POP
HttpClient utility receives an EncryptedPOP CMC status, which is displayed by the CMCResponse command. In this case, enter the CMCRequest command again with different parameters in the configuration file.
2.4.1.1.2.3. Signed CMC Requests
- If an agent signs the request, set the authentication method in the profile to
CMCAuth. - If a user signs the request, set the authentication method in the profile to
CMCUserSignedAuth.
2.4.1.1.2.4. Unsigned CMC Requests
CMCUserSignedAuth authentication plug-in is configured in the profile, you must use an unsigned CMC request in combination with the Shared Secret authentication mechanism.
Note
self-signed CMC requests.
2.4.1.1.2.6. Simple CMC Requests
HttpClient utility's configuration file:
servlet=/ca/ee/ca/profileSubmitCMCSimple?profileId=caECSimpleCMCUserCert
2.4.1.1.3. Enrolling Using the pki Utility
- The pki-cert(1) man page
2.4.1.2. Certificate Profiles
- Certificates that are X.509 version 3-compliant
- Unicode support for the certificate subject name and issuer name
- Support for empty certificate subject names
- Support for customized subject name components
- Support for customized extensions
<instance directory>/ca/profiles/ca with names in the format of <profile id>.cfg. LDAP-based profiles are possible with proper pkispawn configuration parameters.
2.4.1.3. Authentication for Certificate Enrollment
2.4.1.4. Dual Key Pairs
2.4.1.5. Cross-Pair Certificates
2.4.2. Renewing Certificates
2.4.3. Publishing Certificates and CRLs
2.4.4. Revoking Certificates and Checking Status
2.4.4.1. Revoking Certificates
- The end-entity pages. For details, see the Certificate Revocation Pages section in the Red Hat Certificate System Administration Guide.
- The
CMCRequestutility on the command line. For details, see the Performing a CMC Revocation section in the Red Hat Certificate System Administration Guide. - The
pkiutility on the command line. For details, see pki-cert(1) man page.
2.4.4.2. Certificate Status
2.4.4.2.1. CRLs
2.4.4.2.2. OCSP Services
- A CA is set up to issue certificates that include the Authority Information Access extension, which identifies an OCSP responder that can be queried for the status of the certificate.
- The CA periodically publishes CRLs to an OCSP responder.
- The OCSP responder maintains the CRL it receives from the CA.
- An OCSP-compliant client sends requests containing all the information required to identify the certificate to the OCSP responder for verification. The applications determine the location of the OCSP responder from the value of the Authority Information Access extension in the certificate being validated.
- The OCSP responder determines if the request contains all the information required to process it. If it does not or if it is not enabled for the requested service, a rejection notice is sent. If it does have enough information, it processes the request and sends back a report stating the status of the certificate.
2.4.4.2.2.1. OCSP Response Signing
- The CA that issued the certificate whose status is being checked.
- A responder with a public key trusted by the client. Such a responder is called a trusted responder.
- A responder that holds a specially marked certificate issued to it directly by the CA that revokes the certificates and publishes the CRL. Possession of this certificate by a responder indicates that the CA has authorized the responder to issue OCSP responses for certificates revoked by the CA. Such a responder is called a CA-designated responder or a CA-authorized responder.
2.4.4.2.2.2. OCSP Responses
- Good or Verified . Specifies a positive response to the status inquiry, meaning the certificate has not been revoked. It does not necessarily mean that the certificate was issued or that it is within the certificate's validity interval. Response extensions may be used to convey additional information on assertions made by the responder regarding the status of the certificate.
- Revoked . Specifies that the certificate has been revoked, either permanently or temporarily.
Note
2.4.4.2.2.3. OCSP Services
- The OCSP built into the Certificate Manager
- The Online Certificate Status Manager subsystem
Note
2.4.5. Archiving, Recovering, and Rotating Keys
- Clients that can generate dual keys and that support the key archival option (using the CRMF/CMMF protocol).
- An installed and configured KRA.
- HTML forms with which end entities can request dual certificates (based on dual keys) and key recovery agents can request key recovery.
2.4.5.1. Archiving Keys
- An employee loses the private encryption key and cannot read encrypted mail messages.
- An employee is on an extended leave, and someone needs to access an encrypted document.
- An employee leaves the company, and company officials need to perform an audit that requires gaining access to the employee's encrypted mail.
- When the key recovery agents search by the key ID, only the key that corresponds to that ID is returned.
- When the agents search by user name, all stored keys belonging to that owner are returned.
- When the agents search by the public key in a certificate, only the corresponding private key is returned.
- A transport key pair and corresponding certificate.
- A storage key pair.

Figure 2.2. How the Key Archival Process Works
- The client requests and generates a dual key pair.
- The end entity, using a client which can generate dual key pairs, submits a request through the Certificate Manager enrollment form.
- The client detects the JavaScript in the enrollment form and exports only the private encryption key, not the private signing key.
- The Certificate Manager detects the key archival option in the request and asks the client for the private encryption key.
- The client encrypts the private encryption key with the public key from the KRA's transport certificate embedded in the enrollment form.
- After approving the certificate request and issuing the certificate, the Certificate Manager sends it to the KRA for storage, along with the public key. The Certificate Manager waits for verification from the KRA that the private key has been received and stored and that it corresponds to the public encryption key.
- The KRA decrypts it with the private key. After confirming that the private encryption key corresponds to the public encryption key, the KRA encrypts it again with its public key pair of the storage key before storing it in its internal database.
- The Certificate Manager issues two certificates for the signing and encryption key pairs and returns them to the end entity.
2.4.5.2. Recovering Keys
- Asynchronous recovery means that each step of the recovery process — the initial request and each subsequent approval or rejection — is stored in the KRA's internal database, under the key entry. The data for the recovery process can be retrieved even if the original browser session is closed or the KRA is shut down. Agents search for the key to recover, without using a reference number.
- Synchronous recovery means that when the first agent initiates the key recovery process, the process persists and the original browser must remain open until the entire process is complete. When the agent starts the recovery process, the KRA returns a reference number. All subsequent agents use the Authorize Recovery area and that referral link to access the thread. Continuous updates on the approval status are sent to the initiating agent so they can check the status.With synchronous recovery, the page that the first agent used to initiate the key recovery request keeps refreshing until all agents required to authorize have performed the authorization. It is important that the first agent does not close this browser session until the authorization is complete. Otherwise, the key recovery request needs to be started again.
Important
The synchronous key recovery mechanism has been deprecated in Red Hat Certificate System 9. Red Hat recommends to use asynchronous key recovery instead.

Figure 2.3. Async and Sync Recovery, Side by Side
Warning
Important
pki utility to replicate this behavior. For more information, see the pki(1) and pki-key(1) man pages.
pki utility supports options that enable storing and retrieving these other types of secrets.
2.4.5.3. KRA Transport Key Rotation
- Generate a new KRA transport key and certificate
- Transfer the new transport key and certificate to KRA clones
- Update the CA configuration with the new KRA transport certificate
- Update the KRA configuration to use only the new transport key and certificate
- Generating the new KRA transport key and certificate
- Request the KRA transport certificate.
- Stop the KRA:
systemctl stop pki-tomcatd@pki-kra.service
- Go to the KRA NSS database directory:
cd /etc/pki/pki-kra/alias
- Create a subdirectory and save all the NSS database files into it. For example:
mkdir nss_db_backup cp *.db nss_db_backup
- Create a new request by using the
PKCS10Clientutility. For example:PKCS10Client -p password -d '.' -o 'req.txt' -n 'CN=KRA Transport 2 Certificate,O=example.com Security Domain'
Alternatively, use thecertutilutility. For example:certutil -d . -R -k rsa -g 2048 -s 'CN=KRA Transport 2 Certificate,O=example.com Security Domain' -f password-file -a -o transport-certificate-request-file
- Submit the transport certificate request on the Manual Data Recovery Manager Transport Certificate Enrollment page of the CA End-Entity page.
- Wait for the agent approval of the submitted request to retrieve the certificate by checking the request status on the End-Entity retrieval page.
- Approve the KRA transport certificate through the CA Agent Services interface.
- Retrieve the KRA transport certificate.
- Go to the KRA NSS database directory:
cd /etc/pki/pki-kra/alias
- Wait for the agent approval of the submitted request to retrieve the certificate by checking the request status on the End-Entity retrieval page.
- Once the new KRA transport certificate is available, paste its Base64-encoded value into a text file, for example a file named
cert-serial_number.txt. Do not include the header (-----BEGIN CERTIFICATE-----) or the footer (-----END CERTIFICATE-----).
- Import the KRA transport certificate.
- Go to the KRA NSS database directory:
cd /etc/pki/pki-kra/alias
- Import the transport certificate into the KRA NSS database:
certutil -d . -A -n 'transportCert-serial_number cert-pki-kra KRA' -t 'u,u,u' -a -i cert-serial_number.txt
- Update the KRA transport certificate configuration.
- Go to the KRA NSS database directory:
cd /etc/pki/pki-kra/alias
- Verify that the new KRA transport certificate is imported:
certutil -d . -L certutil -d . -L -n 'transportCert-serial_number cert-pki-kra KRA'
- Open the
/var/lib/pki/pki-kra/kra/conf/CS.cfgfile and add the following line:kra.transportUnit.newNickName=transportCert-serial_number cert-pki-kra KRA
- Propagating the new transport key and certificate to KRA clones
- Start the KRA:
systemctl start pki-tomcatd@pki-kra.service
- Extract the new transport key and certificate for propagation to clones.
- Go to the KRA NSS database directory:
cd /etc/pki/pki-kra/alias
- Stop the KRA:
systemctl stop pki-tomcatd@pki-kra.service
- Verify that the new KRA transport certificate is present:
certutil -d . -L certutil -d . -L -n 'transportCert-serial_number cert-pki-kra KRA'
- Export the KRA new transport key and certificate:
pk12util -o transport.p12 -d . -n 'transportCert-serial_number cert-pki-kra KRA'
- Verify the exported KRA transport key and certificate:
pk12util -l transport.p12
- Perform these steps on each KRA clone:
- Copy the
transport.p12file, including the transport key and certificate, to the KRA clone location. - Go to the clone NSS database directory:
cd /etc/pki/pki-kra/alias
- Stop the KRA clone:
systemctl stop pki-tomcatd@pki-kra.service
- Check the content of the clone NSS database:
certutil -d . -L
- Import the new transport key and certificate of the clone:
pk12util -i transport.p12 -d .
- Add the following line to the
/var/lib/pki/pki-kra/kra/conf/CS.cfgfile on the clone:kra.transportUnit.newNickName=transportCert-serial_number cert-pki-kra KRA
- Start the KRA clone:
systemctl start pki-tomcatd@pki-kra.service
- Updating the CA configuration with the new KRA transport certificate
- Format the new KRA transport certificate for inclusion in the CA.
- Obtain the
cert-serial_number.txtKRA transport certificate file created when retrieving the KRA transport certificate in the previous procedure. - Convert the Base64-encoded certificate included in
cert-serial_number.txtto a single-line file:tr -d '\n' < cert-serial_number.txt > cert-one-line-serial_number.txt
- Do the following for the CA and all its clones corresponding to the KRA above:
- Stop the CA:
systemctl stop pki-tomcatd@pki-ca.service
- In the
/var/lib/pki/pki-ca/ca/conf/CS.cfgfile, locate the certificate included in the following line:ca.connector.KRA.transportCert=certificate
Replace that certificate with the one contained incert-one-line-serial_number.txt. - Start the CA:
systemctl start pki-tomcatd@pki-ca.service
Note
While the CA and all its clones are being updated with the new KRA transport certificate, the CA instances that have completed the transition use the new KRA transport certificate, and the CA instances that have not yet been updated continue to use the old KRA transport certificate. Because the corresponding KRA and its clones have already been updated to use both transport certificates, no downtime occurs.- Updating the KRA configuration to use only the new transport key and certificate
- For the KRA and each of its clones, do the following:
- Go to the KRA NSS database directory:
cd /etc/pki/pki-kra/alias
- Stop the KRA:
systemctl stop pki-tomcatd@pki-kra.service
- Verify that the new KRA transport certificate is imported:
certutil -d . -L certutil -d . -L -n 'transportCert-serial_number cert-pki-kra KRA'
- Open the
/var/lib/pki/pki-kra/kra/conf/CS.cfgfile, and look for thenickNamevalue included in the following line:kra.transportUnit.nickName=transportCert cert-pki-kra KRAReplace thenickNamevalue with thenewNickNamevalue included in the following line:kra.transportUnit.newNickName=transportCert-serial_number cert-pki-kra KRAAs a result, theCS.cfgfile includes this line:kra.transportUnit.nickName=transportCert-serial_number cert-pki-kra KRA - Remove the following line from
/var/lib/pki/pki-kra/kra/conf/CS.cfg:kra.transportUnit.newNickName=transportCert-serial_number cert-pki-kra KRA
- Start the KRA:
systemctl start pki-tomcatd@pki-kra.service
2.5. Smart Card Token Management with Certificate System

Figure 2.4. How the TMS Manages Smart Cards
2.5.1. Token Key Service (TKS)
Note
2.5.1.1. Master Keys and Key Sets
CS.cfg). Each TPS profile contains a configuration to direct its enrollment to the proper TKS keySet for the matching key derivation process that would essentially be responsible for establishing the Secure Channel secured by a set of session-specific keys between TMS and the smart card token.
2.5.1.3. Key Update (Key Changeover)
Important
2.5.1.4. APDUs and Secure Channels
- Command APDUs, sent by the TPS to smart cards
- Response APDUs, sent by smart cards to the TPS as response to command APDUs
2.5.2. Token Processing System (TPS)
2.5.2.1. Coolkey Applet
2.5.2.2. Token Operations
- Token Format - The format operation is responsible for installing the proper Coolkey applet onto the token. The applet provides a platform where subsequent cryptographic keys and certificates can be later placed.
- Token Enrollment - The enrollment operation results in a smart card populated with required cryptographic keys and cryptographic certificates. This material allows the user of the smart card to participate in operations such as secure web site access and secure mail. Two types of enrollments are supported, which is configured globally:
- Internal Registration - Enrollment by TPS profiles determined by the profile Mapping Resolver.
- External Registration - Enrollment by TPS profiles determined by the entries in the user’s LDAP record.
- Token PIN Reset - The token PIN reset operation allows the user of the token to specify a new PIN that is used to log into the token, making it available for performing cryptographic operations.
- Key Generation - Each PKI certificate is comprised of a public/private key pair. In Red Hat Certificate System, the generation of the keys can be done in two ways, depending on the TPS profile configuration:
- Token Side Key Generation - The PKI key pairs are generated on the smart card token. Generating the key pairs on the token side does not allow for key archival.
- Server Side Key Generation - The PKI key pairs are generated on the TMS server side. The key pairs are then sent back to the token using Secure Channel. Generating the key pairs on the server side allows for key archival.
- Certificate Renewal - This operation allows a previously enrolled token to have the certificates currently on the token reissued while reusing the same keys. This is useful in situations where the old certificates are due to expire and you want to create new ones but maintain the original key material.
- Certificate Revocation - Certificate revocation can be triggered based on TPS profile configuration or based on token state.Normally, only the CA which issued a certificate can revoke it, which could mean that retiring a CA would make it impossible to revoke certain certificates. However, it is possible to route revocation requests for tokens to the retired CA while still routing all other requests such as enrollment to a new, active CA. This mechanism is called Revocation Routing.
- Token Key Changeover - The key changeover operation, triggered by a format operation, results in the ability to change the internal keys of the token from the default developer key set to a new key set controlled by the deployer of the Token Processing System. This is usually done in any real deployment scenario since the developer key set is better suited to testing situations.
- Applet Update - During the course of a TMS deployment, the Coolkey smart card applet can be updated or downgraded if required.
2.5.2.3. TPS Profiles
- The steps taken to Format or Enroll a token.
- The attributes contained within the finished token after the operation has been successfully completed.
- How does the TPS connect to the user's authentication LDAP database?
- Will user authentication be required for this token operation? If so, what authentication manager will be used?
- How does the TPS connect to a Certificate System CA from which it will obtain certificates?
- How are the private and public keys generated on this token? Are they generated on the token side or on the server side?
- What key size (in bits) is to be used when generating private and public keys?
- Which certificate enrollment profile (provisioned by the CA) is to be used to generate the certificates on this token?
Note
This setting will determine the final structure of the certificates to be written to the token. Different certificates can be created for different uses, based on extensions included in the certificate. For example, one certificate can specialize in data encryption, and another one can be used for signature operations. - What version of the Coolkey applet will be required on the token?
- How many certificates will be placed on this token for an enrollment operation?
- Internal Registration - In this case, the TPS profile (
tokenType) is determined by the profile Mapping Resolver. This filter-based resolver can be configured to take any of the data provided by the token into account and determine the target profile. - External Registration - When using external registration, the profile (in name only - actual profiles are still defined in the TPS in the same fashion as those used by the internal registration) is specified in each user's LDAP record, which is obtained during authentication. This allows the TPS to obtain key enrollment and recovery information from an external registration Directory Server where user information is stored. This gives you the control to override the enrollment, revocation, and recovery policies that are inherent to the TPS internal registration mechanism. The user LDAP record attribute names relevant to external registration are configurable.External registration can be useful when the concept of a "group certificate" is required. In that case, all users within a group can have a special record configured in their LDAP profiles for downloading a shared certificate and keys.
2.5.2.4. Token Database
2.5.2.4.1. Token States and Transitions
2.5.2.4.1.1. Token States
Table 2.9. Possible Token States
| Name | Code | Label |
|---|---|---|
| FORMATTED | 0 | Formatted (uninitialized) |
| DAMAGED | 1 | Physically damaged |
| PERM_LOST | 2 | Permanently lost |
| SUSPENDED | 3 | Suspended (temporarily lost) |
| ACTIVE | 4 | Active |
| TERMINATED | 6 | Terminated |
| UNFORMATTED | 7 | Unformatted |
Note
5, which previously belonged to a state that was removed.
2.5.2.4.1.2. Token State Transitions Done Using the Graphical or Command Line Interface
FORMATTED to ACTIVE or DAMAGED, but it can never transition from FORMATTED to UNFORMATTED.
tokendb.allowedTransitions property, and the tps.operations.allowedTransitions property controls allowed transitions triggered by token operations.
/usr/share/pki/tps/conf/CS.cfg configuration file.
2.5.2.4.1.2.1. Token State Transitions Using the Command Line or Graphical Interface
tokendb.allowedTransitions property:
tokendb.allowedTransitions=0:1,0:2,0:3,0:6,3:2,3:6,4:1,4:2,4:3,4:6,6:7
<current code>:<new code>. The codes are described in Table 2.9, “Possible Token States”. The default configuration is preserved in /usr/share/pki/tps/conf/CS.cfg.
Table 2.10. Possible Manual Token State Transitions
| Transition | Current State | Next State | Description |
|---|---|---|---|
| 0:1 | FORMATTED | DAMAGED | This token has been physically damaged. |
| 0:2 | FORMATTED | PERM_LOST | This token has been permanently lost. |
| 0:3 | FORMATTED | SUSPENDED | This token has been suspended (temporarily lost). |
| 0:6 | FORMATTED | TERMINATED | This token has been terminated. |
| 3:2 | SUSPENDED | PERM_LOST | This suspended token has been permanently lost. |
| 3:6 | SUSPENDED | TERMINATED | This suspended token has been terminated. |
| 4:1 | ACTIVE | DAMAGED | This token has been physically damaged. |
| 4:2 | ACTIVE | PERM_LOST | This token has been permanently lost. |
| 4:3 | ACTIVE | SUSPENDED | This token has been suspended (temporarily lost). |
| 4:6 | ACTIVE | TERMINATED | This token has been terminated. |
| 6:7 | TERMINATED | UNFORMATTED | Reuse this token. |
FORMATTED and then became SUSPENDED, it can only return to the FORMATTED state. If a token was originally ACTIVE and then became SUSPENDED, it can only return to the ACTIVE state.
Table 2.11. Token State Transitions Triggered Automatically
| Transition | Current State | Next State | Description |
|---|---|---|---|
| 3:0 | SUSPENDED | FORMATTED | This suspended (temporarily lost) token has been found. |
| 3:4 | SUSPENDED | ACTIVE | This suspended (temporarily lost) token has been found. |
2.5.2.4.1.3. Token State Transitions using Token Operations
tokendb.allowedTransitions property:
tps.operations.allowedTransitions=0:0,0:4,4:4,4:0,7:0
<current code>:<new code>. The codes are described in Table 2.9, “Possible Token States”. The default configuration is preserved in /usr/share/pki/tps/conf/CS.cfg.
Table 2.12. Possible Token State Transitions using Token Operations
| Transition | Current State | Next State | Description |
|---|---|---|---|
| 0:0 | FORMATTED | FORMATTED | This allows reformatting a token or upgrading applet/key in a token. |
| 0:4 | FORMATTED | ACTIVE | This allows enrolling a token. |
| 4:4 | ACTIVE | ACTIVE | This allows re-enrolling an active token. May be useful for external registration. |
| 4:0 | ACTIVE | FORMATTED | This allows formatting an active token. |
| 7:0 | UNFORMATTED | FORMATTED | This allows formatting a blank or previously used token. |
2.5.2.4.1.4. Token State and Transition Labels
/usr/share/pki/tps/conf/token-states.properties configuration file. By default, the file has the following contents:
# Token states UNFORMATTED = Unformatted FORMATTED = Formatted (uninitialized) ACTIVE = Active SUSPENDED = Suspended (temporarily lost) PERM_LOST = Permanently lost DAMAGED = Physically damaged TEMP_LOST_PERM_LOST = Temporarily lost then permanently lost TERMINATED = Terminated # Token state transitions FORMATTED.DAMAGED = This token has been physically damaged. FORMATTED.PERM_LOST = This token has been permanently lost. FORMATTED.SUSPENDED = This token has been suspended (temporarily lost). FORMATTED.TERMINATED = This token has been terminated. SUSPENDED.ACTIVE = This suspended (temporarily lost) token has been found. SUSPENDED.PERM_LOST = This suspended (temporarily lost) token has become permanently lost. SUSPENDED.TERMINATED = This suspended (temporarily lost) token has been terminated. SUSPENDED.FORMATTED = This suspended (temporarily lost) token has been found. ACTIVE.DAMAGED = This token has been physically damaged. ACTIVE.PERM_LOST = This token has been permanently lost. ACTIVE.SUSPENDED = This token has been suspended (temporarily lost). ACTIVE.TERMINATED = This token has been terminated. TERMINATED.UNFORMATTED = Reuse this token.
2.5.2.4.1.5. Customizing Allowed Token State Transitions
/var/lib/pki/instance_name/tps/conf/CS.cfg:
tokendb.allowedTransitionsto customize the list of allowed transitions performed using the command line or graphical interfacetps.operations.allowedTransitionsto customize the list of allowed transitions using token operations
/usr/share/pki/tps/conf/CS.cfg.
2.5.2.4.1.6. Customizing Token State and Transition Labels
/usr/share/pki/tps/conf/token-states.properties into your instance folder (/var/lib/pki/instance_name/tps/conf/CS.cfg), and change the labels listed inside as needed.
token-states.properties file from your instance folder.
2.5.2.4.1.7. Token Activity Log
Table 2.13. TPS Activity Log Events
| Activity | Description |
|---|---|
| add | A token was added. |
| format | A token was formatted. |
| enrollment | A token was enrolled. |
| recovery | A token was recovered. |
| renewal | A token was renewed. |
| pin_reset | A token PIN was reset. |
| token_status_change | A token status was changed using the command line or graphical interface. |
| token_modify | A token was modified. |
| delete | A token was deleted. |
| cert_revocation | A token certificate was revoked. |
| cert_unrevocation | A token certificate was unrevoked. |
2.5.2.4.2. Token Policies
RE_ENROLL=YES;RENEW=NO;FORCE_FORMAT=NO;PIN_RESET=NO;RESET_PIN_RESET_TO_NO=NO;RENEW_KEEP_OLD_ENC_CERTS=YES
2.5.2.5. Mapping Resolver
Note
FilterMappingResolver is the only mapping resolver implementation provided with the TPS by default. It allows you to define a set of mappings and a target result for each mapping. Each mapping contains a set of filters, where:
- If the input filter parameters pass all filters within a mapping, the
targetvalue is assigned. - If the input parameters fail a filter, that mapping is skipped and the next one in order is tried.
- If a filter has no specified value, it always passes.
- If a filter does have a specified value, then the input parameters must match exactly.
- The order in which mappings are defined is important. The first mapping which passes is considered resolved and is returned to the caller.
FilterMappingResolver according to the above rules. The following input filter parameters are supported by FilterMappingResolver:
appletMajorVersion- The major version of the Coolkey applet on the token.appletMinorVersion- The minor version of the Coolkey applet on the token.keySetortokenTypekeySet- can be set as an extension in the client request. Must match the value in the filter if the extension is specified. The keySet mapping resolver is meant for determining keySet value when using external registration. The Key Set Mapping Resolver is necessary in the external registration environment when multiple key sets are supported (for example, different smart card token vendors). The keySet value is needed for identifying the master key on TKS, which is crucial for establishing Secure Channel. When a user's LDAP record is populated with a set tokenType (TPS profile), it does not know which card will end up doing the enrollment, and therefore keySet cannot be predetermined. ThekeySetMappingResolverhelps solve the issue by allowing the keySet to be resolved before authentication.tokenType- okenType can be set as an extension in the client request. It must match the value in the filter if the extension is specified. tokenType (also referred to as TPS Profile) is determined at this time for the internal registration environment.
tokenATR- The token's Answer to Reset (ATR).tokenCUID- "start" and "end" define the range the Card Unique IDs (CUID) of the token must fall in to pass this filter.
2.5.2.6. TPS Roles
- TPS Administrator - this role is allowed to:
- Manage TPS tokens
- View TPS certificates and activities
- Manage TPS users and groups
- Change general TPS configuration
- Manage TPS authenticators and connectors
- Configure TPS profiles and profile mappings
- Configure TPS audit logging
- TPS Agent - this role is allowed to:
- Configure TPS tokens
- View TPS certificates and activities
- Change the status of TPS profiles
- TPS Operator - this role is allowed to:
- View TPS tokens, certificates, and activities
2.5.4. Enterprise Security Client (ESC)
2.6. Red Hat Certificate System Services
2.6.1. Notifications
2.6.2. Jobs
2.6.3. Logging
2.6.4. Auditing
2.6.5. Self-Tests
2.6.6. Users, Authorization, and Access Controls
- Administrators, who can perform any administrative or configuration task for a subsystem.
- Agents, who perform PKI management tasks, like approving certificate requests, managing token enrollments, or recovering keys.
- Auditors, who can view and configure audit logs.
2.7. Red Hat Certificate System User Interfaces
2.7.1. Administrative Consoles
2.7.1.1. The Java Administrative Console for CA, OCSP, KRA, and TKS Subsystems
pkiconsole utility. It can access any subsystem because the command requires the host name, the subsystem's administrative SSL/TLS port, and the specific subsystem type.
pkiconsole https://server.example.com:admin_port/subsystem_type

Figure 2.5. Certificate System Console
- Users and groups
- Access control lists
- Log configuration
- Subsystem certificates (meaning the certificates issued to the subsystem for use, for example, in the security domain or audit signing)
2.7.1.2. The Administrative Interface for TPS
Note
CS.cfg file.

Figure 2.6. TPS Admin Page
2.7.2. Agent Interfaces

Figure 2.7. Certificate Manager's Agent Services Page
- The Certificate Manager agent services include approving certificate requests (which issues the certificates), revoking certificates, and publishing certificates and CRLs. All certificates issued by the CA can be managed through its agent services page.
- The TPS agent services, like the CA agent services, manages all of the tokens which have been formatted and have had certificates issued to them through the TPS. Tokens can be enrolled, suspended, and deleted by agents. Two other roles (operator and admin) can view tokens in web services pages, but cannot perform any actions on the tokens.
- KRA agent services pages process key recovery requests, which set whether to allow a certificate to be issued reusing an existing key pair if the certificate is lost.
- The OCSP agent services page allows agents to configure CAs which publish CRLs to the OCSP, to load CRLs to the OCSP manually, and to view the state of client OCSP requests.
2.7.3. End User Pages

Figure 2.8. Certificate Manager's End-Entities Page
2.7.4. Enterprise Security Client
- Supports JavaCard 2.1 or higher cards and Global Platform 2.01-compliant smart cards like Safenet's 330J smart card.
- Supports Gemalto TOP IM FIPS CY2 tokens, both the smart card and GemPCKey USB form factor key.
- Supports SafeNet Smart Card 650 (SC650).
- Enrolls security tokens so they are recognized by TPS.
- Maintains the security token, such as re-enrolling a token with TPS.
- Provides information about the current status of the token or tokens being managed.
- Supports server-side key generation so that keys can be archived and recovered on a separate token if a token is lost.
- Allows the user to enroll security tokens so they are recognized by the TPS.
- Allows the user to maintain the security token. For example, Enterprise Security Client makes it possible to re-enroll a token with the TPS.
- Provides support for several different kinds of tokens through default and custom token profiles. By default, the TPS can automatically enroll user keys, device keys, and security officer keys; additional profiles can be added so that tokens for different uses (recognized by attributes such as the token CUID) can automatically be enrolled according to the appropriate profile.
- Provides information about the current status of the tokens being managed.
2.7.5. Command Line Interface (CLI)
$pki [CLI options]<command> [command parameters]
$pki -c <password> client-init
~/.dogtag/nssdb directory. The password must be specified in all CLI operations that uses the client NSS database.
$pki -c <password> pkcs12-import --pkcs12-file <file> --pkcs12-password <password>
$pki -n <nickname> -c ≶password> <command> [command parameters]
pki command without any additional commands or parameters:
$pki
pki with the command name and no additional options. For example:
$pki ca
$pki tps
--help option:
$pki --help
$pki ca-cert-find --help
help command:
$pki help
$pki help ca-cert-find
2.8. About Cloning
Note

Figure 2.9. Cloning Example
- DNS round-robin, a feature for managing network congestion that distributes load across several different servers.
- Sticky SSL/TLS, which makes it possible for a user returning to the system to be routed the same host used previously.
[Tomcat] section to the PKI instance override configuration file and adding the following two name=value pairs under that section:
[Tomcat] pki_clone_setup_replication=False pki_clone_reindex_data=False
Important
pkispawn is invoked when specifying this kind of installation.
2.8.1. Cloning for CAs
begin*Number and end*Number attributes, with separate ranges defined for requests and certificate serial numbers. For example:
dbs.beginRequestNumber=1 dbs.beginSerialNumber=1 dbs.enableSerialManagement=true dbs.endRequestNumber=9980000 dbs.endSerialNumber=ffe0000 dbs.replicaCloneTransferNumber=5
Note
Important
CS.cfg file — such as adding a KRA connection or creating a custom profile — are not copied into a clone's configuration if the change occurs after the clone is created.
2.8.2. Cloning for KRAs
Important
2.8.3. Cloning for Other Subsystems
2.8.4. Cloning and Key Stores
pki_backup_keys and pki_backup_password parameters in the pkispawn configuration file. See the BACKUP PARAMETERS section in the pki_default.cfg(5) man page for more details.
PKCS12Export utility, as described in Section 10.1, “Backing up Subsystem Keys from a Software Database”.
pkispawn configuration file using the pki_clone_pkcs12_password and pki_clone_pkcs12_path parameters For more information, see the Installing a Clone section in the pkispawn(8) man page. In particular, make sure that the PKCS#12 file is accessible by the pkiuser user and that it has the correct SELinux label.
- Duplicate all the required keys and certificates, except the SSL/TLS server key and certificate to the clone instance. Keep the nicknames for those certificates the same. Additionally, copy all the necessary trusted root certificates from the master instance to the clone instance, such as chains or cross-pair certificates.
- If the token is network-based, then the keys and certificates simply need to be available to the token; the keys and certificates do not need to be copied.
- When using a network-based hardware token, make sure the high-availability feature is enabled on the hardware token to avoid single point of failure.
2.8.5. LDAP and Port Considerations
Note
- If the master uses SSL/TLS to connect to its database, then the clone uses SSL/TLS, and the master/clone Directory Server databases use SSL/TLS connections for replication.
- If the master uses a standard connection to its database, then the clone must use a standard connection, and the Directory Server databases can use unencrypted connections for replication.
- If the master uses a standard connection to its database, then the clone must use a standard connection, but there is an option to use Start TLS for the master/clone Directory Server databases for replication. Start TLS opens a secure connection over a standard port.
Note
To use Start TLS, the Directory Server must still be configured to accept SSL/TLS connections. This means that prior to configuring the clone, a server certificate and a CA certificate must be installed on the Directory Server, and SSL/TLS must be enabled.
Important
2.8.6. Replica ID Numbers
dbs.beginReplicaNumber=1 dbs.endReplicaNumber=95
2.8.7. Custom Configuration and Clones
CS.cfg file — outside the replicated database.
CS.cfg file, but this connector information is not added to the clone CA configuration. If a certificate request that includes a key archival is submitted to the master CA, then the key archival is forwarded to the KRA using the CA-KRA connector information. If the request is submitted to the clone CA, no KRA is recognized, and the key archival request is disallowed.
Note
Chapter 3. Supported Standards and Protocols
3.1. PKCS #11

- The default internal PKCS #11 module, which comes with two tokens:
- The internal crypto services token, which performs all cryptographic operations such as encryption, decryption, and hashing.
- The internal key storage token ("Certificate DB token"), which handles all communication with the certificate and key database files that store certificates and keys.
- The FIPS 140 module. This module complies with the FIPS 140 government standard for cryptographic module implementations. The FIPS 140 module includes a single, built-in FIPS 140 certificate database token, which handles both cryptographic operations and communication with the certificate and key database files.
secmod.db database for the subsystem. The modutil utility is used to modify this file when there are changes to the system, such as installing a hardware accelerator to use for signing operations. For more information on modutil, see http://www.mozilla.org/projects/security/pki/nss/tools/.
3.2. SSL/TLS, ECC, and RSA
Note
Note
3.2.1. Supported Cipher Suites
3.2.2. Using ECC
Note
3.3. IPv4 and IPv6 Addresses
- Communications between subsystems, including between the TPS, TKS, and CA and for joining security domains
- Token operations between the TPS and the Enterprise Security Client
- Subsystem logging
- Access control instructions
- Operations performed with Certificate System tools, including the
pkiutility, the Subject Alt Name Extension tool, HttpClient, and the Bulk Issuance Tool - Client communications, including both the
pkiconsoleutility and IPv6-enabled browsers for web services - Certificate request names and certificate subject names, including user, server, and router certificates
- Publishing
- Connecting to LDAP databases for internal databases and authentication directories
- An IPv4 address must be in the format
n.n.n.norn.n.n.n,m.m.m.m. For example,128.21.39.40or128.21.39.40,255.255.255.00. - An IPv6 address uses a 128-bit namespace, with the IPv6 address separated by colons and the netmask separated by periods. For example, 0:0:0:0:0:0:13.1.68.3, FF01::43, or 0:0:0:0:0:0:13.1.68.3,FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:255.255.255.0.
https://ipv6host.example.com:8443/ca/services pkiconsole https://ipv6host.example.com:8443/ca
[]). For example:
https://[00:00:00:00:123:456:789:00:]:8443/ca/services pkiconsole https://[00:00:00:00:123:456:789:00:]:8443/ca
3.4. Supported PKIX Formats and Protocols
Table 3.1. PKIX Standards Supported in Certificate System 9
| Format or Protocol | RFC or Draft | Description |
|---|---|---|
| X.509 version 1 and version 3 | Digital certificate formats recommended by the International Telecommunications Union (ITU). | |
| Certificate Request Message Format (CRMF) | RFC 4211 | A message format to send a certificate request to a CA. |
| Certificate Management Message Formats (CMMF) | Message formats to send certificate requests and revocation requests from end entities to a CA and to return information to end entities. CMMF has been subsumed by another standard, CMC. | |
| Certificate Management Messages over CS (CMC) | RFC 5274 | A general interface to public-key certification products based on CS and PKCS #10, including a certificate enrollment protocol for RSA-signed certificates with Diffie-Hellman public-keys. CMC incorporates CRMF and CMMF. |
| Cryptographic Message Syntax (CMS) | RFC 2630 | A superset of PKCS #7 syntax used for digital signatures and encryption. |
| PKIX Certificate and CRL Profile | RFC 5280 | A standard developed by the IETF for a public-key infrastructure for the Internet. It specifies profiles for certificates and CRLs. |
| Online Certificate Status Protocol (OCSP) | RFC 6960 | A protocol useful in determining the current status of a digital certificate without requiring CRLs. |
3.5. Supported Security and Directory Protocols
Table 3.2. Supported Security and Directory Protocols
| Protocol | Description |
|---|---|
| FIPS PUBS 140 | Federal Information Standards Publications (FIPS PUBS) 140 is a US government standard for implementing cryptographic modules such as hardware or software that encrypts and decrypts data, creates and verifies digital signatures, and provides other cryptographic functions. More information is available at http://csrc.nist.gov/publications/PubsFIPS.html. |
| Hypertext Transport Protocol (HTTP) and Hypertext Transport Protocol Secure (HTTPS) | Protocols used to communicate with web servers. |
| KEYGEN tag | An HTML tag that generates a key pair for use with a certificate. |
| Lightweight Directory Access Protocol (LDAP) v2, v3 | A directory service protocol designed to run over TCP/IP and across multiple platforms. LDAP is a simplified version of Directory Access Protocol (DAP), used to access X.500 directories. LDAP is under IETF change control and has evolved to meet Internet requirements. |
| Public-Key Cryptography Standard (PKCS) #7 | An encrypted data and message format developed by RSA Data Security to represent digital signatures, certificate chains, and encrypted data. This format is used to deliver certificates to end entities. |
| Public-Key Cryptography Standard (PKCS) #10 | A message format developed by RSA Data Security for certificate requests. This format is supported by many server products. |
| Public-Key Cryptography Standard (PKCS) #11 | Specifies an API used to communicate with devices such as hardware tokens that hold cryptographic information and perform cryptographic operations. |
| Transport Layer Security (TLS) | A set of rules governing server authentication, client authentication, and encrypted communication between servers and clients. |
| Security-Enhanced Linux | Security-enhanced Linux (SELinux) is a set of security protocols enforcing mandatory access control on Linux system kernels. SELinux was developed by the United States National Security Agency to keep applications from accessing confidential or protected files through lenient or flawed access controls. |
| Simple Certificate Enrollment Protocol (SCEP) | A protocol designed by Cisco to specify a way for a router to communicate with a CA for router certificate enrollment. Certificate System supports SCEP's CA mode of operation, where the request is encrypted with the CA signing certificate. |
| UTF-8 | The certificate enrollment pages support all UTF-8 characters for specific fields (common name, organizational unit, requester name, and additional notes). The UTF-8 strings are searchable and correctly display in the CA, OCSP, and KRA end user and agents services pages. However, the UTF-8 support does not extend to internationalized domain names, such as those used in email addresses. |
| HTTPS | This protocol consists of communication over HTTP (Hypertext Transfer Protocol) within a connection encrypted by Transport Layer Security (TLS). The main purpose of HTTPS is authentication of the visited website and protection of privacy and integrity of the exchanged data. |
| IPv4 and IPv6 | Certificate System supports both IPv4 and IPv6 address namespaces for communications and operations with all subsystems and tools, as well as for clients, subsystem creation, and token and certificate enrollment. |
Chapter 4. Supported Platforms, Hardware, and Programs
4.1. General Requirements
4.2. Supported Character Sets
- Common name (used in the subject name of the certificate)
- Organizational unit (used in the subject name of the certificate)
- Requester name
- Additional notes (comments appended by the agent to the certificate)
Note
Chapter 5. Planning the Certificate System
5.1. Deciding on the Required Subsystems
- It is requested and issued.
- It is valid.
- It expires.
- What if an employee leaves the company before the certificate expires?
- When a CA signing certificate expires, all of the certificates issued and signed using that certificate also expire. So will the CA signing certificate be renewed, allowing its issued certificates to remain valid, or will it be reissued?
- What if an employee loses a smart card or leaves it at home. Will a replacement certificate be issued using the original certificates keys? Will the other certificates be suspended or revoked? Are temporary certificates allowed?
- When a certificate expires, will a new certificate be issued or will the original certificate be renewed?
5.1.1. Using a Single Certificate Manager

Figure 5.1. CA Only Certificate System

5.1.2. Planning for Lost Keys: Key Archival and Recovery

Figure 5.2. CA and KRA
Note
5.1.3. Balancing Certificate Request Processing
5.1.4. Balancing Client OCSP Requests

Figure 5.3. CA and OCSP
5.1.5. Using Smart Cards

5.2. Defining the Certificate Authority Hierarchy
Note
5.2.1. Subordination to a Public CA
5.2.2. Subordination to a Certificate System CA
5.2.3. Linked CA
5.2.4. CA Cloning
Note
pk12util or the PKCS12Export commands.
5.3. Planning Security Domains
Example Corp Intranet PKI. All other subsystems — KRA, TPS, TKS, OCSP, and other CAs — must become members of the security domain by supplying the security domain URL when configuring the subsystem.
ou=Security Domain,dc=server.example.com-pki-ca
pkiSecurityGroup) to identify the group type:
cn=KRAList,ou=Security Domain,o=pki-tomcat-CA objectClass: top objectClass: pkiSecurityGroup cn: KRAList
pkiSubsystem object class to identify the entry type:
dn: cn=kra.example.com:8443,cn=KRAList,ou=Security Domain,o=pki-tomcat-CA objectClass: top objectClass: pkiSubsystem cn: kra.example.com:8443 host: server.example.com UnSecurePort: 8080 SecurePort: 8443 SecureAdminPort: 8443 SecureAgentPort: 8443 SecureEEClientAuthPort: 8443 DomainManager: false Clone: false SubsystemName: KRA kra.example.com 8443
- The CA hosting the security domain can be signed by an external authority.
- Multiple security domains can be set up within an organization. However, each subsystem can belong to only one security domain.
- Subsystems within a domain can be cloned. Cloning subsystem instances distributes the system load and provides failover points.
- The security domain streamlines configuration between the CA and KRA; the KRA can push its KRA connector information and transport certificates automatically to the CA instead of administrators having to manually copy the certificates over to the CA.
- The Certificate System security domain allows an offline CA to be set up. In this scenario, the offline root has its own security domain. All online subordinate CAs belong to a different security domain.
- The security domain streamlines configuration between the CA and OCSP. The OCSP can push its information to the CA for the CA to set up OCSP publishing and also retrieve the CA certificate chain from the CA and store it in the internal database.
5.4. Determining the Requirements for Subsystem Certificates
5.4.1. Determining Which Certificates to Install
Table 5.1. Initial Subsystem Certificates
| Subsystem | Certificates |
|---|---|
| Certificate Manager |
|
| OCSP |
|
| KRA |
|
| TKS |
|
| TPS |
|
- Generating new key pairs when creating a new self-signed CA certificate for a root CA will invalidate all certificates issued under the previous CA certificate.This means none of the certificates issued or signed by the CA using its old key will work; subordinate Certificate Managers, KRAs, OCSPs, TKSs, and TPSs will no longer function, and agents can no longer to access agent interfaces.This same situation occurs if a subordinate CA's CA certificate is replaced by one with a new key pair; all certificates issued by that CA are invalidated and will no longer work.Instead of creating new certificates from new key pairs, consider renewing the existing CA signing certificate.
- If the CA is configured to publish to the OCSP and it has a new CA signing certificate or a new CRL signing certificate, the CA must be identified again to the OCSP.
- If a new transport certificate is created for the KRA, the KRA information must be updated in the CA's configuration file,
CS.cfg. The existing transport certificate must be replaced with the new one in theca.connector.KRA.transportCertparameter. - If a CA is cloned, then when creating a new SSL/TLS server certificate for the master Certificate Manager, the clone CAs' certificate databases all need updated with the new SSL/TLS server certificate.
- If the Certificate Manager is configured to publish certificates and CRLs to an LDAP directory and uses the SSL/TLS server certificate for SSL/TLS client authentication, then the new SSL/TLS server certificate must be requested with the appropriate extensions. After installing the certificate, the publishing directory must be configured to use the new server certificate.
- Any number of SSL/TLS server certificates can be issued for a subsystem instance, but it really only needs one SSL/TLS certificate. This certificate can be renewed or replaced as many times as necessary.
5.4.2. Planning the CA Distinguished Name
cn=demoCA, o=Example Corporation, ou=Engineering, c=US
5.4.3. Setting the CA Signing Certificate Validity Period
5.4.4. Choosing the Signing Key Type and Length
- SHA256withRSA
- SHA512withRSA
- SHA256withEC
- SHA512withEC
Note
5.4.5. Using Certificate Extensions
- Trust. The X.500 specification establishes trust by means of a strict directory hierarchy. By contrast, Internet and extranet deployments frequently involve distributed trust models that do not conform to the hierarchical X.500 approach.
- Certificate use. Some organizations restrict how certificates are used. For example, some certificates may be restricted to client authentication only.
- Multiple certificates. It is not uncommon for certificate users to possess multiple certificates with identical subject names but different key material. In this case, it is necessary to identify which key and certificate should be used for what purpose.
- Alternate names. For some purposes, it is useful to have alternative subject names that are also bound to the public key in the certificate.
- Additional attributes. Some organizations store additional information in certificates, such as when it is not possible to look up information in a directory.
- Relationship with CA. When certificate chaining involves intermediate CAs, it is useful to have information about the relationships among CAs embedded in their certificates.
- CRL checking. Since it is not always possible to check a certificate's revocation status against a directory or with the original certificate authority, it is useful for certificates to include information about where to check CRLs.
5.4.5.1. Structure of Certificate Extensions
Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING }- The object identifier (OID) for the extension. This identifier uniquely identifies the extension. It also determines the ASN.1 type of value in the value field and how the value is interpreted. When an extension appears in a certificate, the OID appears as the extension ID field (
extnID) and the corresponding ASN.1 encoded structure appears as the value of the octet string (extnValue). - A flag or Boolean field called
critical.The value, which can be eithertrueorfalse, assigned to this field indicates whether the extension is critical or noncritical to the certificate.- If the extension is critical and the certificate is sent to an application that does not understand the extension based on the extension's ID, the application must reject the certificate.
- If the extension is not critical and the certificate is sent to an application that does not understand the extension based on the extension's ID, the application can ignore the extension and accept the certificate.
- An octet string containing the DER encoding of the value of the extension.
- Authority Key Identifier extension, which identifies the CA's public key, the key used to sign the certificate.
- Subject Key Identifier extension, which identifies the subject's public key, the key being certified.
Note
5.4.6. Using and Customizing Certificate Profiles
Certificate Profiles
Modifying the Certificate Profile Parameters
Certificate Profile Administration
Guidelines for Customizing Certificate Profiles
- Decide which certificate profiles are needed in the PKI. There should be at least one profile for each type of certificate issued. There can be more than one certificate profile for each type of certificate to set different authentication methods or different defaults and constraints for a particular type of certificate type. Any certificate profile available in the administrative interface can be approved by an agent and then used by an end entity to enroll.
- Delete any certificate profiles that will not be used.
- Modify the existing certificate profiles for specific characteristics for the company's certificates.
- Change the defaults set up in the certificate profile, the values of the parameters set in the defaults, or the constraints that control the certificate content.
- Change the constraints set up by changing the value of the parameters.
- Change the authentication method.
- Change the inputs by adding or deleting inputs in the certificate profile, which control the fields on the input page.
- Add or delete the output.
5.4.6.1. Adding SAN Extensions to the SSL Server Certificate
/usr/share/pki/ca/profiles/ca/caInternalAuthServerCert.cfg file and add the following parameters to the configuration file supplied to the pkispawn utility:
pki_san_inject- Set the value of this parameter to
True. pki_san_for_server_cert- Provide a list of the required SAN extensions separated by commas (,).
pki_san_inject=True pki_san_for_server_cert=intca01.example.com,intca02.example.com,intca.example.com
5.4.7. Planning Authentication Methods
- In agent-approved enrollment, end-entity requests are sent to an agent for approval. The agent approves the certificate request.
- In automatic enrollment, end-entity requests are authenticated using a plug-in, and then the certificate request is processed; an agent is not involved in the enrollment process.
- In CMC enrollment, a third party application can create a request that is signed by an agent and then automatically processed.
- An end entity submits a request for enrollment. The form used to submit the request identifies the method of authentication and enrollment. All HTML forms are dynamically-generated by the profiles, which automatically associate the appropriate authentication method with the form.
- If the authentication method is an agent-approved enrollment, the request is sent to the request queue of the CA agent. If the automated notification for a request in queue is set, an email is sent to the appropriate agent that a new request has been received. The agent can modify the request as allowed for that form and the profile constraints. Once approved, the request must pass the certificate profiles set for the Certificate Manager, and then the certificate is issued. When the certificate is issued, it is stored in the internal database and can be retrieved by the end entity from the end-entities page by serial number or by request ID.
- If the authentication method is automated, the end entity submits the request along with required information to authenticate the user, such as an LDAP user name and password. When the user is successfully authenticated, the request is processed without being sent to an agent's queue. If the request passes the certificate profile configuration of the Certificate Manager, the certificate is issued and stored in the internal database. It is delivered to the end entity immediately through the HTML forms.
5.4.8. Publishing Certificates and CRLs
- If certificates are published to the directory, than every user or server to which a certificate is issued must have a corresponding entry in the LDAP directory.
- If CRLs are published to the directory, than they must be published to an entry for the CA which issued them.
- For SSL/TLS, the directory service has to be configured in SSL/TLS and, optionally, be configured to allow the Certificate Manager to use certificate-based authentication.
- The directory administrator should configure appropriate access control rules to control DN (entry name) and password based authentication to the LDAP directory.
5.4.9. Renewing or Reissuing CA Signing Certificates
- Renewing a CA certificate involves issuing a new CA certificate with the same subject name and public and private key material as the old CA certificate, but with an extended validity period. As long as the new CA certificate is distributed to all users before the old CA certificate expires, renewing the certificate allows certificates issued under the old CA certificate to continue working for the full duration of their validity periods.
- Reissuing a CA certificate involves issuing a new CA certificate with a new name, public and private key material, and validity period. This avoids some problems associated with renewing a CA certificate, but it requires more work for both administrators and users to implement. All certificates issued by the old CA, including those that have not yet expired, must be renewed by the new CA.
Note
authorityKeyIdentifier extension, can affect the transition from an old CA certificate to a new one.
5.5. Planning for Network and Physical Security
5.5.1. Considering Firewalls
- Protecting sensitive subsystems from unauthorized access
- Allowing appropriate access to other subsystems and clients outside of the firewall
389 for LDAP and 636 for LDAPS, by default) need to be open in the firewall to allow traffic to the directory service. Without access to the LDAP database, all subsystem operations can fail.
5.5.2. Considering Physical Security and Location
5.5.3. Planning Ports
- A non-secure HTTP port for end entity services that do not require authentication
- A secure HTTP port for end entity services, agent services, administrative console, and admin services that require authentication
- A Tomcat Server Management port
- A Tomcat AJP Connector Port
https://server.example.com:8443/ca/ee/ca
pkiconsole https://server.example.com:8443/ca
server.xml file. If a port is not used, it can be disabled in that file. For example:
<Service name="Catalina">
<!--Connector port="8080" ... /--> unused standard port
<Connector port="8443" ... />services. On Red Hat Enterprise Linux, it is also helpful to confirm that a port is not assigned by SELinux, by running the command semanage port -l to list all ports which currently have an SELinux context.
5.6. Tokens for Storing Certificate System Subsystem Keys and Certificates
cert8.db) and key database (key3.db), that the Certificate System uses to generate and store its key pairs and certificates. The Certificate System automatically generates these files in the filesystem of its host machine when first using the internal token. These files are created during the Certificate System subsystem configuration if the internal token was selected for key-pair generation.
/var/lib/pki/instance_name/alias directory.
- All system keys for a subsystem must be generated on the same token.
- The subsystem must be installed in an empty HSM slot. If the HSM slot has previously been used to store other keys, then use the HSM vendor's utilities to delete the contents of the slot. The Certificate System has to be able to create certificates and keys on the slot with default nicknames. If not properly cleaned up, the names of these objects may collide with previous instances.
- Fast SSL/TLS connections. Speed is important to accommodate a high number of simultaneous enrollment or service requests.
- Hardware protection of private keys. These devices behave like smart cards by not allowing private keys to be copied or removed from the hardware token. This is important as a precaution against key theft from an active attack of an online Certificate Manager.
secmod.db database with modutil during the pre-configuration stage of the installation, if the PKCS #11 library modules are in the default installation paths.
5.7. A Checklist for Planning the PKI
- Q: How many security domains will be created, and what subsystem instances will be placed in each domain?
- Q: What ports should be assigned for each subsystem? Is it necessary to have a single SSL/TLS port, or is it better to have port separation for extra security?
- Q: What subsystems should be placed behind firewalls? What clients or other subsystems need to access those firewall-protected subsystems and how will access be granted? Is firewall access allowed for the LDAP database?
- Q: What subsystems need to be physically secured? How will access be granted, and who will be granted access?
- Q: What is the physical location of all agents and administrators? What is the physical location of the subsystems? How will administrators or agents access the subsystem services in a timely-manner? Is it necessary to have subsystems in each geographical location or time zone?
- Q: How many subsystems do you need to install?
- Q: Will any subsystems need to be cloned and, if so, what are the methods for securely storing their key materials?
- Q: Will the subsystem certificates and keys be stored on the internal software token in Certificate System or on an external hardware token?
- Q: What are the requirements for the CA signing certificate? Does the Certificate System need control over attributes like the validity period? How will the CA certificates be distributed?
- Q: What kinds of certificates will be issued? What characteristics do they need to have, and what profile settings are available for those characteristics? What restrictions need to be placed on the certificates?
- Q: What are the requirements for approving a certificate request? How does the requester authenticate himself, and what kind of process is required to approve the request?
- Q: Will many external clients need to validate certificate status? Can the internal OCSP in the Certificate Manager handle the load?
- Q: Will the PKI allow replacement keys? Will it require key archival and recovery?
- Q: Will the organization use smart cards? If so, will temporary smart cards be allowed if smart cards are mislaid, requiring key archival and recovery?
- Q: Where will certificates and CRLs be published? What configuration needs to be done on the receiving end for publishing to work? What kinds of certificates or CRLs need to be published and how frequently?
5.8. Optional Third-party Services
5.8.1. Load Balancers
5.8.2. Backup Hardware and Software
Part II. Installing Red Hat Certificate System
Chapter 6. Prerequisites and Preparation for Installation
6.1. Installing Red Hat Enterprise Linux
6.2. Securing the System Using SELinux
Note
enforcing mode.
enforcing mode. If a procedure in the Certificate System documentation requires to manually set SELinux-related settings, such as when using a Hardware Security Module (HSM), it is mentioned in the corresponding section.
6.2.1. Verifying if SELinux is Running in Enforcing Mode
enforcing mode and no further actions are required.
# getenforce
6.2.2. Enabling the SELinux Enforcing Mode
disabled or running in permissive mode, update the settings on Red Hat Enterprise Linux to enable enforcing mode.
6.3. Firewall Configuration
Table 6.1. Certificate System Default Ports
|
Service
|
Port
|
Protocol
|
|---|---|---|
|
HTTP
|
8080
|
TCP
|
|
HTTPS
|
8443
|
TCP
|
|
Tomcat Apache JServ Protocol (AJP)
|
8009
|
TCP
|
|
Tomcat Management
|
8005
|
TCP
|
6.3.1. Opening the Required Ports in the Firewall
- Make sure the
firewalldservice is running.# systemctl status firewalld
- To start
firewalldand configure it to start automatically when the system boots:# systemctl start firewalld # systemctl enable firewalld
- Open the required ports using the
firewall-cmdutility. For example, to open the Certificate System default ports in the default firewall zone:# firewall-cmd --permanent --add-port={8080/tcp,8443/tcp,8009/tcp,8005/tcp}For details on usingfirewall-cmdto open ports on a system, see the Red Hat Enterprise Linux Security Guide or the firewall-cmd(1) man page. - Reload the firewall configuration to ensure that the change takes place immediately:
# firewall-cmd --reload
6.4. Installing Red Hat Directory Server
- Attach a Directory Server subscription to the host.
- Install the Directory Server packages.
- Run the
setup-ds.plPerl script to set up a Directory Server instance.
6.4.1. Enabling TLS Support in Directory Server
Note
6.5. Enabling the Certificate System Repository
yum utility, you must enable the corresponding repository:
- Attach the Red Hat subscriptions to the system:Skip this step, if your system is already registered or has a Certificate Server subscription attached.
- Register the system to the Red Hat subscription management service:
#subscription-manager register --auto-attachUsername: admin@example.com Password: The system has been registered with id: 566629db-a4ec-43e1-aa02-9cbaa6177c3f Installed Product Current Status: Product Name: Red Hat Enterprise Linux Server Status: SubscribedUse the--auto-attachoption to automatically apply a subscription for the operating system. - List the available subscriptions and note the pool ID providing the Red Hat Certificate System. For example:
#subscription-manager list --available --all... Subscription Name: Red Hat Enterprise Linux Developer Suite Provides: ... Red Hat Certificate System ... Pool ID: 7aba89677a6a38fc0bba7dac673f7993 Available: 1 ...In case you have a lot of subscriptions, the output of the command can be very long. You can optionally redirect the output to a file:#subscription-manager list --available --all > /root/subscriptions.txt - Attach the Certificate System subscription to the system using the pool ID from the previous step:
#subscription-manager attach --pool=7aba89677a6a38fc0bba7dac673f7993Successfully attached a subscription for: Red Hat Enterprise Linux Developer Suite
- Enable the Certificate Server repository:
#subscription-manager repos --enable=rhel-7-server-rhcmsys-9-rpmsRepository 'rhel-7-server-rhcmsys-9-rpms' is enabled for this system.
6.6. Setting up Operating System Users and Groups
pkiuser account and the corresponding pkiuser group are automatically created. Certificate System uses this account and group to start services. Additionally, Red Hat recommends creating additional groups to let users maintain tasks and to read the signed audit logs.
6.6.1. Creating Groups for Certificate System
pkiuser- The
pkiusergroup is automatically created when installing the Certificate Systems packages and uses GID17. Only the auto-createdpkiuseraccount is a member of this group. Certificate Systems uses this account and group to start services. Do not add other accounts to this group. pkiadmin- Members of this system group have full access to tasks in the agent service interface.To create the recommended
pkiadmingroup, enter:# groupadd -r pkiadmin
Optionally, addsudorules to Red Hat Enterprise Linux to enable members of this group to read and modify Certificate System configuration files, such asCS.cfg,server.xml, and profiles. For details about configuringsudo, see the corresponding documentation in the Red Hat System Administrator's Guide. pkiaudit- Members of this system group can read the signed audit logs.To create the recommended
pkiauditgroup, enter:# groupadd -r pkiaudit
- Optional: A hardware token group
- If the subsystem uses a hardware token, the
pkiuseraccount must be a member of the hardware token group. For example, when you use the nCipher token, thenfastgroup is used to access the module.
6.6.2. Creating Users and Assigning Them to the Certificate System Groups
pkiadmin and pkiaudit groups, you assign permissions to these accounts. For example, members of pkiadmin can manage tasks in the agent interface, and members of pkiaudit can read signed audit logs.
pkiadmin group:
- Create the user account:
# useradd -m user_name
For further details about creating user accounts, see the corresponding section in the System Administrator's Guide. - Set a password to the account:
# passwd user_name
- Add the account to the
pkiadmingroup:# usermod -a -G pkiadmin user_name
Chapter 7. Installing and Configuring Certificate System
- Certificate Authority (CA)
- Key Recovery Authority (KRA)
- Online Certificate Status Protocol (OCSP) Responder
- Token Key Service (TKS)
- Token Processing System (TPS)
7.1. Subsystem Configuration Order
- At least one CA running as a security domain is required before any of the other public key infrastructure (PKI) subsystems can be installed.
- Install the OCSP after the CA has been configured.
- The KRA, and TKS subsystems can be installed in any order, after the CA and OCSP have been configured.
- The TPS subsystem depends on the CA and TKS, and optionally on the KRA and OCSP subsystem.
Note
7.2. Certificate System Packages
Important
- pki-ca: Provides the Certificate Authority (CA) subsystem.
- pki-kra: Provides the Key Recovery Authority (KRA) subsystem.
- pki-ocsp: Provides the Online Certificate Status Protocol (OCSP) responder.
- pki-tks: Provides the Token Key Service (TKS).
- pki-tps: Provides the Token Processing Service (TPS).
- pki-console and redhat-pki-console-theme: Provides the Java-based Red Hat PKI console. Both packages must be installed.
- pki-server and redhat-pki-server-theme: Provides the web-based Certificate System interface. Both packages must be installed.This package is installed as a dependency if you install one of the following packages: pki-ca, pki-kra, pki-ocsp, pki-tks, pki-tps
Example 7.1. Installing Certificate System Packages
- To install the CA subsystem and the optional web interface, enter:
# yum install pki-ca redhat-pki-server-theme
For other subsystems, replace the pki-ca package name with the one of the subsystem you want to install. - If you require the optional PKI console:
# yum install pki-console redhat-pki-console-theme
- Alternatively, install all Certificate System subsystem packages and components automatically:
# yum install redhat-pki
7.3. Understanding the pkispawn Utility
pkispawn utility. During the setup, pkispawn:
- Reads the default values from the
/etc/pki/default.cfgfile. For further details, see the pki_default.cfg(5) man page.Important
Do not edit the/etc/pki/default.cfgfile. Instead, create a configuration file and that overrides the defaults, and pass it to thepkispawnutility. For details about using a configuration file, see Section 7.6, “Two-step Installation”. - Uses the passwords and other deployment-specific information provided depending on the setup mode:
- Interactive mode: The user is asked for the individual settings during the setup. Use this mode for simple deployments.
- Batch mode: The values are read from a configuration file the user provides. Parameters not set in the configuration file use the defaults.
- Performs the installation of the requested PKI subsystem.
- Passes the settings to a Java servlet that performs the configuration based on the settings.
pkispawn utility to install:
- A root CA. For details, see Section 7.4, “Setting Up a Root Certificate Authority”.
- A subordinate CA or any other subsystem. For details, see Section 7.5, “Setting up Additional Subsystems”.
Note
pkispawn utility. For a setup of a subordinate CA or non-CA subsystems, see Section 7.7, “Setting up Subsystems with an External CA”.
pkispawn and examples, see the pkispawn(8) man page.
7.4. Setting Up a Root Certificate Authority
- Configuration file-based installation:Use this method for high-level customization. This installation method uses a configuration file that overrides the default installation parameters.You can install Certificate System using a configuration file in a single step or in two steps. For details and examples, see:
- The pkispawn(8) man page for the single-step installation.
- Section 7.6, “Two-step Installation” for the two-step installation.
- Interactive installation:
# pkispawn -s CA
Use the interactive installer if you only want to set the minimum of required configuration options.
7.5. Setting up Additional Subsystems
Prerequisites
Installing the Subsystem
- Configuration file-based installation:Use this method for high-level customization. This installation method uses a configuration file that overrides the default installation parameters.You can install Certificate System using a configuration file in a single step or in two steps. For details and examples, see:
- The pkispawn(8) man page for the single-step installation.
- Section 7.6, “Two-step Installation” for the two-step installation.
- Interactive installation:Use the interactive installer if you only want to set the minimum of required configuration options.For example:
# pkispawn -s subsystem
Replace subsystem with one of the following subsystems:KRA,OCSP,TKS, orTPS.The interactive installer does not support installing a subordinate CA. To install a subordinate CA, use the two-step installation. See Section 7.6, “Two-step Installation”.
7.6. Two-step Installation
pkispawn utility enables you run the installation of a subsystem in two steps.
7.6.1. When to Use the Two-Step Installation
- Increasing security.
- Customizing subsystem certificates.
- Customizing the cipher list in the
sslRangeCiphersparameter in the/etc/pki/instance_name/server.xmlfile when installing a new Certificate System instance to be connected to an existing Certificate System. - Installing CA clones, KRA, OCSP, TKS and TPS in FIPS mode.
- Installing Certificate System with a Hardware Security Module (HSM) in FIPS mode.
7.6.2. The Two Major Parts of the Two-step Installation
- InstallationDuring this step,
pkispawncopies configuration files from the/usr/share/pki/directory to the instance-specific/etc/pki/instance_name/directory. Additionally,pkispwansets the settings based on values defined in the deployment configuration file.This part of the installation contains the following substeps: - ConfigurationDuring this step,
pkispawncontinues the installation based on the configuration files in the instance-specific/etc/pki/instance_name/directory.This part of the installation contains the following substeps:
7.6.3. Creating the Configuration File for the First Step of the Installation
/root/config.txt, and fill it with the settings described below.
Important
Subsystem-independent Settings
- Set the passwords of the Certificate System
adminuser, the PKCS #12 file, and Directory Server:[DEFAULT] pki_admin_password=password pki_client_pkcs12_password=password pki_ds_password=password
- To use an LDAPS connection to Directory Server running on the same host, add the following parameters to the
[DEFAULT]section in the configuration file:pki_ds_secure_connection=True pki_ds_secure_connection_ca_pem_file=path_to_CA_or_self-signed_certificate
Note
For security reasons, Red Hat recommends using an encrypted connection to Directory Server.If you use a self-signed certificate in Directory Server use the following command to export it from the Directory Server's Network Security Services (NSS) database:# certutil -L -d /etc/dirsrv/slapd-instance_name/ \ -n "server-cert" -a -o /root/ds.crt
Important
~/.dogtag/instance_name/subsystem/alias client database after the installation. For security reasons, Red Hat recommends not enabling the pki_client_database_purge parameter in the configuration file. If you manually set this parameter to True, Certificate System does not remove the client database after the installation.
CA Settings
- To increase security, enable random serial numbers by adding the
[CA]section with the following setting to the configuration file:[CA] pki_random_serial_numbers_enable=true
- Optionally, set the following parameters in the
[CA]section to specify the data of theadminuser, which will be automatically created during the installation:pki_admin_nickname=caadmin pki_admin_name=CA administrator account pki_admin_password=password pki_admin_uid=caadmin pki_admin_email=caadmin@example.com
Certificate System assigns administrator privileges to this account. Use this account after the installation to manage Certificate System and to create further user accounts. - To enable Certificate System to generate unique nicknames, set the following parameters in the
[DEFAULT]section:pki_instance_name=instance_name pki_security_domain_name=example.com Security Domain pki_host=server.example.com
Important
If you install Certificate System with a network-shared Hardware Security Module (HSM), you must use unique certificate nicknames. - Optionally, to use Elliptic Curve Cryptography (ECC) instead of RSA when generating certificates:
- Add the following parameters to the
[DEFAULT]section:pki_admin_key_algorithm=SHA256withEC pki_admin_key_size=nistp256 pki_admin_key_type=ecc pki_sslserver_key_algorithm=SHA256withEC pki_sslserver_key_size=nistp256 pki_sslserver_key_type=ecc pki_subsystem_key_algorithm=SHA256withEC pki_subsystem_key_size=nistp256 pki_subsystem_key_type=ecc
- Add the following parameters to the
[CA]section:pki_ca_signing_key_algorithm=SHA256withEC pki_ca_signing_key_size=nistp256 pki_ca_signing_key_type=ecc pki_ca_signing_signing_algorithm=SHA256withEC pki_ocsp_signing_key_algorithm=SHA256withEC pki_ocsp_signing_key_size=nistp256 pki_ocsp_signing_key_type=ecc pki_ocsp_signing_signing_algorithm=SHA256withEC
- Add the following parameters to the
[CA]section to override the RSA profiles with ECC profiles:pki_source_admincert_profile=/usr/share/pki/ca/conf/ECadminCert.profile pki_source_servercert_profile=/usr/share/pki/ca/conf/ECserverCert.profile pki_source_subsystemcert_profile=/usr/share/pki/ca/conf/ECsubsystemCert.profile
Settings for Other Subsystems
- Add the following entry to
[DEFAULT]section of your configuration file:pki_client_database_password=password
- If you are installing a TPS:
- Add the following section with the following section:
[TPS] pki_authdb_basedn=basedn_of_the_TPS_authentication_database
- Optionally, to configure that the TPS use server-side key generation utilizing a KRA that has already been installed in the shared CA instance, add the following entry to the
[TPS]section:pki_enable_server_side_keygen=True
7.6.4. Starting the Installation Step
# pkispawn -f /root/config.txt -s subsystem --skip-configuration
CA, KRA, OCSP, TKS, or TPS.
7.6.5. Customizing the Configuration Between the Installation Steps
7.6.5.1. Disabling Certificate Profiles
*.cfg file in the /var/lib/pki/instance_name/ca/profiles/ca/ directory and set the visible and enable parameters to false.
- List all non-CMC profiles:
# ls -l /var/lib/pki/instance_name/ca/profiles/ca/ | grep -v "CMC"
- In each of the displayed files, set the following parameters to
false:visible=false enable=false
visible=false in all CMC profiles to make them invisible on the end entity page:
- List all CMC profiles:
# ls -l /var/lib/pki/instance_name/ca/profiles/ca/*CMC*
- In each of the displayed files, set:
visible=false
7.6.5.2. Changing the Default Validity Time of Certificates
825 days (approximately 27 months), open the /var/lib/pki/instance_name/ca/profiles/ca/caCACert.cfg file in an editor and set:
policyset.caCertSet.2.default.params.range=825
7.6.5.3. Enabling Signed Audit Logging
Note
/var/lib/pki/instance_name/subsystem/conf/CS.cfg file in an editor and set:
log.instance.SignedAudit.logSigning=true log.instance.SignedAudit.signedAuditCertNickname=audit_signing_certificate
7.6.5.4. Updating the Ciphers List
- To secure the Certificate System instance
- To install a Certificate System instance and to add it to an existing site that supports only specific ciphers
Default FIPS Mode Enabled Ciphers for RSA Encryption
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA256
- TLS_RSA_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA256
Default FIPS Mode Enabled Ciphers for ECC Encryption
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA256
Required RSA Ciphers When Running an HSM on System with FIPS Mode Enabled
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
7.6.5.5. Configuring the PKI Console Timeout
7.6.5.6. Setting the KRA into Encryption Mode
7.6.5.7. Enabling OCSP
7.6.5.8. Configuring Ranges for Requests and Serial Numbers
/etc/pki/instance_name/subsystem/CS.cfg file:
dbs.beginRequestNumber=1001001007001 dbs.endRequestNumber=11001001007000 dbs.requestIncrement=10000000000000 dbs.requestLowWaterMark=2000000000000 dbs.requestCloneTransferNumber=10000 dbs.requestDN=ou=ca, ou=requests dbs.requestRangeDN=ou=requests, ou=ranges dbs.beginSerialNumber=1001001007001 dbs.endSerialNumber=11001001007000 dbs.serialIncrement=10000000000000 dbs.serialLowWaterMark=2000000000000 dbs.serialCloneTransferNumber=10000 dbs.serialDN=ou=certificateRepository, ou=ca dbs.serialRangeDN=ou=certificateRepository, ou=ranges dbs.beginReplicaNumber=1 dbs.endReplicaNumber=100 dbs.replicaIncrement=100 dbs.replicaLowWaterMark=20 dbs.replicaCloneTransferNumber=5 dbs.replicaDN=ou=replica dbs.replicaRangeDN=ou=replica, ou=ranges dbs.ldap=internaldb dbs.newSchemaEntryAdded=true
Note
BigInteger values for the ranges.
7.6.6. Starting the Configuration Step
# pkispawn -f /root/config.txt -s subsystem --skip-installation
CA, KRA, OCSP, TKS, or TPS.
pkispawn utility displays an installation summary. For example:
================================================================
INSTALLATION SUMMARY
================================================================
Administrator's username: caadmin
Administrator's PKCS #12 file:
/root/.dogtag/instance_name/ca_admin_cert.p12
To check the status of the subsystem:
systemctl status pki-tomcatd@instance_name.service
To restart the subsystem:
systemctl restart pki-tomcatd@instance_name.service
The URL for the subsystem is:
https://server.example.com:8443/ca/
PKI instances will be enabled upon system boot
================================================================7.7. Setting up Subsystems with an External CA
7.7.1. The Difference Between an Internal and External CA
pkispawn utility sends subsystem Certificate Signing Requests (CSR) to a previously installed Certificate System, and the resulting issued certificates are received and used by pkispawn, the CA the CSRs were sent to is called an Internal CA.
External CA, by contrast, can be one of the following:
- A non-Red Hat Certificate System CA that issues the signing certificate for a Certificate System subordinate CA.
- A previously installed Red Hat Certificate System CA that does not allow direct submission of CSRs. For example, this is the case if your environment requires CSRs from a subordinate CA, KRA, OCSP, TKS, or TPS to be in other formats than PKCS #10.
7.7.2. Installing a Subsystem with an External CA
Preparing the Configuration File for the External CA Installation
- If you install a subsystem which is integrated into an existing Certificate System installation but which uses a certificate signed by an external CA:
- Create the configuration file for the subsystem. See Section 7.6.3, “Creating the Configuration File for the First Step of the Installation”.
- Add the following settings to your configuration file:
- For a CA installation:
pki_external=True pki_external_step_two=False pki_storage_csr_path=/home/user_name/kra_storage.csr pki_transport_csr_path=/home/user_name/kra_transport.csr pki_subsystem_csr_path=/home/user_name/subsystem.csr pki_sslserver_csr_path=/home/user_name/sslserver.csr pki_audit_signing_csr_path=/home/user_name/kra_audit_signing.csr pki_admin_csr_path=/home/user_name/kra_admin.csr
- For a KRA installation:
pki_external=True pki_external_step_two=False pki_storage_csr_path=/home/user_name/kra_storage.csr pki_transport_csr_path=/home/user_name/kra_transport.csr pki_subsystem_csr_path=/home/user_name/subsystem.csr pki_sslserver_csr_path=/home/user_name/sslserver.csr pki_audit_signing_csr_path=/home/user_name/kra_audit_signing.csr pki_admin_csr_path=/home/user_name/kra_admin.csr
- For an OCSP installation:
pki_external=True pki_external_step_two=False pki_ocsp_signing_csr_path=/home/user_name/ocsp_signing.csr pki_subsystem_csr_path=/home/user_name/subsystem.csr pki_sslserver_csr_path=/home/user_name/sslserver.csr pki_audit_signing_csr_path=/home/user_name/ocsp_audit_signing.csr pki_admin_csr_path=/home/user_name/ocsp_admin.csr
- If you install a standalone KRA or OCSP, which is not integrated into an existing Certificate System installation, execute the steps described in Section 7.8, “Setting up a Standalone KRA or OCSP”.
Starting the Installation of a Subsystem with an External CA
- Use the
pkispawnutility to start the installation:# pkispawn -f /root/config.txt -s subsystem
Replace subsystem with the subsystem you want to install:CA,KRA, orOCSP.During this step, the setup stores the CSRs in the files specified in the configuration. - Submit the CSRs to the external CA. Proceed after the CA has issued the corresponding certificates.In certain environments, if the external CA is also a Certificate System instance, the CSR in PKCS#10 format needs to be converted into CMC format before being submitted to the CA. See the Issuing Certificates Using CMC section in the Red Hat Certificate System Administration Guide for details about issuing the certificates.
- Optionally, customize the installation. For details, see Section 7.6.5, “Customizing the Configuration Between the Installation Steps”.
- After the external CA has issued the certificates, edit the deployment configuration file:
- Set the
pki_external_step_twotoTrue:pki_external_step_two=True
- Add the following parameters, based on the subsystem you are installing:
- For a CA, set the path to the certificate file. For example:
pki_ca_signing_cert_path=/home/user_name/ca_signing.crt
If the specified file does not contain the certificate including the certificate chain, additionally specify the path to the certificate chain file and its nickname. For example:pki_cert_chain_path=/home/user_name/cert_chain.p7b pki_cert_chain_nickname=CA Signing Certificate
- For a KRA, set the paths to the certificate files. For example:
pki_storage_cert_path=/home/user_name/kra_storage.crt pki_transport_cert_path=/home/user_name/kra_transport.crt pki_subsystem_cert_path=/home/user_name/subsystem.crt pki_sslserver_cert_path=/home/user_namesslserver.crt pki_audit_signing_cert_path=/home/user_name/kra_audit_signing.crt pki_admin_cert_path=/home/user_name/kra_admin.crt
If the specified files do not contain the certificate including the certificate chain, additionally specify the paths to the signing certificate file and the certificate chain file together with their nicknames. For example:pki_ca_signing_nickname=CA Signing Certificate pki_ca_signing_cert_path=/home/user_name/ca_signing.crt pki_cert_chain_nickname=External Certificate Chain pki_cert_chain_path=/home/user_name/cert_chain.p7b
- For an OCSP, set the paths to the certificate files. For example:
pki_ocsp_signing_cert_path=/home/user_name/ocsp_signing.crt pki_subsystem_cert_path=/home/user_name/subsystem.crt pki_sslserver_cert_path=/home/user_name/sslserver.crt pki_audit_signing_cert_path=/home/user_name/ocsp_audit_signing.crt pki_admin_cert_path=/home/user_name/ocsp_admin.crt
If the specified files do not contain the certificate including the certificate chain, additionally specify the paths to the signing certificate file and the certificate chain file together with their nicknames. For example:pki_ca_signing_nickname=CA Signing Certificate pki_ca_signing_cert_path=/home/user_name/ca_signing.crt pki_cert_chain_nickname=External Certificate Chain pki_cert_chain_path=/home/user_name/cert_chain.p7b
- Optionally, customize the configuration files. For examples, see Section 7.6.5, “Customizing the Configuration Between the Installation Steps”.
- Start the configuration step:
# pkispawn -f /root/config.txt -s subsystem
Replace subsystem with the subsystem you want to install:CA,KRA, orOCSP.
7.8. Setting up a Standalone KRA or OCSP
- Create a configuration file, such as
/root/config.txt, with the following content:[DEFAULT] pki_admin_password=password pki_client_database_password=password pki_client_pkcs12_password=password pki_ds_password=password pki_token_password=password pki_client_database_purge=False pki_security_domain_name=EXAMPLE pki_standalone=True pki_external_step_two=False
- For a standalone KRA, add the following section to the configuration file:
[KRA] pki_admin_email=kraadmin@example.com pki_ds_base_dn=dc=kra,dc=example,dc=com pki_ds_database=kra pki_admin_nickname=kraadmin pki_audit_signing_nickname=kra_audit_signing pki_sslserver_nickname=sslserver pki_storage_nickname=kra_storage pki_subsystem_nickname=subsystem pki_transport_nickname=kra_transport pki_standalone=True
- For a standalone OCSP, add the following section to the configuration file:
[OCSP] pki_admin_email=ocspadmin@example.com pki_ds_base_dn=dc=ocsp,dc=example,dc=com pki_ds_database=ocsp pki_admin_nickname=ocspadmin pki_audit_signing_nickname=ocsp_audit_signing pki_ocsp_signing_nickname=ocsp_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem pki_standalone=True
- To use an LDAPS connection to Directory Server running on the same host, add the following parameters to the
DEFAULTsection in the configuration file:pki_ds_secure_connection=True pki_ds_secure_connection_ca_pem_file=path_to_CA_or_self-signed_certificate
Note
For security reasons, Red Hat recommends using an encrypted connection to Directory Server.If you use a self-signed certificate in Directory Server, use the following command to export it from the Directory Server's Network Security Services (NSS) database:# certutil -L -d /etc/dirsrv/slapd-instance_name/ \ -n "server-cert" -a -o /root/ds.crt - Proceed with the steps described in the section called “Starting the Installation of a Subsystem with an External CA”.
Chapter 8. Using Hardware Security Modules for Subsystem Security Databases
8.1. Installing Certificate System with an HSM
pkispawn utility when installing Certificate System with an HSM:
[DEFAULT] ########################## # Provide HSM parameters # ########################## pki_hsm_enable=True pki_hsm_libfile=hsm_libfile pki_hsm_modulename=hsm_modulename pki_token_name=hsm_token_name pki_token_password=pki_token_password ######################################## # Provide PKI-specific HSM token names # ######################################## pki_audit_signing_token=hsm_token_name pki_ssl_server_token=hsm_token_name pki_subsystem_token=hsm_token_name
8.2. Using Hardware Security Modules with Subsystems
secmod.db database with the modutil command during the pre-configuration stage of the installation, if the PKCS #11 library modules are in the specified installation paths.
Important
8.2.1. Enabling the FIPS Mode on an nCipher HSM
- Open the security UI:
# /opt/nfast/bin/ksafe
- In the
Security Worldtab, select Strict FIPS 140-2 Level III. - Click to confirm.
- Optionally, verify that FIPS mode is enabled. For details, see Section 8.2.2, “Verifying if FIPS Mode is Enabled on an nCipher HSM”.
8.2.2. Verifying if FIPS Mode is Enabled on an nCipher HSM
# /opt/nfast/bin/nfkminfo
StrictFIPS140 is listed in the state flag, the FIPS mode is enabled.
8.2.3. Adding or Managing the HSM Entry for a Subsystem
pkispawn command, the following parameter is added to the /var/lib/pki/instance_name/conf/password.conf file for the HSM password:
hardware-HSM_token_name=HSM_token_password
8.2.4. Setting up SELinux for an HSM
enforcing mode, certain HSMs require that you manually update SELinux settings before you can install Certificate System.
- nCipher nShield
- After you installed the HSM and before you start installing Certificate System:
- Reset the context of files in the
/opt/nfast/directory:# restorecon -R /opt/nfast/
- Restart the nfast software.
# /opt/nfast/sbin/init.d-ncipher restart
- Gemalto Safenet LunaSA HSM
- No SELinux-related actions are required before you start installing Certificate System.
8.2.5. Installing a Subsystem Using nCipher nShield HSM
- Prepare an override file, which corresponds to your particular deployment. The following
default_hms.txtfile is an example of such an override file:Note
This file serves only as an example of an nCipher HSM override configuration file -- numerous other values can be overridden including default hashing algorithms. Also, only one of the [CA], [KRA], [OCSP], [TKS], or [TPS] sections will be utilized depending upon the subsystem invocation specified on thepkispawncommand-line.Example 8.1. An Override File Sample to Use with nCipher HSM
############################################################################### ############################################################################### ############################################################################### ## ## ## EXAMPLE: Configuration File used to override '/etc/pki/default.cfg' ## ## when using an nCipher Hardware Security Module (HSM): ## ## ## ## ## ## # modutil -dbdir . -list ## ## ## ## Listing of PKCS #11 Modules ## ## ----------------------------------------------------------- ## ## 1. NSS Internal PKCS #11 Module ## ## slots: 2 slots attached ## ## status: loaded ## ## ## ## slot: NSS Internal Cryptographic Services ## ## token: NSS Generic Crypto Services ## ## ## ## slot: NSS User Private Key and Certificate Services ## ## token: NSS Certificate DB ## ## ## ## 2. nfast ## ## library name: /opt/nfast/toolkits/pkcs11/libcknfast.so ## ## slots: 2 slots attached ## ## status: loaded ## ## ## ## slot: <serial_number> Rt1 ## ## token: accelerator ## ## ## ## slot: <serial_number> Rt1 slot 0 ## ## token: <HSM_token_name> ## ## ----------------------------------------------------------- ## ## ## ## ## ## Based on the example above, substitute all password values, ## ## as well as the following values: ## ## ## ## <hsm_libfile>=/opt/nfast/toolkits/pkcs11/libcknfast.so ## ## <hsm_modulename>=nfast ## ## <hsm_token_name>=NHSM6000 ## ## ## ############################################################################### ############################################################################### ############################################################################### [DEFAULT] ########################## # Provide HSM parameters # ########################## pki_hsm_enable=True pki_hsm_libfile=<hsm_libfile> pki_hsm_modulename=<hsm_modulename> pki_token_name=<hsm_token_name> pki_token_password=<pki_token_password> ######################################## # Provide PKI-specific HSM token names # ######################################## pki_audit_signing_token=<hsm_token_name> pki_ssl_server_token=<hsm_token_name> pki_subsystem_token=<hsm_token_name> ################################## # Provide PKI-specific passwords # ################################## pki_admin_password=<pki_admin_password> pki_client_pkcs12_password=<pki_client_pkcs12_password> pki_ds_password=<pki_ds_password> ##################################### # Provide non-CA-specific passwords # ##################################### pki_client_database_password=<pki_client_database_password> ############################################################### # ONLY required if specifying a non-default PKI instance name # ############################################################### #pki_instance_name=<pki_instance_name> ############################################################## # ONLY required if specifying non-default PKI instance ports # ############################################################## #pki_http_port=<pki_http_port> #pki_https_port=<pki_https_port> ###################################################################### # ONLY required if specifying non-default 389 Directory Server ports # ###################################################################### #pki_ds_ldap_port=<pki_ds_ldap_port> #pki_ds_ldaps_port=<pki_ds_ldaps_port> ###################################################################### # ONLY required if PKI is using a Security Domain on a remote system # ###################################################################### #pki_ca_hostname=<pki_ca_hostname> #pki_issuing_ca_hostname=<pki_issuing_ca_hostname> #pki_issuing_ca_https_port=<pki_issuing_ca_https_port> #pki_security_domain_hostname=<pki_security_domain_hostname> #pki_security_domain_https_port=<pki_security_domain_https_port> ########################################################### # ONLY required for PKI using an existing Security Domain # ########################################################### # NOTE: pki_security_domain_password == pki_admin_password # of CA Security Domain Instance #pki_security_domain_password=<pki_admin_password> [Tomcat] ############################################################## # ONLY required if specifying non-default PKI instance ports # ############################################################## #pki_ajp_port=<pki_ajp_port> #pki_tomcat_server_port=<pki_tomcat_server_port> [CA] ####################################### # Provide CA-specific HSM token names # ####################################### pki_ca_signing_token=<hsm_token_name> pki_ocsp_signing_token=<hsm_token_name> ########################################################################### # ONLY required if 389 Directory Server for CA resides on a remote system # ########################################################################### #pki_ds_hostname=<389 hostname> [KRA] ######################################## # Provide KRA-specific HSM token names # ######################################## pki_storage_token=<hsm_token_name> pki_transport_token=<hsm_token_name> ############################################################################ # ONLY required if 389 Directory Server for KRA resides on a remote system # ############################################################################ #pki_ds_hostname=<389 hostname> [OCSP] ######################################### # Provide OCSP-specific HSM token names # ######################################### pki_ocsp_signing_token=<hsm_token_name> ############################################################################# # ONLY required if 389 Directory Server for OCSP resides on a remote system # ############################################################################# #pki_ds_hostname=<389 hostname> [TKS] ######################################## # Provide TKS-specific HSM token names # ######################################## ############################################################################ # ONLY required if 389 Directory Server for TKS resides on a remote system # ############################################################################ #pki_ds_hostname=<389 hostname> [TPS] ################################### # Provide TPS-specific parameters # ################################### pki_authdb_basedn=<dnsdomainname where hostname.b.c.d is dc=b,dc=c,dc=d> ######################################## # Provide TPS-specific HSM token names # ######################################## ############################################################################ # ONLY required if 389 Directory Server for TPS resides on a remote system # ############################################################################ #pki_ds_hostname=<389 hostname> ########################################################## # ONLY required if TPS requires a CA on a remote machine # ########################################################## #pki_ca_uri=https://<pki_ca_hostname>:<pki_ca_https_port> ####################################### # ONLY required if TPS requires a KRA # ####################################### #pki_enable_server_side_keygen=True ########################################################### # ONLY required if TPS requires a KRA on a remote machine # ########################################################### #pki_kra_uri=https://<pki_kra_hostname>:<pki_kra_https_port> ########################################################### # ONLY required if TPS requires a TKS on a remote machine # ########################################################### #pki_tks_uri=https://<pki_tks_hostname>:<pki_tks_https_port>
- Use the configuration file as described in Section 7.6, “Two-step Installation”.
# pkispawn -s CA -f ./default_hsm.txt-vvv# pkispawn -s KRA -f ./default_hsm.txt-vvv# pkispawn -s OCSP -f ./default_hsm.txt-vvv# pkispawn -s TKS -f ./default_hsm.txt-vvv# pkispawn -s TPS -f ./default_hsm.txt-vvv
8.2.6. Installing a Subsystem Using Gemalto Safenet LunaSA HSM
Example 8.2. A Sample of the LunaSA Override File Header
############################################################################### ############################################################################### ############################################################################### ## ## ## EXAMPLE: Configuration File used to override '/etc/pki/default.cfg' ## ## when using a LunaSA Hardware Security Module (HSM): ## ## ## ## ## ## # modutil -dbdir . -list ## ## ## ## Listing of PKCS #11 Modules ## ## ----------------------------------------------------------- ## ## 1. NSS Internal PKCS #11 Module ## ## slots: 2 slots attached ## ## status: loaded ## ## ## ## slot: NSS Internal Cryptographic Services ## ## token: NSS Generic Crypto Services ## ## ## ## slot: NSS User Private Key and Certificate Services ## ## token: NSS Certificate DB ## ## ## ## 2. lunasa ## ## library name: /usr/safenet/lunaclient/lib/libCryptoki2_64.so ## ## slots: 4 slots attached ## ## status: loaded ## ## ## ## slot: LunaNet Slot ## ## token: dev-intca ## ## ## ## slot: Luna UHD Slot ## ## token: ## ## ## ## slot: Luna UHD Slot ## ## token: ## ## ## ## slot: Luna UHD Slot ## ## token: ## ## ----------------------------------------------------------- ## ## ## ## ## ## Based on the example above, substitute all password values, ## ## as well as the following values: ## ## ## ## <hsm_libfile>=/usr/safenet/lunaclient/lib/libCryptoki2_64.so ## ## <hsm_modulename>=lunasa ## ## <hsm_token_name>=dev-intca ## ## ## ############################################################################### ############################################################################### ###############################################################################
8.3. Backing up Keys on Hardware Security Modules
.p12 file. If such an instance is to be backed-up, contact the manufacturer of your HSM for support.
8.4. Installing a Clone Subsystem Using an HSM
pki_backup_keys to True in the configuration file you use for the installation along with the defined value for the pki_backup_password option, or by exporting the keys using the PKCS12Export tool.
pkispawn utility.
[Tomcat] section of the respective PKI configuration file that are required for generating a CA clone.
pki_clone=Truepki_clone_pkcs12_password=Secret123pki_clone_pkcs12_path=<path_to_pkcs12_file>pki_clone_replicate_schema=True (default value)pki_clone_uri=https://<master_ca_host_name>:<master_ca_https_port>
pki_clone=Truepki_clone_replicate_schema=True (default value)pki_clone_uri=https://<master_ca_host_name>:<master_ca_https_port>
Note
8.5. Viewing Tokens
modutil utility.
- Change to the instance
aliasdirectory. For example:# cd /var/lib/pki/pki-tomcat/alias
- Show the information about the installed PKCS #11 modules installed as well as information on the corresponding tokens using the
modutiltool.# modutil -dbdir . -nocertdb -list
8.6. Detecting Tokens
TokenInfo utility, pointing to the alias directory for the subsystem instance. This is a Certificate System tool which is available after the Certificate System packages are installed.
# TokenInfo /var/lib/pki/pki-tomcat/alias
8.7. Failover and Resilience
8.7.1. nCipher nShield HSM
8.7.1.1. Failover
8.7.1.2. Resilience
8.7.2. Gemalto Safenet LunaSA HSM
8.7.2.1. Failover
Chapter 9. Installing an Instance with ECC System Certificates
Important
enforcing mode to permissive mode to allow the module to function. Otherwise, any subsystem operations which require the ECC module will fail.
9.1. Loading a Third-Party ECC Module
9.2. Using ECC with an HSM
- Set up the HSM per manufacturer's instructions. If multiple hosts are sharing the HSM, make sure they can all access the same partition if needed and if the site policies allow it.
- Define the required parameters in the
pkispawnutility configuration file and runpkispawn. For example, to configure Certificate System to create an ECC CA, assuming the configuration file isecc.inf:- Edit
ecc.infto specify the appropriate settings. For an example of the configuration file, see the pkispawn(8) man page. - Run
pkispawnagainstecc.inf:$ script -c 'pkispawn -s CA -f /root/pki/ecc.inf -vvv'
Chapter 10. Cloning Subsystems
10.1. Backing up Subsystem Keys from a Software Database
PKCS12Export utility. For example:
PKCS12Export -debug -d /var/lib/pki/instance_name/alias -w p12pwd.txt -p internal.txt -o master.p12
Note
10.2. Cloning a CA
- Configure the master CA, and back up the keys.
- In the
CS.cfgfile for the master CA, enable the master CA to monitor replication database changes by adding theca.listenToCloneModificationsparameter:ca.listenToCloneModifications=true
- Create the clone subsystem instance.For examples of the configuration file required by
pkispawnwhen cloning CA subsystems, see theInstalling a CA cloneandInstalling a CA clone on the same hostsections of the pkispawn(8) man page. - Restart the Directory Server instance used by the clone.
systemctl restart pki-tomcatd@kra-clone-ds-instance.service
Note
Restarting the Directory Server reloads the updated schema, which is required for proper performance. - Restart the clone instance.
systemctl restart pki-tomcatd@instance_name.service
- Request a certificate from the cloned CA.
- Approve the request.
- Download the certificate to the browser.
- Revoke the certificate.
- Check master CA's CRL for the revoked certificate. In the master Certificate Manager's agent services page, click Update Certificate Revocation List. Find the CRL in the list.The CRL should show the certificate revoked by the cloned Certificate Manager. If that certificate is not listed, check logs to resolve the problem.
10.3. Updating CA-KRA Connector Information After Cloning
pki ca-kraconnector-add command.
- On the master clone machine, open the master CA's
CS.cfgfile, and copy all of theca.connector.KRA.*lines for the new KRA connector.[root@master ~]# vim /var/lib/pki/pki-tomcat/ca/conf/CS.cfg
- Stop the clone CA instance. For example:
[root@clone-ca ~] systemctl stop pki-tomcatd@instance_name.service
- Open the clone CA's
CS.cfgfile.[root@clone-ca ~]# vim /var/lib/pki/pki-tomcat/ca/conf/CS.cfg
- Copy in the connector information for the new KRA instance or clone.
ca.connector.KRA.enable=true ca.connector.KRA.host=server-kra.example.com ca.connector.KRA.local=false ca.connector.KRA.nickName=subsystemCert cert-pki-ca ca.connector.KRA.port=10444 ca.connector.KRA.timeout=30 ca.connector.KRA.transportCert=MIIDbD...ZR0Y2zA== ca.connector.KRA.uri=/kra/agent/kra/connector
- Start the clone CA.
[root@clone-ca ~] systemctl start pki-tomcatd@instance_name.service
10.4. Cloning OCSP Subsystems
- Configure the master OCSP, and back up the keys.
- In the
CS.cfgfile for the master OCSP, set theOCSP.Responder.store.defStore.refreshInSecparameter to any non-zero number other than 21600; 21600 is the setting for a clone.vim /etc/instance_name/CS.cfg OCSP.Responder.store.defStore.refreshInSec=15000
- Create the clone subsystem instance using the
pkispawnutility.For examples of the configuration file required bypkispawnwhen cloning OCSP subsystems, see the pkispawn(8) man page. - Restart the Directory Server instance used by the clone.
systemctl dirsrv@instance_name.service
Note
Restarting the Directory Server reloads the updated schema, which is required for proper performance. - Restart the clone instance.
systemctl restart pki-tomcatd@instance_name.service
- Set up OCSP publishing in the master CA so that the CRL is published to the master OCSP.
- Once the CRL is successfully published, check both the master and cloned OCSP's List Certificate Authorities link in the agent pages. The list should be identical.
- Use the
OCSPClienttool to submit OCSP requests to the master and the cloned Online Certificate Status Manager. The tool should receive identical OCSP responses from both managers.
10.5. Cloning KRA Subsystems
- Configure the master subsystem, and back up the keys.
- Create the clone subsystem instance using the
pkispawnutility.For examples of the configuration file required bypkispawnwhen cloning KRA subsystems, see theInstalling a KRA or TPS clonesection of the pkispawn(8) man page. - Restart the Directory Server instance used by the clone.
systemctl dirsrv@instance_name.service
Note
Restarting the Directory Server reloads the updated schema, which is required for proper performance. - Restart the clone instance.
systemctl restart pki-tomcatd@instance_name.service
- Go to the KRA agent's page.
- Click List Requests.
- Select Show all requests for the request type and status.
- Click .
- Compare the results from the cloned KRA and the master KRA. The results ought to be identical.
10.6. Cloning TKS Subsystems
- Configure the master subsystem, and back up the keys.
- Create the clone subsystem instance using the
pkispawnutility.For examples of the configuration file required bypkispawnwhen cloning TKS subsystems, see theInstalling a KRA or TKS clonesection of the pkispawn(8) man page. - Restart the clone instance.
systemctl restart pki-tomcatd@instance_name.service
ldapsearch to make sure that the same key information is contained in both databases.
10.7. Converting Masters and Clones
10.7.1. Converting CA Clones and Masters
- Stop the master CA if it is still running.
- Open the existing master CA configuration directory:
cd /var/lib/pki/pki-tomcat/ca/conf
- Edit the
CS.cfgfile for the master, and change the CRL and maintenance thread settings so that it is set as a clone:- Disable control of the database maintenance thread:
ca.certStatusUpdateInterval=0
- Disable monitoring database replication changes:
ca.listenToCloneModifications=false
- Disable maintenance of the CRL cache:
ca.crl.IssuingPointId.enableCRLCache=false
- Disable CRL generation:
ca.crl.IssuingPointId.enableCRLUpdates=false
- Set the CA to redirect CRL requests to the new master:
master.ca.agent.host=new_master_hostname master.ca.agent.port=new_master_port
- Stop the cloned CA server.
systemctl stop pki-tomcatd@instance_name.service
- Open the cloned CA's configuration directory.
cd /etc/instance_name
- Edit the
CS.cfgfile to configure the clone as the new master.- Delete each line which begins with the
ca.crl.prefix. - Copy each line beginning with the
ca.crl.prefix from the former master CACS.cfgfile into the cloned CA'sCS.cfgfile. - Enable control of the database maintenance thread; the default value for a master CA is
600.ca.certStatusUpdateInterval=600
- Enable monitoring database replication:
ca.listenToCloneModifications=true
- Enable maintenance of the CRL cache:
ca.crl.IssuingPointId.enableCRLCache=true
- Enable CRL generation:
ca.crl.IssuingPointId.enableCRLUpdates=true
- Disable the redirect settings for CRL generation requests:
master.ca.agent.host=hostname master.ca.agent.port=port number
- Start the new master CA server.
systemctl start pki-tomcatd@instance_name.service
10.7.2. Converting OCSP Clones
- Stop the OCSP master, if it is still running.
- Open the existing master OCSP configuration directory.
cd /etc/instance_name
- Edit the
CS.cfg, and reset theOCSP.Responder.store.defStore.refreshInSecparameter to21600:OCSP.Responder.store.defStore.refreshInSec=21600
- Stop the online cloned OCSP server.
systemctl stop pki-tomcatd@instance_name.service
- Open the cloned OCSP responder's configuration directory.
cd /etc/instance_name
- Open the
CS.cfgfile, and delete theOCSP.Responder.store.defStore.refreshInSecparameter or change its value to any non-zero number:OCSP.Responder.store.defStore.refreshInSec=15000
- Start the new master OCSP responder server.
systemctl start pki-tomcatd@instance_name.service
10.8. Cloning a CA That Has Been Re-Keyed
CS.cfg configuration file — and those key IDs are not updated when the certificate database keys change.
CertUtil::createSelfSignedCert() - CA private key is null!
- Find all of the private key IDs in the
CS.cfgfile.# grep privkey.id /var/lib/pki/pki-tomcat/ca/conf/CS.cfg cloning.signing.privkey.id =-4d798441aa7230910d4e1c39fa132ea228d5d1bc cloning.ocsp_signing.privkey.id =-3e23e743e0ddd88f2a7c6f69fa9f9bcebef1a60 cloning.subsystem.privkey.id =-c3c1b3b4e8f5dd6d2bdefd07581c0b15529536 cloning.sslserver.privkey.id =3023d30245804a4fab42be209ebb0dc683423a8f cloning.audit_signing.privkey.id=2fe35d9d46b373efabe9ef01b8436667a70df096
- Print all of the current private key IDs stored in the NSS database and compare them to the private key IDs stored in the
CS.cfgfile:# certutil -K -d alias certutil: Checking token "NSS Certificate DB" in slot "NSS User Private Key and Certificate Services" Enter Password or Pin for "NSS Certificate DB": < 0> rsa a7b0944b7b8397729a4c8c9af3a9c2b96f49c6f3 caSigningCert cert-ca4-test-master < 1> rsa 6006094af3e5d02aaa91426594ca66cb53e73ac0 ocspSigningCert cert-ca4-test-master < 2> rsa d684da39bf4f2789a3fc9d42204596f4578ad2d9 subsystemCert cert-ca4-test-master < 3> rsa a8edd7c2b5c94f13144cacd99624578ae30b7e43 sslserverCert cert-ca4-test1 < 4> rsa 2fe35d9d46b373efabe9ef01b8436667a70df096 auditSigningCert cert-ca4-test1
In this example, only the audit signing key is the same; the others have been changed. - Take the keys returned in step 2 and convert them from unsigned values (which is what
certutilreturns) to signed Java BigIntegers (which is how the keys are stored in the Certificate System database).This can be done with a calculator or by using the script in Example 10.1, “Certutil to BigInteger Conversion Program”. - Copy the new key values into the
CS.cfgfile.# vim /var/lib/pki/pki-tomcat/ca/conf/CS.cfg cloning.signing.privkey.id =-584f6bb4847c688d65b373650c563d4690b6390d cloning.ocsp_signing.privkey.id =6006094af3e5d02aaa91426594ca66cb53e73ac0 cloning.subsystem.privkey.id =-297b25c640b0d8765c0362bddfba690ba8752d27 cloning.sslserver.privkey.id =-5712283d4a36b0ecebb3532669dba8751cf481bd cloning.audit_signing.privkey.id=2fe35d9d46b373efabe9ef01b8436667a70df096
- Clone the CA as described in Section 10.2, “Cloning a CA”.
Example 10.1. Certutil to BigInteger Conversion Program
certutil to the required BigInteger format.
.java file, such as Test.java.
import java.math.BigInteger;
public class Test
{
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}
public static void main(String[] args)
{
byte[] bytes = hexStringToByteArray(args[0]);
BigInteger big = new BigInteger (bytes);
System.out.println("Result is ==> " + big.toString(16));
}
}# javac Test.java
Chapter 11. Additional Installation Options
pkispawn make certain assumptions about the instances being installed, such as the default signing algorithm to use for CA signing certificates and whether to allow IPv6 addresses for hosts.
11.1. Requesting Subsystem Certificates from an External CA
man pkispawn command and read the Installing an externally signed CA part under the EXAMPLES section.
11.2. Lightweight Sub-CAs
11.2.1. Setting up a Lightweight Sub-CA
- If the parent CA is a Red Hat Certificate System instance and the sub-CA will join the parent’s security domain, see http://www.dogtagpki.org/wiki/Installing_Subordinate_CA.
- If the parent CA is not a Red Hat Certificate System instance, or if the sub-CA will not join the parent’s security domain, see http://www.dogtagpki.org/wiki/Installing_CA_with_Externaly-Signed_CA_Certificate.
11.2.2. Disabling the Creation of Lightweight Sub-CAs
# ldapmodify -D "cn=Directory Manager" -W -x -h server.example.com dn: cn=aclResources,o=instance_name changetype: modify delete: resourceACLS resourceACLS: certServer.ca.authorities:create,modify:allow (create,modify) gr oup="Administrators":Administrators may create and modify lightweight authori ties - delete: resourceACLS resourceACLS: certServer.ca.authorities:delete:allow (delete) group="Administr ators":Administrators may delete lightweight authorities
Note
11.2.3. Re-enabling the Creation of Lightweight Sub-CAs
# ldapmodify -D "cn=Directory Manager" -W -x -h server.example.com dn: cn=aclResources,o=instance_name changetype: modify add: resourceACLS resourceACLS: certServer.ca.authorities:create,modify:allow (create,modify) gr oup="Administrators":Administrators may create and modify lightweight authori ties resourceACLS: certServer.ca.authorities:delete:allow (delete) group="Administr ators":Administrators may delete lightweight authorities
11.3. Enabling IPv6 for a Subsystem
pkiconsole), or through command-line scripts such as tpsclient:
op=var_set name=ca_host value=IPv6 address
- Install the Red Hat Certificate System packages.
- Set the IPv4 and IPv6 addresses in the
/etc/hostsfile. For example:vim /etc/hosts 192.0.0.0 server.example.com IPv4 address 3ffe:1234:2222:2000:202:55ff:fe67:f527 server6.example.com IPv6 address
- Then, export the environment variable to use the IPv6 address for the server. For example:
export PKI_HOSTNAME=server6.example.com
- Run
pkispawnto create the new instance. The values for the server host name in theCS.cfgfile will be set to the IPv6 address.
11.4. Enabling LDAP-based Enrollment Profiles
pki_profile_in_ldap=True option in the [CA] section of the pkispawn configuration file.
Note
/var/lib/pki/instance_name/ca/profiles/ca/, but will be ignored.
CS.cfg:
subsystem.1.class=com.netscape.cmscore.profile.LDAPProfileSubsystem
pki command line utility or a custom script.
11.5. Customizing TLS Ciphers
Chapter 12. Troubleshooting Installation and Cloning
- 12.1. Installation
- Q: I cannot see any Certificate System packages or updates.
- Q: The init script returned an OK status, but my CA instance does not respond. Why?
- Q: I want to customize the subject name for the CA signing certificate, but do not see a way to do this using the pkispawn interactive install mode.
- Q: I want to set different certificate validity periods and extensions for my root certificate authority — but I do not see a way to set it using pkispawn.
- Q: I am seeing an HTTP 500 error code when I try to connect to the web services pages after configuring my subsystem instance.
- 12.2. Java Console
- Q: I cannot open the pkiconsole and I am seeing Java exceptions in stdout.
- Q: I tried to run pkiconsole, and I got Socket exceptions in stdout. Why?
- Q: I attempt to start the console, and the system prompts me for my user name and password. After I enter these credentials, the console fails to appear.
12.1. Installation
journal log by running the following command:
journalctl -u pki-tomcatd@instance_name.service
/var/log/pki/instance_name/subsystem_type/debug.
catalina.out file:
Oct 29, 2010 4:15:44 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-9080
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:243)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:408)
Caused by: java.lang.UnsatisfiedLinkError: jss4libnss3.so in the path. Check this with this command:
ldd /usr/lib64/libjss4.so
libnss3.so is not found, set the correct classpath in the /etc/sysconfig/instance_name configuration file. Then restart the CA using the systemctl restart pki-tomcatd@instance_name.service command.
pkispawn interactive install mode.
/etc/pki/default.cfg file is required. See the pkispawn(8) and pki_default.cfg(5) man pages.
pkispawn.
pkispawn. However, there is a way to edit the certificate profiles used by pkispawn to generate the root CA certificates.
Important
pkispawn to create a new CA instance.
- Back up the original CA certificate profile used by
pkispawn.cp -p /usr/share/pki/ca/conf/caCert.profile /usr/share/pki/ca/conf/caCert.profile.orig
- Open the CA certificate profile used by the configuration wizard.
vim /usr/share/pki/ca/conf/caCert.profile
- Reset the validity period in the Validity Default to whatever you want. For example, to change the period to two years:
2.default.class=com.netscape.cms.profile.def.ValidityDefault 2.default.name=Validity Default 2.default.params.range=7200
- Add any extensions by creating a new default entry in the profile and adding it to the list. For example, to add the Basic Constraint Extension, add the default (which, in this example, is default #9):
9.default.class=com.netscape.cms.profile.def.BasicConstraintsExtDefault 9.default.name=Basic Constraint Extension Constraint 9.default.params.basicConstraintsCritical=true 9.default.params.basicConstraintsIsCA=true 9.default.params.basicConstraintsPathLen=2
Then, add the default number to the list of defaults to use the new default:list=2,4,5,6,7,8,
9 - Once the new profile is set up, then run
pkispawnto create the new CA instance and go through the configuration wizard.
journal, system, and debug log files for the instance to see what errors have occurred. This lists a couple of common errors, but there are many other possibilities.
Error #1: The LDAP database is not running.
journal file that the instance is not ready:
java.io.IOException: CS server is not ready to serve.
com.netscape.cms.servlet.base.CMSServlet.service(CMSServlet.java:409)
javax.servlet.http.HttpServlet.service(HttpServlet.java:688)5558.main - [29/Oct/2010:11:13:40 PDT] [8] [3] In Ldap (bound) connection pool to host ca1 port 389, Cannot connect to LDAP server. Error: netscape.ldap.LDAPException: failed to connect to server ldap://ca1.example.com:389 (91)
debug log:
[29/Oct/2010:11:39:10][main]: CMS:Caught EBaseException
Internal Database Error encountered: Could not connect to LDAP server host
ca1 port 389 Error netscape.ldap.LDAPException: failed to connect to
server ldap://ca1:389 (91)
at com.netscape.cmscore.dbs.DBSubsystem.init(DBSubsystem.java:262)Error #2: A VPN is blocking access.
journal log file for the instance's Tomcat service shows a series of connection errors that result in the HTTP 500 error:
May 26, 2010 7:09:48 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet services threw exception
java.io.IOException: CS server is not ready to serve.
at com.netscape.cms.servlet.base.CMSServlet.service(CMSServlet.java:441)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:542)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:636)12.2. Java Console
pkiconsole and I am seeing Java exceptions in stdout.
alternatives --config java to see what JRE is selected. Red Hat Certificate System requires OpenJDK 1.7.
pkiconsole, and I got Socket exceptions in stdout. Why?
server.xml) or the wrong port was given to access the admin interface.
NSS Cipher Supported '0xff04'
java.io.IOException: SocketException cannot read on socket
at org.mozilla.jss.ssl.SSLSocket.read(SSLSocket.java:1006)
at org.mozilla.jss.ssl.SSLInputStream.read(SSLInputStream.java:70)
at
com.netscape.admin.certsrv.misc.HttpInputStream.fill(HttpInputStream.java:303)
at
com.netscape.admin.certsrv.misc.HttpInputStream.readLine(HttpInputStream.java:224)
at
com.netscape.admin.certsrv.connection.JSSConnection.readHeader(JSSConnection.java:439)
at
com.netscape.admin.certsrv.connection.JSSConnection.initReadResponse(JSSConnection.java:430)
at
com.netscape.admin.certsrv.connection.JSSConnection.sendRequest(JSSConnection.java:344)
at
com.netscape.admin.certsrv.connection.AdminConnection.processRequest(AdminConnection.java:714)
at
com.netscape.admin.certsrv.connection.AdminConnection.sendRequest(AdminConnection.java:623)
at
com.netscape.admin.certsrv.connection.AdminConnection.sendRequest(AdminConnection.java:590)
at
com.netscape.admin.certsrv.connection.AdminConnection.authType(AdminConnection.java:323)
at
com.netscape.admin.certsrv.CMSServerInfo.getAuthType(CMSServerInfo.java:113)
at com.netscape.admin.certsrv.CMSAdmin.run(CMSAdmin.java:499)
at com.netscape.admin.certsrv.CMSAdmin.run(CMSAdmin.java:548)
at com.netscape.admin.certsrv.Console.main(Console.java:1655)/usr/bin/pkiconsole file, and add the following lines:
============================================
${JAVA} ${JAVA_OPTIONS} -cp ${CP} -Djava.util.prefs.systemRoot=/tmp/.java -Djava.util.prefs.userRoot=/tmp/java com.netscape.admin.certsrv.Console -s instanceID -D 9:all -a $1
----------
note: "-D 9:all" is for verbose output on the console.
============================================
Part III. Upgrading Certificate System from 9.x to the latest version
- Upgrade the packages and configuration files. See Upgrading the Packages and Configuration Files.
- Upgrade the databases. See:
- Restart the Certificate System instance:
# systemctl restart pki-tomcatd@instance_name.service
Note
Chapter 13. Upgrading the Packages and Configuration Files
# yum update
/etc/pki/instance_name/subsystem/CS.cfg and /etc/pki/instance_name/server.xml, are automatically modified to the new version.
/var/log/pki/pki-server-upgrade-version.log/var/log/pki/pki-upgrade-version.log
- the corresponding chapter in the Red Hat Directory Server Installation Guide.
- Red Hat Directory Server Release Notes for notable changes, bug fixes, and known issues in Directory Server.
Chapter 14. Upgrading the Database from 9.0 to 9.1
14.1. Upgrading the Database Schema
# ldapmodify -D "cn=Directory Manager" -W -h server.example.com -p 389 -x dn: cn=schema changetype: modify add: attributeTypes attributeTypes: ( realm-oid NAME 'realm' DESC 'CMS defined attribute' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'user defined' ) dn: cn=schema changetype: modify delete: objectClasses objectClasses: ( request-oid NAME 'request' DESC 'CMS defined class' SUP top STRUCTURAL MUST cn MAY ( requestId $ dateOfCreate $ dateOfModify $ requestState $ requestResult $ requestOwner $ requestAgentGroup $ requestSourceId $ requestType $ requestFlag $ requestError $ userMessages $ adminMessages ) X-ORIGIN 'user defined' ) add: objectClasses objectClasses: ( request-oid NAME 'request' DESC 'CMS defined class' SUP top STRUCTURAL MUST cn MAY ( requestId $ dateOfCreate $ dateOfModify $ requestState $ requestResult $ requestOwner $ requestAgentGroup $ requestSourceId $ requestType $ requestFlag $ requestError $ userMessages $ adminMessages $ realm ) X-ORIGIN 'user defined' ) dn: cn=schema changetype: modify add: attributeTypes attributeTypes: ( authorityID-oid NAME 'authorityID' DESC 'Authority ID' SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE X-ORIGIN 'user defined' ) attributeTypes: ( authorityKeyNickname-oid NAME 'authorityKeyNickname' DESC 'Authority key nickname' SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 SINGLE-VALUE X-ORIGIN 'user-defined' ) attributeTypes: ( authorityParentID-oid NAME 'authorityParentID' DESC 'Authority Parent ID' SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE X-ORIGIN 'user defined' ) attributeTypes: ( authorityEnabled-oid NAME 'authorityEnabled' DESC 'Authority Enabled' SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE X-ORIGIN 'user defined' ) attributeTypes: ( authorityDN-oid NAME 'authorityDN' DESC 'Authority DN' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE X-ORIGIN 'user defined' ) attributeTypes: ( authoritySerial-oid NAME 'authoritySerial' DESC 'Authority certificate serial number' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE X-ORIGIN 'user defined' ) attributeTypes: ( authorityParentDN-oid NAME 'authorityParentDN' DESC 'Authority Parent DN' SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE X-ORIGIN 'user defined' ) attributeTypes: ( authorityKeyHost-oid NAME 'authorityKeyHost' DESC 'Authority Key Hosts' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'user defined' ) dn: cn=schema changetype: modify add: objectClasses objectClasses: ( authority-oid NAME 'authority' DESC 'Certificate Authority' SUP top STRUCTURAL MUST ( cn $ authorityID $ authorityKeyNickname $ authorityEnabled $ authorityDN ) MAY ( authoritySerial $ authorityParentID $ authorityParentDN $ authorityKeyHost $ description ) X-ORIGIN 'user defined' )
14.2. Upgrading the CA Database
- Upgrade the container entries:
# ldapmodify -D "cn=Directory Manager" -W -h server.example.com -p 389 -x dn: ou=authorities,ou=ca,CA_base_DN changetype: add objectClass: top objectClass: organizationalUnit ou: authorities
- Upgrade the access control list (ACL) entries:
# ldapmodify -D "cn=Directory Manager" -W -h server.example.com -p 389 -x dn: cn=aclResources,CA_base_DN changetype: modify add: resourceACLS resourceACLS: certServer.ca.authorities:list,read:allow (list,read) user="anybody":Anybody may list and read lightweight authorities resourceACLS: certServer.ca.authorities:create,modify:allow (create,modify) group="Administrators":Administrators may create and modify lightweight authorities resourceACLS: certServer.ca.authorities:delete:allow (delete) group="Administrators":Administrators may delete lightweight authorities
- Upgrade the database indexes:
# ldapmodify -D "cn=Directory Manager" -W -h server.example.com -p 389 -x dn: cn=issuername,cn=index,cn=CA_database_name,cn=ldbm database, cn=plugins, cn=config changetype: add objectClass: top objectClass: nsIndex nsindexType: eq nsindexType: pres nsindexType: sub nsSystemindex: false cn: issuername
- Add the
realmattribute:# ldapmodify -D "cn=Directory Manager" -W -h server.example.com -p 389 -x dn: cn=schema changetype: modify add: attributeTypes attributeTypes: ( realm-oid NAME 'realm' DESC 'CMS defined attribute' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'user defined' ) delete: objectClasses objectClasses: ( request-oid NAME 'request' DESC 'CMS defined class' SUP top STRUCTURAL MUST cn MAY ( requestId $ dateOfCreate $ dateOfModify $ requestState $ requestResult $ requestOwner $ requestAgentGroup $ requestSourceId $ requestType $ requestFlag $ requestError $ userMessages $ adminMessages ) X-ORIGIN 'user defined' ) add: objectClasses objectClasses: ( request-oid NAME 'request' DESC 'CMS defined class' SUP top STRUCTURAL MUST cn MAY ( requestId $ dateOfCreate $ dateOfModify $ requestState $ requestResult $ requestOwner $ requestAgentGroup $ requestSourceId $ requestType $ requestFlag $ requestError $ userMessages $ adminMessages $ realm ) X-ORIGIN 'user defined' )
- Remove the certificate validity delay:
- In the
/var/lib/pki/instance_name/ca/profiles/ca/caDualCert.cfgfile, set:policyset.signingCertSet.2.default.params.startTime=0
- In the
/var/lib/pki/instance_name/ca/profiles/ca/caECDualCert.cfgfile, set:policyset.signingCertSet.2.default.params.startTime=0
- In the
/var/lib/pki/instance_name/ca/profiles/ca/caDualCert.cfgfile, set:policyset.signingCertSet.2.default.params.startTime=0
- In the
/var/lib/pki/instance_name/ca/profiles/ca/caJarSigningCert.cfgfile, set:policyset.caJarSigningSet.2.default.params.startTime=0
- In the
/var/lib/pki/instance_name/ca/profiles/ca/caSignedLogCert.cfgfile, set:policyset.caLogSigningSet.2.default.params.startTime=0
- Add the
issuerNameattribute to certificate records:# pki-server db-upgrade
- Update the attribute syntax to allow underscores in instance names:
# ldapmodify -D "cn=Directory Manager" -W -h server.example.com -p 389 -x dn: cn=schema changetype: modify delete: objectClasses objectClasses: ( authority-oid NAME 'authority' DESC 'Certificate Authority' SUP top STRUCTURAL MUST ( cn $ authorityID $ authorityKeyNickname $ authorityEnabled $ authorityDN ) MAY ( authoritySerial $ authorityParentID $ authorityParentDN $ authorityKeyHost $ description ) X-ORIGIN 'user defined' ) delete: attributeTypes attributeTypes: ( authorityKeyNickname-oid NAME 'authorityKeyNickname' DESC 'Authority key nickname' SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 SINGLE-VALUE X-ORIGIN 'user-defined' ) add: attributeTypes attributeTypes: ( authorityKeyNickname-oid NAME 'authorityKeyNickname' DESC 'Authority key nickname' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE X-ORIGIN 'user-defined' ) add: objectClasses objectClasses: ( authority-oid NAME 'authority' DESC 'Certificate Authority' SUP top STRUCTURAL MUST ( cn $ authorityID $ authorityKeyNickname $ authorityEnabled $ authorityDN ) MAY ( authoritySerial $ authorityParentID $ authorityParentDN $ authorityKeyHost $ description ) X-ORIGIN 'user defined' )
14.3. Upgrading the KRA database
- Upgrade the database indexes:
# ldapmodify -D "cn=Directory Manager" -W -h server.example.com -p 389 -x dn: cn=realm,cn=index,cn=KRA_database_name,cn=ldbm database, cn=plugins,cn=config changetype: add objectClass: top objectClass: nsIndex nsindexType: eq nsindexType: pres nsSystemindex: false cn: realm
- Add the
realmattribute:# ldapmodify -D "cn=Directory Manager" -W -h server.example.com -p 389 -x dn: cn=schema changetype: modify add: attributeTypes attributeTypes: ( realm-oid NAME 'realm' DESC 'CMS defined attribute' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'user defined' ) delete: objectClasses objectClasses: ( request-oid NAME 'request' DESC 'CMS defined class' SUP top STRUCTURAL MUST cn MAY ( requestId $ dateOfCreate $ dateOfModify $ requestState $ requestResult $ requestOwner $ requestAgentGroup $ requestSourceId $ requestType $ requestFlag $ requestError $ userMessages $ adminMessages ) X-ORIGIN 'user defined' ) add: objectClasses objectClasses: ( request-oid NAME 'request' DESC 'CMS defined class' SUP top STRUCTURAL MUST cn MAY ( requestId $ dateOfCreate $ dateOfModify $ requestState $ requestResult $ requestOwner $ requestAgentGroup $ requestSourceId $ requestType $ requestFlag $ requestError $ userMessages $ adminMessages $ realm ) X-ORIGIN 'user defined' ) delete: objectClasses objectClasses: ( keyRecord-oid NAME 'keyRecord' DESC 'CMS defined class' SUP top STRUCTURAL MUST cn MAY ( serialno $ dateOfCreate $ dateOfModify $ keyState $ privateKeyData $ ownerName $ keySize $ metaInfo $ dateOfArchival $ dateOfRecovery $ algorithm $ publicKeyFormat $ publicKeyData $ archivedBy $ clientId $ dataType $ status ) X-ORIGIN 'user defined' ) add: objectClasses objectClasses: ( keyRecord-oid NAME 'keyRecord' DESC 'CMS defined class' SUP top STRUCTURAL MUST cn MAY ( serialno $ dateOfCreate $ dateOfModify $ keyState $ privateKeyData $ ownerName $ keySize $ metaInfo $ dateOfArchival $ dateOfRecovery $ algorithm $ publicKeyFormat $ publicKeyData $ archivedBy $ clientId $ dataType $ status $ realm ) X-ORIGIN 'user defined' )
- Update and re-index the virtual list views (VLV):
- Delete the existing indexes:
# pki-server kra-db-vlv-del -i CS_instance_name -D DS_bind_DN \ -w DS_bind_password - Add the new indexes:
# pki-server kra-db-vlv-add -i CS_instance_name -D DS_bind_DN \ -w DS_bind_password - Restart the Directory Server instance:
# systemctl restart dirsrv@DS_instance_name
- Re-index the database:
# pki-server kra-db-vlv-reindex -i CS_instance_name -D DS_bind_DN \ -w DS_bind_password
14.4. Upgrading the TPS database
Chapter 15. Upgrading the Database from 9.1 to 9.2
Chapter 16. Upgrading the Database from 9.2 to 9.3
Chapter 17. Upgrading the Database from 9.3 to 9.4
Part IV. Migrating to Certificate System 9
Chapter 18. Migrating From Certificate System 8 to 9
Important
18.1. Exporting Data from the Previous System
- Create a directory for the files to export. For example:
# mkdir -m 770 /tmp/cs_bak/
- Export the signing certificate and key:
- When using a hardware security module (HSM):
- List the CA signing certificate nickname. For example:
# certutil -L -d /var/lib/instance_name/alias/ | grep "caSigningCert" caSigningCert ca-pki-ca CTu,Cu,Cu - Export the CA certificate:
# certutil -L -d /var/lib/instance_name/alias/ \ -n "caSigningCert ca-pki-ca" \ -a > /tmp/cs_bak/ca_signing.crtThe key is stored in the HSM and must be available to the new instance.
- When not using an HSM:
- In the configuration file, find the password that protects the CA Network Security Service (NSS) database, and write it to a file:
- If the password is stored in the
/var/lib/instance_name/conf/password.conffile:# grep "internal=" /var/lib/instance_name/conf/password.conf | \ awk -F= '{print $2;}' > /tmp/cs_bak/nss_password.txt - If the password is stored in the
/etc/instance_name/password.conffile:# grep "internal=" /etc/instance_name/password.conf | \ awk -F= '{print $2;}' > /tmp/cs_bak/nss_password.txt
- Create a file with a password that will be used in the next step. For example:
# echo Secret123 > /tmp/cs_bak/pkcs12_password.txt
- Export the signing certificate and key:
# PKCS12Export -d /var/lib/instance_name/alias/ \ -p /tmp/cs_bak/nss_password.txt \ -w /tmp/cs_bak/pkcs12_password.txt \ -o /tmp/cs_bak/ca.p12
- Export the certificate signing request (CSR):
- If the CSR is stored in the
/etc/instance_name/CS.cfgfile:# echo "-----BEGIN NEW CERTIFICATE REQUEST-----" > /tmp/cs_bak/ca_signing.csr # sed -n "/^ca.signing.certreq=/ s/^[^=]*=// p" /etc/instance_name/ca/CS.cfg \ >> /tmp/cs_bak/ca_signing.csr # echo "-----END NEW CERTIFICATE REQUEST-----" >> /tmp/cs_bak/ca_signing.csr - If the CSR is stored in the
/var/lib/instance_name/conf/CS.cfgfile:# echo "-----BEGIN NEW CERTIFICATE REQUEST-----" > /tmp/cs_bak/ca_signing.csr # sed -n "/^ca.signing.certreq=/ s/^[^=]*=// p" /var/lib/instance_name/conf/CS.cfg \ >> /tmp/cs_bak/ca_signing.csr # echo "-----END NEW CERTIFICATE REQUEST-----" >> /tmp/cs_bak/ca_signing.csr
- If the CA is an intermediate CA, extract the root CA or certificate chain from the NSS database:
# certutil -L -d /var/lib/instance_name/alias/ -n "root_CA_nickname" \ -a > /tmp/cs_bak/ca_rootca_signing.crt - Copy the directory that contains the exported files to the new server. For example:
# scp -r /tmp/cs_bak/ new_server:/tmp/
- Create a directory for the files to export, and grant write permissions to the Directory Server user. For example:
# mkdir -m 770 /tmp/ds_bak/ # chown root:dirsrv /tmp/ds_bak/
- Export the Directory Server database:
# db2ldif -Z DS_instance_name -n "CS_database_name" -a /tmp/ds_bak/old_ca.ldif
In the example:DS_instance_namesets the Directory Server instance name. For example:slapd-host_name.CS_database_namesets the Certificate System CA database name used in Directory Server. For example:host_name-CS_instance_name.
Note
Thedb2ldifcommand runs under the Directory Server user. Therefore the destination directory must be writable by this user. - Copy the directory that contains the exported files to the new server. For example:
# scp -r /tmp/ds_bak/ new_server:/tmp/
18.2. Setting up the CA on the New Host
- Set up Directory Server. See Section 6.4, “Installing Red Hat Directory Server”.
- Enable the Certificate System repository. See Section 6.5, “Enabling the Certificate System Repository”.
- Install the pki-ca package:
# yum install pki-ca
If you require additional features, such as the Certificate System console, install the corresponding packages. For details, see Section 7.2, “Certificate System Packages”. - When setting up the CA on a host that uses an IPv6 address, apply the steps described in Section 11.3, “Enabling IPv6 for a Subsystem”.
- Depending on your environment, this step differs.
- When using a hardware security module (HSM):Create a deployment configuration file, for example
/root/pki-CA-deployment.txt, with the following content:[DEFAULT] pki_instance_name=instance_name pki_admin_password=caadmin_password pki_client_pkcs12_password=pkcs12_file_password pki_ds_password=DS_password pki_hsm_enable=True pki_hsm_libfile=path_to_HSM_library pki_hsm_modulename=HSM_module_name pki_token_name=HSM_token_name pki_token_password=HSM_token_password pki_ds_ldap_port=389 pki_existing=True [CA] pki_ca_signing_csr_path=/tmp/cs_bak/ca_signing.csr pki_ca_signing_cert_path=/tmp/cs_bak/ca_signing.crt pki_ca_signing_nickname=caSigningCert ca-pki-ca pki_ca_signing_token=HSM_token_name pki_ds_base_dn=o=pki-tomcat-CA pki_ds_database=instance_name-CA pki_serial_number_range_start=4e pki_request_number_range_start=30 pki_master_crl_enable=False pki_cert_chain_path=/tmp/cs_bak/rootca_signing.crt pki_cert_chain_nickname=caSigningCert cert-top-rootca pki_ca_signing_record_create=False pki_ca_signing_serial_number=decimal_CA_signing_certificate_serial
For descriptions of the parameters used in the previous example, see Table 18.1, “pkispawn Parameter Descriptions” at the end of this step. - When not using a hardware security module (HSM):
- Verify that the PKCS #12 file contains the CA signing certificate and key. For example:
# pki pkcs12-cert-find --pkcs12-file /tmp/cs_bak/ca.p12 \ --pkcs12-password-file /tmp/cs_bak/pkcs12_password.txt --------------- 1 entries found --------------- Certificate ID: 308b4c7d4b5efc4052aec26e49a2c5e2e14c9e90 Serial Number: 0x1 Nickname: caSigningCert ca-pki-ca Subject DN: CN=CA Signing Certificate,O=EXAMPLE Issuer DN: CN=CA Signing Certificate,O=EXAMPLE Trust Flags: CTu,Cu,Cu Has Key: true # pki pkcs12-key-find --pkcs12-file /tmp/cs_bak/ca.p12 \ --pkcs12-password-file /tmp/cs_bak/pkcs12_password.txt --------------- 1 entries found --------------- Key ID: 308b4c7d4b5efc4052aec26e49a2c5e2e14c9e90 Subject DN: CN=CA Signing Certificate,O=EXAMPLE Algorithm: RSANote that the file can additionally contain other certificates and keys. - Verify the trust flags of the CA signing certificate in the output of the previous step. Reset the flags if they are not set to
CTu,Cu,Cuor if they are missing:# pki pkcs12-cert-mod caSigningCert cert-pki-tomcat CA \ --pkcs12-file /tmp/cs_bak/ca.p12 \ --pkcs12-password-file /tmp/cs_bak/pkcs12_password.txt \ --trust-flags "CTu,Cu,Cu" - Remove all other certificates and keys, except the CA signing certificate and key, from the PKCS #12 file. For example:
# pki pkcs12-cert-del Server-Cert root_CA_nickname \ --pkcs12-file /tmp/cs_bak/ca.p12 \ --pkcs12-password-file /tmp/cs_bak/pkcs12_password.txt # pki pkcs12-cert-del "subsystemCert ca-pki-ca" \ --pkcs12-file /tmp/cs_bak/ca.p12 \ --pkcs12-password-file /tmp/cs_bak/pkcs12_password.txt # pki pkcs12-cert-del "ocspSigningCert ca-pki-ca" \ --pkcs12-file /tmp/cs_bak/ca.p12 \ --pkcs12-password-file /tmp/cs_bak/pkcs12_password.txt # pki pkcs12-cert-del "auditSigningCert ca-pki-ca" \ --pkcs12-file /tmp/cs_bak/ca.p12 \ --pkcs12-password-file /tmp/cs_bak/pkcs12_password.txt - If the CA being migrated is an intermediate CA, remove the root CA certificate from the PKCS #12 file. For example:
# pki pkcs12-cert-del ca-pki-ca \ --pkcs12-file /tmp/cs_bak/ca.p12 \ --pkcs12-password-file /tmp/cs_bak/pkcs12_password.txt - Create a deployment configuration file, for example
/root/pki-CA-deployment.txt, with the following content:[DEFAULT] pki_instance_name=instance_name pki_admin_password=caadmin_password pki_client_pkcs12_password=pkcs12_file_password pki_ds_password=DS_password pki_ds_ldap_port=389 pki_existing=True [CA] pki_ca_signing_nickname=caSigningCert ca-pki-ca pki_ca_signing_csr_path=/tmp/cs_bak/ca_signing.csr pki_pkcs12_path=/tmp/cs_bak//cs_bak/ca.p12 pki_pkcs12_password=pkcs12_file_password pki_ds_base_dn=o=pki-tomcat-CA pki_ds_database=pki-tomcat-CA pki_serial_number_range_start=43 pki_request_number_range_start=30 pki_master_crl_enable=False pki_cert_chain_path=/tmp/cs_bak/rootca_signing.crt pki_cert_chain_nickname=caSigningCert cert-top-rootca pki_ca_signing_record_create=False pki_ca_signing_serial_number=decimal_CA_signing_certificate_serial
For descriptions of the parameters used in the previous example, see Table 18.1, “pkispawn Parameter Descriptions”.
Table 18.1. pkispawn Parameter Descriptions
Parameters and SettingsDescriptionpki_hsm_*andpki_token_*Enables communication with the HSM. Only set these parameters when setting up a CA with HSM.pki_existing=TrueSets to use the existing CA mechanism.pki_ca_signing_nicknameThe CA signing nickname must be exactly the same as used in the previous installation, otherwise the installer cannot find the signing key.pki_ca_signing_*Sets the paths to the certificate signing request (CSR) and the certificate files copied from the existing machine.pki_pkcs12_*Sets the path to the PKCS #12 file and the password used to decrypt the file. Do not set this parameter when deploying a CA with HSM.pki_ds_base_dnSets the Directory Server base distinguished name (DN). The value must be the same as on the previous CA. You can find this value on the previous host in theinternaldb.basednparameter in the/var/lib/instance_name/conf/CS.cfgfile.pki_serial_number_range_startThe serial number is critical. The value must be higher than the last number used in the previous CA. To display which numbers are already used, see the old CA's agent interface. This parameter is set in hex format without the leading0xprefix. The value used in the examples (4e) is78in decimal.pki_request_number_range_startThe request number is critical. The value must be higher than the last number used in the previous CA. To display which numbers are already used, see the old CA's agent interface. The value is set in decimal format.pki_master_crl_enable=FalsePrevents the initial creation and publishing of a certificate revocation list (CRL) during the setup. Instead, the CRL will be imported from the old data during the database migration.pki_cert_chain_pathandpki_cert_chain_nicknameSet these parameters only if the old CA is an intermediate CA. In this case, set the parameters to the path to the root CA certificate file and the nickname to use when storing the certificate in the network security services (NSS) database.pki_ca_signing_record_create=FalseDisables the recreation of the CA signing record at the end of thepkispawnprocess. This enables you to import the old database.pki_ca_signing_serial_numberSets the serial number of the CA signing certificate in decimal.For further details and parameter descriptions, see the pkispawn(8) man page. - Create the new CA using the deployment configuration file. For example:
# pkispawn -s CA -f /root/pki-CA-deployment.txt
- Verify that the CA signing key ID is the same in the existing and in the new CA. For example:
# grep "internal=" /var/lib/instance_name/conf/password.conf | \ awk -F= '{print $2;}' > internal.txt# certutil -K -d /var/lib/instance_name/alias/ -f internal.txt ... < 2> rsa 7bd4dc662670ebe08a35086b054175559608ac20 caSigningCert ca-pki-ca ...
18.3. Importing the Data into the New CA
- When migrating from a previous version, it can be necessary to manually clean up the LDAP data interchange format (LDIF) file. Before Red Hat Directory Server 10, syntax checking was disabled by default. Therefore, data from a previous version can include entries that are now invalid in Directory Server 10. For example:
- Values of boolean attributes must be set either to
TRUEorFALSE(all capitalized).Important
Do not automatically update all occurrences to uppercase by using a search and replace utility. Some attributes in the LDIF file contain these strings, but are not using the boolean type. Updating these attributes' values can cause the import to fail. Typically, boolean attributes are only used in thecn=CAList,ou=Security Domain,CS_instance_namesecurity domain database entries. - Empty strings must be removed. The Directory Server syntax validation does not allow to set empty strings.Empty strings often appear in
userTypeanduserStateattributes incmsUserentries inou=People,CS_instance_name.
During the import, other entries can fail, too. It is important to verify the log file after the database import. Optionally, you can import the LDIF file into a temporary, empty database to find out which entries caused the import to fail. - Shut down the CA service:
# systemctl stop pki-tomcatd@instance_name.service
- Optionally, back up the CA database on the new host:
# db2bak
The backup is stored in the/var/lib/dirsrv/instance_name/bak/host_name-time_stamp/directory. - Import the data into the new database. For example:
# ldapmodify -x -W -D 'cn=Directory Manager' -a -c -f /tmp/ds_bak/old_ca.ldif | \ tee /root/import.logTheldapmodifyutility only adds new entries and does not update existing entries, created when you installed the CA. For example:- Top level entries. For example:
o=pki-tomcat-CA. - Default groups. For example:
cn=Certificate Manager Agents,ou=groups,o=pki-tomcat-CA.Because the standard groups are not updated, the users are not automatically added to these groups. After the import, you must add members to each default group manually. See Section 18.4, “Reassigning Users to Default Groups”. - Default access control lists (ACL) for the CA.
As mentioned earlier, Directory Server 10 uses syntax validation. Verify the output in the/root/import.logfile and search for failed actions, such asldap_add: Invalid syntax (21). For further details, see Step 1. - Remove the directory entry for the old security domain. For example:
# ldapmodify -W -x -D "cn=Directory Manager" dn: cn=server.example.com:9445,cn=CAList,ou=Security Domain,o=pki-tomcat-CA changetype: delete
- Enable the CA in the
/etc/pki/instance_name/ca/CS.cfgfile to act as the certificate revocation list (CRL) master:ca.crl.MasterCRL.enable=true
- Restart the CA service:
# systemctl start pki-tomcat@instance_name
18.4. Reassigning Users to Default Groups
pki utility. For example:
- Set up the client:
# pki -c password client-init ------------------ Client initialized ------------------ # pk12util -i ~/.dogtag/instance_name/ca_admin_cert.p12 -d ~/.dogtag/nssdb/ Enter Password or Pin for "NSS Certificate DB": Enter password for PKCS12 file: pk12util: PKCS12 IMPORT SUCCESSFUL
- Add the
useraccount to theCertificate Manager Agents,Administrators, andSecurity Domain Administratorsgroups:# pki -n "PKI Administrator for example.com" -c password \ user-membership-add user_name "Certificate Manager Agents" # pki -n "PKI Administrator for example.com" -c password \ user-membership-add user "Administrators" # pki -n "PKI Administrator for example.com" -c password \ user-membership-add user "Security Domain Administrators"
Chapter 19. Migrating an OpenSSL CA to Certificate System
Note
19.1. Migrating an OpenSSL CA to Certificate System When Not Using an HSM
- Create a file with a password that will be used in the next step. For example:
# echo password > ~/password.txt
- Import the OpenSSL CA certificate and key into a PKCS #12 file using the
openssl pkcs12command. Use the following options:-exportinstructs theopensslcommand to export the data.-in path_to_ca_certificatesets the path to the OpenSSL CA certificate.-inkey path_to_CA_signing_keysets the path to the OpenSSL CA signing key.-out path_to_PKCS_#12_filesets the path to the PKCS #12 file in which the output is stored.-name "friendly_name"sets the friendly name of the certificate and key.-passout file:path_to_password_filesets the path to the text file that contains the password used to encrypt the PKCS #12 file.
For example, to export the OpenSSL CA certificate and key into the~/ca.p12file:# openssl pkcs12 -export -in ~/ca.crt -inkey ~/ca.key -out ~/ca.p12 \ -name "CA Certificate" -passout file:~/password.txt - Initialize a password protected Network Security Services (NSS) database for the Public Key Infrastructure (PKI) command-line interface. For example:
# pki -c password client-init
- Set the
CTu,Cu,Cutrust flags for the CA certificate with theCA Certificatenick name stored in the~/ca.12file using the password in the~/password.txtfile:# pki pkcs12-cert-mod --pkcs12-file ~/ca.p12 "CA Certificate" \ --pkcs12-password-file ~/password.txt --trust-flags "CTu,Cu,Cu"Important
Enter the trust flags without spaces. - Display the CA certificate stored in the
~/ca.p12file:# pki pkcs12-cert-find --pkcs12-file ~/ca.p12 \ --pkcs12-password-file ~/password.txt --------------- 1 entries found -------------- Certificate ID: 9311084d08b37d12e856b904b7e52eb3b1cece4a Serial Number: 0xe3f2b350edcd875c Nickname: CA Certificate Subject DN: O=Example,CN=CA Certificate Issuer DN: O=Example,CN=CA Certificate Trust Flags: CTu,Cu,Cu Has Key: true - Display the CA signing key stored in the
~/ca.p12file:# pki pkcs12-key-find --pkcs12-file ~/ca.p12 \ --pkcs12-password-file ~/password.txt --------------- 1 entries found --------------- Key ID: 9311084d08b37d12e856b904b7e52eb3b1cece4a Subject DN: CA Certificate Algorithm: RSA - Copy the following files to the new Certificate System host:
- OpenSSL CA Signing Certificate Request (CSR)
- OpenSSL CA certificate chain (if available)
- PKCS #12 file that contains the OpenSSL CA signing certificate and key
- Password file used to protect the PKCS #12 file
For example, to copy the files using secure copy:# scp ~/ca.csr ~/certificate_chain.p7b ~/ca.p12 ~/password.txt new_server:~/
- Set up the CA on the new host. For details, see Section 18.2, “Setting up the CA on the New Host”.
19.2. Migrating an OpenSSL CA to Certificate System When Using an HSM
- Copy the following files to the new Certificate System host:
- CA signing certificate in PEM format
- OpenSSL CA CSR
- Certificate CA certificate chain (if available)
- Set up the CA on the new host. For details, see Section 18.2, “Setting up the CA on the New Host”.
Part V. Uninstalling Certificate System Subsystems
Chapter 20. Removing a Subsystem
pkidestroy -s subsystem_type -i instance_name
-s option specifies the subsystem to be removed (such as CA, KRA, OCSP, TKS, or TPS). The -i option specifies the instance name, such as pki-tomcat.
Example 20.1. Removing a CA Subsystem
$ pkidestroy -s CA -i pki-tomcat Loading deployment configuration from /var/lib/pki/pki-tomcat/ca/registry/ca/deployment.cfg. Uninstalling CA from /var/lib/pki/pki-tomcat. Removed symlink /etc/systemd/system/multi-user.target.wants/pki-tomcatd.target. Uninstallation complete.
pkidestroy utility removes the subsystem and any related files, such as the certificate databases, certificates, keys, and associated users. It does not uninstall the subsystem packages. If the subsystem is the last subsystem on the server instance, the server instance is removed as well.
Chapter 21. Removing Certificate System Subsystem Packages
yum, to remove each package individually.
- Remove all the associated subsystems. For example:
pkidestroy -s CA -i pki-tomcat
- Run the uninstall utility. For example:
yum remove pki-subsystem_type
The subsystem type can beca,kra,ocsp,tks, ortps. - To remove other packages and dependencies, remove the packages specifically, using
yum. The complete list of installed packages is at Section 7.2, “Certificate System Packages”.
Glossary
A
- access control
- The process of controlling what particular users are allowed to do. For example, access control to servers is typically based on an identity, established by a password or a certificate, and on rules regarding what that entity can do. See also access control list (ACL).
- access control instructions (ACI)
- An access rule that specifies how subjects requesting access are to be identified or what rights are allowed or denied for a particular subject. See access control list (ACL).
- access control list (ACL)
- A collection of access control entries that define a hierarchy of access rules to be evaluated when a server receives a request for access to a particular resource. See access control instructions (ACI).
- administrator
- The person who installs and configures one or more Certificate System managers and sets up privileged users, or agents, for them. See also agent.
- Advanced Encryption Standard (AES)
- The Advanced Encryption Standard (AES), like its predecessor Data Encryption Standard (DES), is a FIPS-approved symmetric-key encryption standard. AES was adopted by the US government in 2002. It defines three block ciphers, AES-128, AES-192 and AES-256. The National Institute of Standards and Technology (NIST) defined the AES standard in U.S. FIPS PUB 197. For more information, see http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf.
- agent
- A user who belongs to a group authorized to manage agent services for a Certificate System manager. See also Certificate Manager agent, Key Recovery Authority agent.
- agent services
- 1. Services that can be administered by a Certificate System agent through HTML pages served by the Certificate System subsystem for which the agent has been assigned the necessary privileges.2. The HTML pages for administering such services.
- agent-approved enrollment
- An enrollment that requires an agent to approve the request before the certificate is issued.
- APDU
- Application protocol data unit. A communication unit (analogous to a byte) that is used in communications between a smart card and a smart card reader.
- attribute value assertion (AVA)
- An assertion of the form attribute = value, where attribute is a tag, such as
o(organization) oruid(user ID), and value is a value such as "Red Hat, Inc." or a login name. AVAs are used to form the distinguished name (DN) that identifies the subject of a certificate, called the subject name of the certificate. - audit log
- A log that records various system events. This log can be signed, providing proof that it was not tampered with, and can only be read by an auditor user.
- auditor
- A privileged user who can view the signed audit logs.
- authentication
- Confident identification; assurance that a party to some computerized transaction is not an impostor. Authentication typically involves the use of a password, certificate, PIN, or other information to validate identity over a computer network. See also password-based authentication, certificate-based authentication, client authentication, server authentication.
- authentication module
- A set of rules (implemented as a Java™ class) for authenticating an end entity, agent, administrator, or any other entity that needs to interact with a Certificate System subsystem. In the case of typical end-user enrollment, after the user has supplied the information requested by the enrollment form, the enrollment servlet uses an authentication module associated with that form to validate the information and authenticate the user's identity. See servlet.
- authorization
- Permission to access a resource controlled by a server. Authorization typically takes place after the ACLs associated with a resource have been evaluated by a server. See access control list (ACL).
- automated enrollment
- A way of configuring a Certificate System subsystem that allows automatic authentication for end-entity enrollment, without human intervention. With this form of authentication, a certificate request that completes authentication module processing successfully is automatically approved for profile processing and certificate issuance.
B
- bind DN
- A user ID, in the form of a distinguished name (DN), used with a password to authenticate to Red Hat Directory Server.
C
- CA certificate
- A certificate that identifies a certificate authority. See also certificate authority (CA), subordinate CA, root CA.
- CA hierarchy
- A hierarchy of CAs in which a root CA delegates the authority to issue certificates to subordinate CAs. Subordinate CAs can also expand the hierarchy by delegating issuing status to other CAs. See also certificate authority (CA), subordinate CA, root CA.
- CA server key
- The SSL server key of the server providing a CA service.
- CA signing key
- The private key that corresponds to the public key in the CA certificate. A CA uses its signing key to sign certificates and CRLs.
- certificate
- Digital data, formatted according to the X.509 standard, that specifies the name of an individual, company, or other entity (the subject name of the certificate) and certifies that a public key, which is also included in the certificate, belongs to that entity. A certificate is issued and digitally signed by a certificate authority (CA). A certificate's validity can be verified by checking the CA's digital signature through public-key cryptography techniques. To be trusted within a public-key infrastructure (PKI), a certificate must be issued and signed by a CA that is trusted by other entities enrolled in the PKI.
- certificate authority (CA)
- A trusted entity that issues a certificate after verifying the identity of the person or entity the certificate is intended to identify. A CA also renews and revokes certificates and generates CRLs. The entity named in the issuer field of a certificate is always a CA. Certificate authorities can be independent third parties or a person or organization using certificate-issuing server software, such as Red Hat Certificate System.
- certificate chain
- A hierarchical series of certificates signed by successive certificate authorities. A CA certificate identifies a certificate authority (CA) and is used to sign certificates issued by that authority. A CA certificate can in turn be signed by the CA certificate of a parent CA, and so on up to a root CA. Certificate System allows any end entity to retrieve all the certificates in a certificate chain.
- certificate extensions
- An X.509 v3 certificate contains an extensions field that permits any number of additional fields to be added to the certificate. Certificate extensions provide a way of adding information such as alternative subject names and usage restrictions to certificates. A number of standard extensions have been defined by the PKIX working group.
- certificate fingerprint
- A one-way hash associated with a certificate. The number is not part of the certificate itself, but is produced by applying a hash function to the contents of the certificate. If the contents of the certificate changes, even by a single character, the same function produces a different number. Certificate fingerprints can therefore be used to verify that certificates have not been tampered with.
- Certificate Management Message Formats (CMMF)
- Message formats used to convey certificate requests and revocation requests from end entities to a Certificate Manager and to send a variety of information to end entities. A proposed standard from the Internet Engineering Task Force (IETF) PKIX working group. CMMF is subsumed by another proposed standard, Certificate Management Messages over Cryptographic Message Syntax (CMC). For detailed information, see https://tools.ietf.org/html/draft-ietf-pkix-cmmf-02.
- Certificate Management Messages over Cryptographic Message Syntax (CMC)
- Message format used to convey a request for a certificate to a Certificate Manager. A proposed standard from the Internet Engineering Task Force (IETF) PKIX working group. For detailed information, see https://tools.ietf.org/html/draft-ietf-pkix-cmc-02.
- Certificate Manager
- An independent Certificate System subsystem that acts as a certificate authority. A Certificate Manager instance issues, renews, and revokes certificates, which it can publish along with CRLs to an LDAP directory. It accepts requests from end entities. See certificate authority (CA).
- Certificate Manager agent
- A user who belongs to a group authorized to manage agent services for a Certificate Manager. These services include the ability to access and modify (approve and reject) certificate requests and issue certificates.
- certificate profile
- A set of configuration settings that defines a certain type of enrollment. The certificate profile sets policies for a particular type of enrollment along with an authentication method in a certificate profile.
- Certificate Request Message Format (CRMF)
- Format used for messages related to management of X.509 certificates. This format is a subset of CMMF. See also Certificate Management Message Formats (CMMF). For detailed information, see http://www.ietf.org/rfc/rfc2511.txt.
- certificate revocation list (CRL)
- As defined by the X.509 standard, a list of revoked certificates by serial number, generated and signed by a certificate authority (CA).
- Certificate System
- Certificate System console
- A console that can be opened for any single Certificate System instance. A Certificate System console allows the Certificate System administrator to control configuration settings for the corresponding Certificate System instance.
- Certificate System subsystem
- One of the five Certificate System managers: Certificate Manager, Online Certificate Status Manager, Key Recovery Authority, Token Key Service, or Token Processing System.
- certificate-based authentication
- Authentication based on certificates and public-key cryptography. See also password-based authentication.
- chain of trust
- See certificate chain.
- chained CA
- See linked CA.
- cipher
- client authentication
- The process of identifying a client to a server, such as with a name and password or with a certificate and some digitally signed data. See certificate-based authentication, password-based authentication, server authentication.
- client SSL certificate
- A certificate used to identify a client to a server using the SSL protocol. See Secure Sockets Layer (SSL).
- CMC
- CMC Enrollment
- Features that allow either signed enrollment or signed revocation requests to be sent to a Certificate Manager using an agent's signing certificate. These requests are then automatically processed by the Certificate Manager.
- CMMF
- CRL
- CRMF
- cross-certification
- The exchange of certificates by two CAs in different certification hierarchies, or chains. Cross-certification extends the chain of trust so that it encompasses both hierarchies. See also certificate authority (CA).
- cross-pair certificate
- A certificate issued by one CA to another CA which is then stored by both CAs to form a circle of trust. The two CAs issue certificates to each other, and then store both cross-pair certificates as a certificate pair.
- cryptographic algorithm
- A set of rules or directions used to perform cryptographic operations such as encryption and decryption.
- Cryptographic Message Syntax (CS)
- The syntax used to digitally sign, digest, authenticate, or encrypt arbitrary messages, such as CMMF.
- cryptographic module
- See PKCS #11 module.
- cryptographic service provider (CSP)
- A cryptographic module that performs cryptographic services, such as key generation, key storage, and encryption, on behalf of software that uses a standard interface such as that defined by PKCS #11 to request such services.
- CSP
D
- decryption
- Unscrambling data that has been encrypted. See encryption.
- delta CRL
- A CRL containing a list of those certificates that have been revoked since the last full CRL was issued.
- digital ID
- See certificate.
- digital signature
- To create a digital signature, the signing software first creates a one-way hash from the data to be signed, such as a newly issued certificate. The one-way hash is then encrypted with the private key of the signer. The resulting digital signature is unique for each piece of data signed. Even a single comma added to a message changes the digital signature for that message. Successful decryption of the digital signature with the signer's public key and comparison with another hash of the same data provides tamper detection. Verification of the certificate chain for the certificate containing the public key provides authentication of the signer. See also nonrepudiation, encryption.
- distinguished name (DN)
- A series of AVAs that identify the subject of a certificate. See attribute value assertion (AVA).
- distribution points
- Used for CRLs to define a set of certificates. Each distribution point is defined by a set of certificates that are issued. A CRL can be created for a particular distribution point.
- dual key pair
- Two public-private key pairs, four keys altogether, corresponding to two separate certificates. The private key of one pair is used for signing operations, and the public and private keys of the other pair are used for encryption and decryption operations. Each pair corresponds to a separate certificate. See also encryption key, public-key cryptography, signing key.
- Key Recovery Authority
- An optional, independent Certificate System subsystem that manages the long-term archival and recovery of RSA encryption keys for end entities. A Certificate Manager can be configured to archive end entities' encryption keys with a Key Recovery Authority before issuing new certificates. The Key Recovery Authority is useful only if end entities are encrypting data, such as sensitive email, that the organization may need to recover someday. It can be used only with end entities that support dual key pairs: two separate key pairs, one for encryption and one for digital signatures.
- Key Recovery Authority agent
- A user who belongs to a group authorized to manage agent services for a Key Recovery Authority, including managing the request queue and authorizing recovery operation using HTML-based administration pages.
- Key Recovery Authority recovery agent
- One of the m of n people who own portions of the storage key for the Key Recovery Authority.
- Key Recovery Authority storage key
- Special key used by the Key Recovery Authority to encrypt the end entity's encryption key after it has been decrypted with the Key Recovery Authority's private transport key. The storage key never leaves the Key Recovery Authority.
- Key Recovery Authority transport certificate
- Certifies the public key used by an end entity to encrypt the entity's encryption key for transport to the Key Recovery Authority. The Key Recovery Authority uses the private key corresponding to the certified public key to decrypt the end entity's key before encrypting it with the storage key.
E
- eavesdropping
- Surreptitious interception of information sent over a network by an entity for which the information is not intended.
- Elliptic Curve Cryptography (ECC)
- A cryptographic algorithm which uses elliptic curves to create additive logarithms for the mathematical problems which are the basis of the cryptographic keys. ECC ciphers are more efficient to use than RSA ciphers and, because of their intrinsic complexity, are stronger at smaller bits than RSA ciphers. For more information, see https://tools.ietf.org/html/draft-ietf-tls-ecc-12.
- encryption
- Scrambling information in a way that disguises its meaning. See decryption.
- encryption key
- A private key used for encryption only. An encryption key and its equivalent public key, plus a signing key and its equivalent public key, constitute a dual key pair.
- end entity
- In a public-key infrastructure (PKI), a person, router, server, or other entity that uses a certificate to identify itself.
- enrollment
- The process of requesting and receiving an X.509 certificate for use in a public-key infrastructure (PKI). Also known as registration.
- extensions field
F
- Federal Bridge Certificate Authority (FBCA)
- A configuration where two CAs form a circle of trust by issuing cross-pair certificates to each other and storing the two cross-pair certificates as a single certificate pair.
- fingerprint
- FIPS PUBS 140
- Federal Information Standards Publications (FIPS PUBS) 140 is a US government standard for implementations of cryptographic modules, hardware or software that encrypts and decrypts data or performs other cryptographic operations, such as creating or verifying digital signatures. Many products sold to the US government must comply with one or more of the FIPS standards. See http://www.nist.gov/itl/fipscurrent.cfm.
- firewall
- A system or combination of systems that enforces a boundary between two or more networks.
I
- impersonation
- The act of posing as the intended recipient of information sent over a network. Impersonation can take two forms: spoofing and misrepresentation.
- input
- In the context of the certificate profile feature, it defines the enrollment form for a particular certificate profile. Each input is set, which then dynamically creates the enrollment form from all inputs configured for this enrollment.
- intermediate CA
- A CA whose certificate is located between the root CA and the issued certificate in a certificate chain.
- IP spoofing
- The forgery of client IP addresses.
J
- JAR file
- A digital envelope for a compressed collection of files organized according to the Java™ archive (JAR) format.
- Java™ archive (JAR) format
- A set of conventions for associating digital signatures, installer scripts, and other information with files in a directory.
- Java™ Cryptography Architecture (JCA)
- The API specification and reference developed by Sun Microsystems for cryptographic services. See http://java.sun.com/products/jdk/1.2/docs/guide/security/CryptoSpec.Introduction.
- Java™ Development Kit (JDK)
- Software development kit provided by Sun Microsystems for developing applications and applets using the Java™ programming language.
- Java™ Native Interface (JNI)
- A standard programming interface that provides binary compatibility across different implementations of the Java™ Virtual Machine (JVM) on a given platform, allowing existing code written in a language such as C or C++ for a single platform to bind to Java™. See http://java.sun.com/products/jdk/1.2/docs/guide/jni/index.html.
- Java™ Security Services (JSS)
- A Java™ interface for controlling security operations performed by Netscape Security Services (NSS).
K
- KEA
- key
- A large number used by a cryptographic algorithm to encrypt or decrypt data. A person's public key, for example, allows other people to encrypt messages intended for that person. The messages must then be decrypted by using the corresponding private key.
- key exchange
- A procedure followed by a client and server to determine the symmetric keys they will both use during an SSL session.
- Key Exchange Algorithm (KEA)
- An algorithm used for key exchange by the US Government.
L
- Lightweight Directory Access Protocol (LDAP)
- A directory service protocol designed to run over TCP/IP and across multiple platforms. LDAP is a simplified version of Directory Access Protocol (DAP), used to access X.500 directories. LDAP is under IETF change control and has evolved to meet Internet requirements.
- linked CA
- An internally deployed certificate authority (CA) whose certificate is signed by a public, third-party CA. The internal CA acts as the root CA for certificates it issues, and the third- party CA acts as the root CA for certificates issued by other CAs that are linked to the same third-party root CA. Also known as "chained CA" and by other terms used by different public CAs.
M
- manual authentication
- A way of configuring a Certificate System subsystem that requires human approval of each certificate request. With this form of authentication, a servlet forwards a certificate request to a request queue after successful authentication module processing. An agent with appropriate privileges must then approve each request individually before profile processing and certificate issuance can proceed.
- MD5
- A message digest algorithm that was developed by Ronald Rivest. See also one-way hash.
- message digest
- See one-way hash.
- misrepresentation
- The presentation of an entity as a person or organization that it is not. For example, a website might pretend to be a furniture store when it is really a site that takes credit-card payments but never sends any goods. Misrepresentation is one form of impersonation. See also spoofing.
N
- Netscape Security Services (NSS)
- A set of libraries designed to support cross-platform development of security-enabled communications applications. Applications built using the NSS libraries support the Secure Sockets Layer (SSL) protocol for authentication, tamper detection, and encryption, and the PKCS #11 protocol for cryptographic token interfaces. NSS is also available separately as a software development kit.
- non-TMS
- Non-token management system. Refers to a configuration of subsystems (the CA and, optionally, KRA and OCSP) which do not handle smart cards directly.
See Also token management system (TMS).
- nonrepudiation
- The inability by the sender of a message to deny having sent the message. A digital signature provides one form of nonrepudiation.
O
- object signing
- A method of file signing that allows software developers to sign Java code, JavaScript scripts, or any kind of file and allows users to identify the signers and control access by signed code to local system resources.
- object-signing certificate
- A certificate that is associated private key is used to sign objects; related to object signing.
- OCSP
- Online Certificate Status Protocol.
- one-way hash
- 1. A number of fixed-length generated from data of arbitrary length with the aid of a hashing algorithm. The number, also called a message digest, is unique to the hashed data. Any change in the data, even deleting or altering a single character, results in a different value.2. The content of the hashed data cannot be deduced from the hash.
- operation
- The specific operation, such as read or write, that is being allowed or denied in an access control instruction.
- output
- In the context of the certificate profile feature, it defines the resulting form from a successful certificate enrollment for a particular certificate profile. Each output is set, which then dynamically creates the form from all outputs configured for this enrollment.
P
- password-based authentication
- Confident identification by means of a name and password. See also authentication, certificate-based authentication.
- PKCS #10
- The public-key cryptography standard that governs certificate requests.
- PKCS #11
- The public-key cryptography standard that governs cryptographic tokens such as smart cards.
- PKCS #11 module
- A driver for a cryptographic device that provides cryptographic services, such as encryption and decryption, through the PKCS #11 interface. A PKCS #11 module, also called a cryptographic module or cryptographic service provider, can be implemented in either hardware or software. A PKCS #11 module always has one or more slots, which may be implemented as physical hardware slots in some form of physical reader, such as for smart cards, or as conceptual slots in software. Each slot for a PKCS #11 module can in turn contain a token, which is the hardware or software device that actually provides cryptographic services and optionally stores certificates and keys. Red Hat provides a built-in PKCS #11 module with Certificate System.
- PKCS #12
- The public-key cryptography standard that governs key portability.
- PKCS #7
- The public-key cryptography standard that governs signing and encryption.
- private key
- One of a pair of keys used in public-key cryptography. The private key is kept secret and is used to decrypt data encrypted with the corresponding public key.
- proof-of-archival (POA)
- Data signed with the private Key Recovery Authority transport key that contains information about an archived end-entity key, including key serial number, name of the Key Recovery Authority, subject name of the corresponding certificate, and date of archival. The signed proof-of-archival data are the response returned by the Key Recovery Authority to the Certificate Manager after a successful key archival operation. See also Key Recovery Authority transport certificate.
- public key
- One of a pair of keys used in public-key cryptography. The public key is distributed freely and published as part of a certificate. It is typically used to encrypt data sent to the public key's owner, who then decrypts the data with the corresponding private key.
- public-key cryptography
- A set of well-established techniques and standards that allow an entity to verify its identity electronically or to sign and encrypt electronic data. Two keys are involved, a public key and a private key. A public key is published as part of a certificate, which associates that key with a particular identity. The corresponding private key is kept secret. Data encrypted with the public key can be decrypted only with the private key.
- public-key infrastructure (PKI)
- The standards and services that facilitate the use of public-key cryptography and X.509 v3 certificates in a networked environment.
R
- RC2, RC4
- Cryptographic algorithms developed for RSA Data Security by Rivest. See also cryptographic algorithm.
- Red Hat Certificate System
- A highly configurable set of software components and tools for creating, deploying, and managing certificates. Certificate System is comprised of five major subsystems that can be installed in different Certificate System instances in different physical locations: Certificate Manager, Online Certificate Status Manager, Key Recovery Authority, Token Key Service, and Token Processing System.
- registration
- See enrollment.
- root CA
- The certificate authority (CA) with a self-signed certificate at the top of a certificate chain. See also CA certificate, subordinate CA.
- RSA algorithm
- Short for Rivest-Shamir-Adleman, a public-key algorithm for both encryption and authentication. It was developed by Ronald Rivest, Adi Shamir, and Leonard Adleman and introduced in 1978.
- RSA key exchange
- A key-exchange algorithm for SSL based on the RSA algorithm.
S
- sandbox
- A Java™ term for the carefully defined limits within which Java™ code must operate.
- secure channel
- A security association between the TPS and the smart card which allows encrypted communciation based on a shared master key generated by the TKS and the smart card APDUs.
- Secure Sockets Layer (SSL)
- A protocol that allows mutual authentication between a client and server and the establishment of an authenticated and encrypted connection. SSL runs above TCP/IP and below HTTP, LDAP, IMAP, NNTP, and other high-level network protocols.
- security domain
- A centralized repository or inventory of PKI subsystems. Its primary purpose is to facilitate the installation and configuration of new PKI services by automatically establishing trusted relationships between subsystems.
- self tests
- A feature that tests a Certificate System instance both when the instance starts up and on-demand.
- server authentication
- The process of identifying a server to a client. See also client authentication.
- server SSL certificate
- A certificate used to identify a server to a client using the Secure Sockets Layer (SSL) protocol.
- servlet
- Java™ code that handles a particular kind of interaction with end entities on behalf of a Certificate System subsystem. For example, certificate enrollment, revocation, and key recovery requests are each handled by separate servlets.
- SHA-1
- Secure Hash Algorithm, a hash function used by the US government.
- signature algorithm
- A cryptographic algorithm used to create digital signatures. Certificate System supports the MD5 and SHA-1 signing algorithms. See also cryptographic algorithm, digital signature.
- signed audit log
- See audit log.
- signing certificate
- A certificate that is public key corresponds to a private key used to create digital signatures. For example, a Certificate Manager must have a signing certificate that is public key corresponds to the private key it uses to sign the certificates it issues.
- signing key
- A private key used for signing only. A signing key and its equivalent public key, plus an encryption key and its equivalent public key, constitute a dual key pair.
- single sign-on
- 1. In Certificate System, a password that simplifies the way to sign on to Red Hat Certificate System by storing the passwords for the internal database and tokens. Each time a user logs on, he is required to enter this single password.2. The ability for a user to log in once to a single computer and be authenticated automatically by a variety of servers within a network. Partial single sign-on solutions can take many forms, including mechanisms for automatically tracking passwords used with different servers. Certificates support single sign-on within a public-key infrastructure (PKI). A user can log in once to a local client's private-key database and, as long as the client software is running, rely on certificate-based authentication to access each server within an organization that the user is allowed to access.
- slot
- The portion of a PKCS #11 module, implemented in either hardware or software, that contains a token.
- smart card
- A small device that contains a microprocessor and stores cryptographic information, such as keys and certificates, and performs cryptographic operations. Smart cards implement some or all of the PKCS #11 interface.
- spoofing
- Pretending to be someone else. For example, a person can pretend to have the email address
jdoe@example.com, or a computer can identify itself as a site calledwww.redhat.comwhen it is not. Spoofing is one form of impersonation. See also misrepresentation. - SSL
- subject
- The entity identified by a certificate. In particular, the subject field of a certificate contains a subject name that uniquely describes the certified entity.
- subject name
- subordinate CA
- A certificate authority that is certificate is signed by another subordinate CA or by the root CA. See CA certificate, root CA.
- symmetric encryption
- An encryption method that uses the same cryptographic key to encrypt and decrypt a given message.
T
- tamper detection
- A mechanism ensuring that data received in electronic form entirely corresponds with the original version of the same data.
- token
- A hardware or software device that is associated with a slot in a PKCS #11 module. It provides cryptographic services and optionally stores certificates and keys.
- token key service (TKS)
- A subsystem in the token management system which derives specific, separate keys for every smart card based on the smart card APDUs and other shared information, like the token CUID.
- token management system (TMS)
- The interrelated subsystems — CA, TKS, TPS, and, optionally, the KRA — which are used to manage certificates on smart cards (tokens).
- token processing system (TPS)
- A subsystem which interacts directly the Enterprise Security Client and smart cards to manage the keys and certificates on those smart cards.
- tree hierarchy
- The hierarchical structure of an LDAP directory.
- trust
- Confident reliance on a person or other entity. In a public-key infrastructure (PKI), trust refers to the relationship between the user of a certificate and the certificate authority (CA) that issued the certificate. If a CA is trusted, then valid certificates issued by that CA can be trusted.
V
- virtual private network (VPN)
- A way of connecting geographically distant divisions of an enterprise. The VPN allows the divisions to communicate over an encrypted channel, allowing authenticated, confidential transactions that would normally be restricted to a private network.
Index
A
- accelerators, Tokens for Storing Certificate System Subsystem Keys and Certificates
- administrators
- tools provided
- Certificate System console, The Java Administrative Console for CA, OCSP, KRA, and TKS Subsystems
- agent certificate, User Certificates
- agents
- authorizing key recovery, Recovering Keys
- port used for operations, Planning Ports
- algorithm
- cryptographic, Encryption and Decryption
- authentication
- certificate-based, Certificate-Based Authentication
- client and server, Authentication Confirms an Identity
- password-based, Password-Based Authentication
- See also client authentication, Certificate-Based Authentication
- See also server authentication, Certificate-Based Authentication
C
- CA
- certificate, Types of Certificates
- defined, A Certificate Identifies Someone or Something
- hierarchies and root, CA Hierarchies
- trusted, How CA Certificates Establish Trust
- CA chaining, Linked CA
- CA decisions for deployment
- CA renewal, Renewing or Reissuing CA Signing Certificates
- distinguished name, Planning the CA Distinguished Name
- root versus subordinate, Defining the Certificate Authority Hierarchy
- signing certificate, Setting the CA Signing Certificate Validity Period
- signing key, Choosing the Signing Key Type and Length
- CA hierarchy, Subordination to a Certificate System CA
- root CA, Subordination to a Certificate System CA
- subordinate CA, Subordination to a Certificate System CA
- CA scalability, CA Cloning
- CA signing certificate, CA Signing Certificates, Setting the CA Signing Certificate Validity Period
- Certificate Manager
- as root CA, Subordination to a Certificate System CA
- as subordinate CA, Subordination to a Certificate System CA
- CA hierarchy, Subordination to a Certificate System CA
- CA signing certificate, CA Signing Certificates
- chaining to third-party CAs, Linked CA
- cloning, CA Cloning
- KRA and, Planning for Lost Keys: Key Archival and Recovery
- Certificate System console
- certificate-based authentication
- defined, Authentication Confirms an Identity
- certificates
- authentication using, Certificate-Based Authentication
- CA certificate, Types of Certificates
- chains, Certificate Chains
- contents of, Contents of a Certificate
- issuing of, Certificate Issuance
- renewing, Certificate Expiration and Renewal
- revoking, Certificate Expiration and Renewal
- S/MIME, Types of Certificates
- self-signed, CA Hierarchies
- verifying a certificate chain, Verifying a Certificate Chain
- ciphers
- defined, Encryption and Decryption
- client authentication
- SSL/TLS client certificates defined, Types of Certificates
- cloning, CA Cloning
- Configuration tab, The Java Administrative Console for CA, OCSP, KRA, and TKS Subsystems
- CRL signing certificate, Other Signing Certificates
- CRLs
- Certificate Manager support for, CRLs
- publishing to online validation authority, OCSP Services
D
- deployment planning
- CA decisions
- distinguished name, Planning the CA Distinguished Name
- root versus subordinate, Defining the Certificate Authority Hierarchy
- signing certificate, Setting the CA Signing Certificate Validity Period
- signing key, Choosing the Signing Key Type and Length
- token management, Smart Card Token Management with Certificate System
- digital signatures
- defined, Digital Signatures
- distinguished name (DN)
E
- email, signed and encrypted, Signed and Encrypted Email
- encryption
- defined, Encryption and Decryption
- public-key, Public-Key Encryption
- symmetric-key, Symmetric-Key Encryption
- Enterprise Security Client, Enterprise Security Client
- extensions
- structure of, Structure of Certificate Extensions
- external tokens
H
- hardware accelerators, Tokens for Storing Certificate System Subsystem Keys and Certificates
- hardware tokens, Tokens for Storing Certificate System Subsystem Keys and Certificates
- See external tokens, Tokens for Storing Certificate System Subsystem Keys and Certificates
- how to search for keys, Archiving Keys
I
- installation, Installing and Configuring Certificate System
- planning, A Checklist for Planning the PKI
- internal tokens, Tokens for Storing Certificate System Subsystem Keys and Certificates
K
- key archival, Archiving Keys
- how it works, Archiving Keys
- how keys are stored, Archiving Keys
- PKI setup required, Archiving, Recovering, and Rotating Keys
- reasons to archive, Archiving Keys
- where keys are stored, Archiving Keys
- key length, Choosing the Signing Key Type and Length
- key recovery, Recovering Keys
- keys
- defined, Encryption and Decryption
- management and recovery, Key Management
- KRA
- Certificate Manager and, Planning for Lost Keys: Key Archival and Recovery
L
- linked CA, Linked CA
O
- OCSP responder, OCSP Services
- OCSP server, OCSP Services
- OCSP signing certificate, Other Signing Certificates
P
- password
- using for authentication, Authentication Confirms an Identity
- password-based authentication, defined, Password-Based Authentication
- PKCS #11 support, Tokens for Storing Certificate System Subsystem Keys and Certificates
- planning installation, A Checklist for Planning the PKI
- ports
- for agent operations, Planning Ports
- how to choose numbers, Planning Ports
- private key, defined, Public-Key Encryption
- public key
- defined, Public-Key Encryption
- management, Key Management
- publishing
- of CRLs
- to online validation authority, OCSP Services
R
- recovering users' private keys, Recovering Keys
- root CA, Subordination to a Certificate System CA
- root versus subordinate CA, Defining the Certificate Authority Hierarchy
- RSA, Choosing the Signing Key Type and Length
S
- S/MIME certificate, Types of Certificates
- self-signed certificate, CA Hierarchies
- signing certificate
- signing key, for CA, Choosing the Signing Key Type and Length
- SSL/TLS
- client certificates, Types of Certificates
- SSL/TLS client certificate, SSL/TLS Server and Client Certificates
- SSL/TLS server certificate, SSL/TLS Server and Client Certificates
- Status tab, The Java Administrative Console for CA, OCSP, KRA, and TKS Subsystems
- subordinate CA, Subordination to a Certificate System CA
T
- Token Key Service, Smart Card Token Management with Certificate System
- Token Processing System and, Smart Card Token Management with Certificate System
- Token Management System
- Enterprise Security Client, Enterprise Security Client
- Token Processing System, Smart Card Token Management with Certificate System
- scalability, Using Smart Cards
- Token Key Service and, Smart Card Token Management with Certificate System
- tokens
- defined, Tokens for Storing Certificate System Subsystem Keys and Certificates
- external, Tokens for Storing Certificate System Subsystem Keys and Certificates
- internal, Tokens for Storing Certificate System Subsystem Keys and Certificates
- viewing which tokens are installed, Viewing Tokens
- topology decisions, for deployment, Smart Card Token Management with Certificate System
- transport certificate
- when used, Archiving Keys
- trusted CA, defined, How CA Certificates Establish Trust
U
- user certificate, User Certificates
Appendix A. Revision History
| Revision History | |||
|---|---|---|---|
| Revision 9.4-0 | Thu Oct 25 2018 | ||
| |||
| Revision 9.3-2 | Thu May 03 2018 | ||
| |||
| Revision 9.3-1 | Tue Apr 10 2018 | ||
| |||
| Revision 9.2-2 | Tue Dec 12 2017 | ||
| |||
| Revision 9.2-1 | Tue Aug 01 2017 | ||
| |||
| Revision 9.1-2 | Thu Mar 09 2017 | ||
| |||
| Revision 9.1-0 | Tue Nov 01 2016 | ||
| |||
| Revision 9.0-3 | Tue Aug 02 2016 | ||
| |||
| Revision 9.0-2 | Thu Oct 22 2015 | ||
| |||
| Revision 9.0-1 | Fri Sep 04 2015 | ||
| |||
| Revision 9.0-0 | Fri Aug 28 2015 | ||
| |||
