preparing for a PKI infrastructure
Edition 8.1.1
Legal Notice
Abstract
- About This Guide
- I. Planning How to Deploy Red Hat Certificate System
- 1. Introduction to Public-Key Cryptography
- 2. Introduction to Red Hat Certificate System
- 3. Supported Standards and Protocols
- 4. Planning the Certificate System
- 4.1. Deciding on the Required Subsystems
- 4.2. Defining the Certificate Authority Hierarchy
- 4.3. Planning Security Domains
- 4.4. Determining the Requirements for Subsystem Certificates
- 4.4.1. Determining Which Certificates to Install
- 4.4.2. Planning the CA Distinguished Name
- 4.4.3. Setting the CA Signing Certificate Validity Period
- 4.4.4. Choosing the Signing Key Type and Length
- 4.4.5. Using Certificate Extensions
- 4.4.6. Using and Customizing Certificate Profiles
- 4.4.7. Planning Authentication Methods
- 4.4.8. Publishing Certificates and CRLs
- 4.4.9. Renewing or Reissuing CA Signing Certificates
- 4.5. Planning for Network and Physical Security
- 4.6. Tokens for Storing Certificate System Subsystem Keys and Certificates
- 4.7. Implementing a Common Criteria Environment
- 4.8. A Checklist for Planning the PKI
- II. Installing Red Hat Certificate System
- 5. Prerequisites and Preparation for Installation
- 5.1. Supported Platforms, Hardware, and Programs
- 5.2. Packages Installed on Red Hat Enterprise Linux
- 5.3. Before Installation: Setting up the Operating Environment
- 5.3.1. Installing the Required Java Development Kit (JDK)
- 5.3.2. Installing Apache (for the TPS)
- 5.3.3. Installing Red Hat Directory Server
- 5.3.4. Installing Additional Operating System Packages
- 5.3.5. Verifying Firewall Configuration and iptables
- 5.3.6. Enabling SELinux
- 5.3.7. Setting up Operating System Users and Groups
- 5.3.8. Using a Java Security Manager
- 6. Installing and Configuring Certificate System
- 7. Installing Red Hat Certificate System with SSL Connections to Red Hat Directory Server
- 8. Using Hardware Security Modules for Subsystem Security Databases
- 9. Installing an Instance with ECC Enabled
- 10. Cloning Subsystems
- 10.1. About Cloning
- 10.2. Exporting Keys from a Software Database
- 10.3. Cloning a CA
- 10.4. Updating CA-DRM Connector Information After Cloning
- 10.5. Cloning OCSP Subsystems
- 10.6. Cloning DRM Subsystems
- 10.7. Cloning TKS Subsystems
- 10.8. Converting Masters and Clones
- 10.9. Cloning a CA That Has Been Re-Keyed
- 10.10. Updating CA Clones
- 11. Silently Configuring Instances
- 12. Additional Installation Options
- 13. Updating and Removing Subsystem Packages
- 14. Troubleshooting Installation, Cloning, and Upgrade
- III. After Installing Red Hat Certificate System
- 15. After Configuration: Checklist of Configuration Areas for Deploying Certificate System
- 16. Basic Information for Using Certificate System
- A. Supported Algorithms and Curves
- B. Defining the Common Criteria Environment
- B.1. Common Criteria: Setup and Operations
- B.1.1. PKI Overview
- B.1.2. Security Objectives
- B.1.3. Security Requirements
- B.1.4. Target of Evaluation Security Environment Assumptions
- B.1.5. IT Environment Assumptions
- B.1.6. Red Hat Certificate System 8.1 Privileged Users and Groups (Roles)
- B.1.7. Understanding Setup of Common Criteria Evaluated Red Hat Certificate System 8.1
- B.1.8. Common Criteria Deployment Scenarios
- B.1.9. Understanding Subsystem Setup
- B.1.10. Reporting Security Flaws
- B.1.11. Relevant Links
- B.2. Example Common Criteria Installations
- B.3. Common Criteria: Security Environment Assumptions
- B.4. Common Criteria: Security Objectives
- B.5. Common Criteria: Security Requirements
- Glossary
- Index
- Intranet, extranet, and Internet security and the role of digital certificates in a secure enterprise, including the following topics:
- Encryption and decryption
- Public keys, private keys, and symmetric keys
- Significance of key lengths
- Digital signatures
- Digital certificates, including different types of digital certificates
- The role of digital certificates in a public-key infrastructure (PKI)
- Certificate hierarchies
- LDAP and Red Hat Directory Server
- Public-key cryptography and the Secure Sockets Layer (SSL) protocol, including the following:
- SSL cipher suites
- The purpose of and major steps in the SSL handshake
pki-subsystem_type, such as pki-ca.
Table 1. Example Port Assignments for Certificate System 8.1
| Subsystem | Standard | End-Entity SSL | Agent SSL | Admin SSL | Tomcat |
|---|---|---|---|---|---|
| CA | 9180 | 9444 | 9443 | 9445 | 9701 |
| RA | 12888 | 12889 | 12889 | ||
| OCSP | 11180 | 11444 | 11443 | 11445 | 11701 |
| DRM | 10180 | 10444 | 10443 | 10445 | 10701 |
| TKS | 13180 | 13444 | 13443 | 13445 | 13701 |
| TPS | 7888 | 7889 | 7889 |
/usr/bin directory. These tools can be run from any location without specifying the tool location.
| Formatting Style | Purpose |
|---|---|
Monospace font
| Monospace is used for commands, package names, files and directory paths, and any text displayed in a prompt. |
Monospace with a background | This type of formatting is used for anything entered or returned in a command prompt. |
| Italicized text | Any text which is italicized is a variable, such as instance_name or hostname. Occasionally, this is also used to emphasize a new term or other phrase. |
| Bolded text | Most phrases which are in bold are application names, such as Cygwin, or are fields or options in a user interface, such as a User Name Here: field or button. |
NOTE
IMPORTANT
WARNING

- Certificate System Deployment Guide describes basic PKI concepts, gives an overview of the planning process for setting up Certificate System, and covers the installation process for all Certificate System subsystems.This manual is intended for Certificate System administrators.
- Certificate System Administrator's Guide explains all administrative functions for the Certificate System. Administrators maintain the subsystems themselves, so this manual details backend configuration for certificate profiles, publishing, and issuing certificates and CRLs. It also covers managing subsystem settings like port numbers, users, and subsystem certificates.This manual is intended for Certificate System administrators.
- Certificate System Agent's Guide describes how agents — users responsible for processing certificate requests and managing other aspects of certificate management — can use the Certificate System subsystems web services pages to process certificate requests, key recovery, OCSP requests and CRLs, and other functions.This manual is intended for Certificate System agents.
- Managing Smart Cards with the Enterprise Security Client explains how to install, configure, and use the Enterprise Security Client, the user client application for managing smart cards, user certificates, and user keys.This manual is intended for Certificate System administrators, agents, privileged users (such as security officers), and regular end users.
- Using End User Services is a quick overview of the end-user services in Certificate System, a simple way for users to learn how to access Certificate System services.This manual is intended for regular end users.
- Certificate System Command-Line Tools Guide covers the command-line scripts supplied with Red Hat Certificate System.This manual is intended for Certificate System administrators.
- Certificate System Migration Guide covers version-specific procedures for migrating from older versions of Certificate System to Red Hat Certificate System 8.1.This manual is intended for Certificate System administrators.
- Release Notes contains important information on new features, fixed bugs, known issues and workarounds, and other important deployment information for Red Hat Certificate System 8.1.
- Select the Red Hat Certificate System product.
- Set the component to
Doc - deployment-guide. - Set the version number to 8.1.
- For errors, give the page number (for the PDF) or URL (for the HTML), and give a succinct description of the problem, such as incorrect procedure or typo.For enhancements, put in what information needs to be added and why.
- Give a clear title for the bug. For example,
"Incorrect command example for setup script options"is better than"Bad example".
| Revision History | ||||||
|---|---|---|---|---|---|---|
| Revision 8.1.1-5 | December 20, 2013 | |||||
| ||||||
| Revision 8.1-25 | July 17, 2012 | |||||
| ||||||
| Revision 8.1-8 | February 1, 2012 | |||||
| ||||||
| Revision 8.1-7 | January 24, 2012 | |||||
| ||||||
| Revision 8.1-6 | January 6, 2012 | |||||
| ||||||
| Revision 8.1-5 | September 28, 2011 | |||||
| ||||||
| Revision 8.1-4 | July 25, 2011 | |||||
| ||||||
| Revision 8.1-3 | June 27, 2011 | |||||
| ||||||
| Revision 8.1-2 | May 26, 2011 | |||||
| ||||||
| Revision 8.1-1 | April 21, 2011 | |||||
| ||||||
| Revision 8.1-0 | March 21, 2011 | |||||
| ||||||
Table of Contents
- 1. Introduction to Public-Key Cryptography
- 2. Introduction to Red Hat Certificate System
- 3. Supported Standards and Protocols
- 4. Planning the Certificate System
- 4.1. Deciding on the Required Subsystems
- 4.2. Defining the Certificate Authority Hierarchy
- 4.3. Planning Security Domains
- 4.4. Determining the Requirements for Subsystem Certificates
- 4.4.1. Determining Which Certificates to Install
- 4.4.2. Planning the CA Distinguished Name
- 4.4.3. Setting the CA Signing Certificate Validity Period
- 4.4.4. Choosing the Signing Key Type and Length
- 4.4.5. Using Certificate Extensions
- 4.4.6. Using and Customizing Certificate Profiles
- 4.4.7. Planning Authentication Methods
- 4.4.8. Publishing Certificates and CRLs
- 4.4.9. Renewing or Reissuing CA Signing Certificates
- 4.5. Planning for Network and Physical Security
- 4.6. Tokens for Storing Certificate System Subsystem Keys and Certificates
- 4.7. Implementing a Common Criteria Environment
- 4.8. A Checklist for Planning the PKI
- 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 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 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 allows the recipient of information to determine its origin by confirming the sender's identity.
- Nonrepudiation prevents the sender of information from claiming at a later date that the information was never sent.
- 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.
- Certificate-based authentication . Client authentication based on certificates is part of the SSL protocol. The client digitally signs a randomly generated piece of data and sends both the certificate and the signed data across the network. The server validates the signature and confirms the validity of the certificate.
- The user has already trusted the server, either without authentication or on the basis of server authentication over SSL.
- The user has requested a resource controlled by the server.
- The server requires client authentication before permitting access to the requested resource.
- When the server requests authentication from the client, the client displays a dialog box requesting the username and password for that server.
- The client sends the name and password across the network, either in plain text or over an encrypted SSL 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.
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-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-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 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.
https://server.example.com:9444/ca/ee/ca. For more detailed information about the different certificates that can be created, see the Certificate System Agent's Guide.
Table 1.1. Common Certificates
| Certificate Type | Use | Example |
|---|---|---|
| Client SSL certificates | Used for client authentication to servers over SSL. 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 client certificates are used for client authentication. Client SSL certificates can also be used as part of single sign-on. |
A bank gives a customer an SSL 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 client certificate that allows the company's servers to identify that employee and authorize access to the company's servers.
|
| Server SSL certificates | Used for server authentication to clients over SSL. Server authentication may be used without client authentication. Server authentication is required for an encrypted SSL session. For more information, see Section 1.3.3.1.1, “SSL”. | Internet sites that engage in electronic commerce usually support certificate-based server authentication to establish an encrypted SSL session and to assure customers that they are dealing with the web site identified with the company. The encrypted SSL 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 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 certificate; see Section 1.3.3.1.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 certificates solely to authenticate employee identities, thus permitting signed email and SSL 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.5, “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. |
NOTE
crossCertificatePair entry.
- 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.
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
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 username, cn is the user's common name, o is the organization or company name, and c is the country.
- The data 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, 2012.
- The DN of the certificate subject, which is also called the subject name; for example, in an SSL 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 client certificate, an SSL server certificate, or a certificate for signing email. Certificate extensions can also be used for other purposes.
- The signature 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:
SSL 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-----
- 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.
- 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 connection.
- The certificate signature is verified using the public key in the issuer's certificate.
- 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.
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”.
- A certificate authority called a 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 called a data recovery manager (DRM). 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 DRM 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.
- An online certificate status responder (OCSP). 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 eases the load off of the issuing CA.
- A registration authority (RA). An RA accepts certificate requests and verifies, independently, whether that request should be approved. It then forwards approved requests to the CA to issue the certificate. Like the OCSP, this is a function that can be performed by the CA, but using a separate subsystem reduces the load on the 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, or process, 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. The Enterprise Security Client contacts the TPS when there is a token operation, and the TPS interacts with the CA, DRM, 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 DRM 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, registration authorities, and DRM instances as well.
NOTE
- 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 DRM subsystem is set up with this CA, the end entity's key is requested, and an archival request is sent to the DRM. 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.
- 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
- 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.
- The CA that issued the certificate that's 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.
- 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
- The OCSP built into the Certificate Manager
- The Online Certificate Status Manager subsystem
NOTE
- Clients that can generate dual keys and that support the key archival option (using the CRMF/CMMF protocol).
- An installed and configured DRM.
- HTML forms with which end entities can request dual certificates (based on dual keys) and key recovery agents can request key recovery.
- 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.
- 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 DRM's transport certificate embedded in the enrollment form.
- After approving the certificate request and issuing the certificate, the Certificate Manager sends it to the DRM for storage, along with the public key. The Certificate Manager waits for verification from the DRM that the private key has been received and stored and that it corresponds to the public encryption key.
- The DRM decrypts it with the private key. After confirming that the private encryption key corresponds to the public encryption key, the DRM 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.
- 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 DRM 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.
NOTE
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. - Asynchronous recovery means that each step of the recovery process — the initial request and each subsequent approval or rejection — is stored in the DRM'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 DRM is shut down. Agents search for the key to recover, without using a reference number.
WARNING
- The Token Processing System (TPS) interacts with smart cards to help them generate and store keys and certificates for a specific entity, such as a user or device. Smart card operations go through the TPS and are forwarded to the appropriate subsystem for action, such as the Certificate Authority to generate certificates or the Data Recovery Manager to archive and recover keys.
- The Token Key Service (TKS) generates, or derives, symmetric keys used for communication between the TPS and smart card. Each set of keys generated by the TKS is unique because they are based on the card's unique ID. The keys are formatted on the smart card and are used to encrypt communications, or provide authentication, between the smart card and TPS.
- The Certificate Authority (CA) creates and revokes user certificates stored on the smart card.
- Optionally, the Data Recovery Manager (DRM) archives and recovers keys for the smart card.
- An auth key which is used for encryption and authentication; a session key dervied from the auth key each time a secure channel is opened.
- A MAC key which is used for message authentication; like the auth keys, a session key is derived from the MAC key each time a secure channel is opened.
- A key encryption key (KEK) which is to encrypt the session keys.
- Helps establish a secure channel (signed and encrypted) between the token and TPS.
- Provides proof of presence for the security token during enrollment.
- Supports key changeover when the master key changes on the TKS. Tokens with older keys get new token keys.
- Helps generate a symmetric session key for the DRM to wrap (encrypt) the entity's private key for (optional) server-side key generation, where the entity's encryption keys are generated on the DRM
NOTE
http://server.example.com:7889/tus/tus?op=operation?param=parameter
- Formatting smart cards
- Resetting the PIN on smart card tokens
- Upgrading the applet for smart card tokens
- Enrolling smart cards through the Enterprise Security Client
- Performing LDAP authentication
- Managing the token database
- Logging token events
do_token operation, but what that status is changed to is set in the question= parameter (where 1 through 6 set the new token status) and the token being changed is identified in the tid= parameter. To change a token with the ID of 1234 to be temporarily lost (3) posts the following URL:
http://server.example.com:7889/tus/tus?op=do_token?tid=1234?question=3
NOTE
- The steps to format and enroll the token (sort of like the forms used for certificate profiles)
- The configuration of the final enrolled token
Example 2.1. Token Profile for DevKey
op.format.mapping.0.filter.tokenCUID.start=1000000000000000 op.format.mapping.0.filter.tokenCUID.end=1000000000000100 op.format.mapping.0.filter.tokenType=DevKey op.format.mapping.0.target.tokenType=DevKey # Profile for DevKey ########################################################################## op.format.devKey.update.applet.emptyToken.enable=true op.format.devKey.update.applet.requiredVersion=1.3.427BDDB8 op.format.devKey.update.applet.directory=/usr/share/pki/tps/applets op.format.devKey.update.applet.encryption=true op.format.devKey.update.symmetricKeys.enable=false op.format.devKey.update.symmetricKeys.requiredVersion=1 op.format.devKey.revokeCert=true op.format.devKey.ca.conn=ca1 op.format.devKey.loginRequest.enable=true op.format.devKey.tks.conn=tks1 op.format.devKey.auth.id=ldap-dev op.format.devKey.auth.enable=true ########################################################################## # LDAP Connection settings for devKey ########################################################################## auth.instance.0.type=LDAP_Authentication auth.instance.0.libraryName=/usr/lib/libldapauth.so auth.instance.0.libraryFactory=GetAuthentication auth.instance.0.authId=ldap-dev auth.instance.0.hostport=ldap-dev.example.com:1111 auth.instance.0.SSLOn=false auth.instance.0.retries=1 auth.instance.0.retryConnect=3 auth.instance.0.baseDN=o=dev auth.instance.0.ui.title.en=LDAP Authentication auth.instance.0.ui.description.en=This authenticates user against the DEV LDAP directory. auth.instance.0.ui.id.UID.name.en=LDAP User ID auth.instance.0.ui.id.PASSWORD.name.en=LDAP Password auth.instance.0.ui.id.UID.description.en=DEV LDAP User ID auth.instance.0.ui.id.PASSWORD.description.en=DEV LDAP Password
Table 2.1. Default Token Types
| Token Type | Description |
|---|---|
| cleanToken | For operations for any blank token, without any other applied token types. |
| soKey | For operations for generating keys for security officer stations. |
| soCleanSOToken | For operations for blank tokens for security officer stations. |
| soKeyTemporary | For operations for temporary security officer tokens. |
| soCleanUserToken | For operations for blank user tokens for security officers. |
| soUserKey | For operations for security officer user tokens. |
| tokenKey | For operations for generating keys for uses with servers or devices. |
| userKey | For operations for regular user tokens. |
| userKeyTemporary | For operations for temporary user tokens. |
- 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.
- 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.
pkicreate is run, new SELinux policies are automatically configured for the instance. All SELinux policies are updated every time a subsystem is added with pkicreate or removed with pkiremove.
pki_ca_t SELinux domain.
pki_ca_t) are limited to write access for files with the CA context (pki_ca_var_log_t) and to access ports that match the CA type (pki_ca_port). When each Certificate System process is started, it initially runs in an unconfined domain (unconfined_t) and then transitions into the appropriate subsystem-specific domain.
pkiconsole utility. It can access any subsystem because the command requires the hostname, the subsystem's administrative SSL port, and the specific subsystem type.
pkiconsole https://server.example.com:admin_port/subsystem_type- 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)
NOTE
CS.cfg file.
- 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.
- DRM 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.
- The RA agent services allows agents to list and approve certificate requests and to check the status of requests and certificates processed through the RA.
- Supports JavaCard 2.1 or higher cards and Global Platform 2.01-compliant smart cards like Safenet's 330J smart card
- Supports Global Platform 2.01-compliant smart cards like Gemalto e-gate 32K and Gemalto TOP IM FIPS CY2 tokens, both the smart card and GemPCKey USB form factor key.
- 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.
NOTE
- 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.

- 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. This file can be modified using the modutil tool, and it should be modified when there are changes to the system like installing hardware accelerators to use for signing operations. For more information on modutil, see http://www.mozilla.org/projects/security/pki/nss/tools/.
NOTE
- AES and SHA Message Authentication. Advanced Encryption Standard (AES) ciphers have a fixed block size of 128-bits, and the keys can be either 128-bit or 256-bit. There are 3.4 x 1038 possible 128-bit keys and 1.1 x 1077 possible 256-bit keys. There are more possible keys than any other cipher, making AES the strongest cipher supported by SSL. These cipher suites are FIPS-compliant.
- Triple DES and SHA Message Authentication. Triple DES (Data Encryption Standard) is the second-strongest cipher supported by SSL, but it is not as fast as RC4. Triple DES uses a key three times as long as the key for standard DES. Because the key size is so large, there are approximately 3.7 * 1050 possible keys. This cipher suite is FIPS-compliant.
- RC4 and RC2 and MD5 Message Authentication. The RC4 and RC2 ciphers have 128-bit encryption, which permits approximately 3.4 * 1038 possible keys. This makes RC4 or RC2 keys very difficult to crack. RC4 ciphers are faster than RC2 ciphers.RC4 can use SHA message authentication as well as MD5 message authentication.
- DES and SHA Message Authentication. DES 56-bit encryption permits approximately 7.2 * 1016 possible keys. This cipher suite is no longer FIPS-compliant because it is too weak cryptographically.
Table 3.1. Comparison of RSA and ECC Cipher Strength
| Bits of Security[a] | RSA Key Length | ECC Key Length |
|---|---|---|
| 80 | 1024 | 160-223 |
| 112 | 2048 | 224-255 |
| 128 | 3072 | 256-383 |
| 192 | 7860 | 384-511 |
| 256 | 15360 | 512+ |
[a]
The information in this table is from the National Institute of Standards and Technology (NIST). For more information, see http://csrc.nist.gov/publications/nistpubs/800-57/SP800-57-Part1.pdf.
| ||
- An external PKCS#11 module must be loaded before any subsystems are installed so that they can be configured with ECC subsystem certificates.
- The CA profile pages can process ECC certificate requests, but they cannot generate ECC keys. Some of the profile forms, like manual user certificates, then cannot be used for ECC certificates. In those cases, a different or custom profile needs to be used, and certificate requests have to be generated using
certutil.
NOTE
- Communications between subsystems, including between the RA and CA and between the TPS, TKS, and CA and for joining security domains
- Token operations between the TPS and Enterprise Security Client
- Subsystem logging
- Access control instructions
- Operations performed with Certificate System tools, including the Subject Alt Name Extension tool, HttpClient, and the Bulk Issuance Tool
- Client communications, including both the
pkiconsoleand 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.n or n.n.n.n,m.m.m.m. For example, 128.21.39.40 or 128.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, 0:0:0:0:0:0:13.1.68.3,FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:255.255.255.0, and FF01::43,FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FF00:0000.
https://ipv6host.example.com:9445/ca/services pkiconsole https://ipv6host.example.com:9445/ca
[]). For example:
https://[00:00:00:00:123:456:789:00:]:9445/ca/services pkiconsole https://[00:00:00:00:123:456:789:00:]:9445/ca
Table 3.2. PKIX Standards Supported in Certificate System 8.1
| 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. For more information about certificate and CRL profiles, see http://www.ietf.org/rfc/rfc5280.txt. |
Table 3.3. 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 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. |
| Secure Sockets Layer (SSL) 2.0 and 3.0 and 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, or SELinux, is a set of security protocols enforcing mandatory access control on Linux system kernels. This 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 an RA or CA for router certificate enrollment. SCEP defines two modes of operation: RA mode and CA mode. Certificate System supports CA mode, 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 certificates will be generated with the UTF-8 strings correctly used in the subject names and other fields, and the UTF-8 strings are searchable and correctly display in the CA, OCSP, and DRM end user and agents services pages.
This UTF-8 support does not extended to internationalized domain names, like in email addresses.
|
| 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, |
- 4.1. Deciding on the Required Subsystems
- 4.2. Defining the Certificate Authority Hierarchy
- 4.3. Planning Security Domains
- 4.4. Determining the Requirements for Subsystem Certificates
- 4.4.1. Determining Which Certificates to Install
- 4.4.2. Planning the CA Distinguished Name
- 4.4.3. Setting the CA Signing Certificate Validity Period
- 4.4.4. Choosing the Signing Key Type and Length
- 4.4.5. Using Certificate Extensions
- 4.4.6. Using and Customizing Certificate Profiles
- 4.4.7. Planning Authentication Methods
- 4.4.8. Publishing Certificates and CRLs
- 4.4.9. Renewing or Reissuing CA Signing Certificates
- 4.5. Planning for Network and Physical Security
- 4.6. Tokens for Storing Certificate System Subsystem Keys and Certificates
- 4.7. Implementing a Common Criteria Environment
- 4.8. A Checklist for Planning the PKI
- 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?

NOTE

NOTE
TIP
pk12util or the PKCS12Export commands.
Example Corp Intranet PKI. All other subsystems — RA, DRM, 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,dc=server.example.com-pki-ca objectClass: top objectClass: pkiSecurityGroup cn: KRAList
pkiSubsystem object class to identify the entry type:
dn: cn=drm.example.com:10444,cn=KRAList,ou=Security Domain,dc=server.example.com-pki-ca objectClass: top objectClass: pkiSubsystem cn: drm.example.com:10444 host: server.example.com SecurePort: 10444 DomainManager: false Clone: false SubsystemName: Data Recovery Manager
- 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 DRM; the DRM 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.
Table 4.1. Initial Subsystem Certificates
| Subsystem | Certificates |
|---|---|
| Certificate Manager |
|
| RA |
|
| OCSP |
|
| DRM |
|
| 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, DRMs, 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 DRM, the DRM 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 server certificate for the master Certificate Manager, the clone CAs' certificate databases all need updated with the new SSL server certificate.
- If the Certificate Manager is configured to publish certificates and CRLs to an LDAP directory and uses the SSL server certificate for SSL client authentication, then the new SSL 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 server certificates can be issued for a subsystem instance, but it really only needs one SSL certificate. This certificate can be renewed or replaced as many times as necessary.
cn=demoCA, o=Example Corporation, ou=Engineering, c=US
- MD2withRSA
- MD5withRSA
- SHA1withRSA
- SHA256withRSA
- SHA512withRSA
- SHA1withEC
NOTE
- 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.
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
- 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.
- 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 username 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.
- 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, the directory service has to be configured in SSL 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.
- 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.
- 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.
- A standard port
- An SSL port for end users services
- An SSL port for agent services
- An SSL port for the administrative console or admin services
- A web server port (Tomcat for CA, DRM, OCSP, and TKS subsystems, Apache for the TPS and RA subsystems)
https://server.example.com:9444/ca/ee/ca
pkiconsole https://server.example.com:9445/ca
server.xml file for the CA, OCSP, DRM, and TKS and in the httpd.conf and nss.conf files for the RA and TPS. If a port is not used, it can be disabled in that file. For example:
<Service name="Catalina">
<!--Connector port="9180" ... /--> unused standard port
<Connector port="9443" ... />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.
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/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 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.
- FIPS mode for any hardware security modules used to store key and certification information
- Both secure client connections and secure server connections with the internal LDAP database (meaning all connections to the Red Hat Directory Server are over SSL)
- SSL session timeouts for all secure connections
- Signed audit logging
- Established backup and restore procedures
- CRL checking (OCSP validation) for clients
sudopermissions to run Certificate System scripts and processes- Defined operating systems users and groups for Certificate System subsystems
- SELinux in enforcing mode
- Removing unused CA interfaces from the
web.xmlfile - Self-test diagnostics, which are enabled by default
- 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 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 local offices need to process their own certificate requests? Will there be a large number of certificate requests?
- 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?
Table of Contents
- 5. Prerequisites and Preparation for Installation
- 5.1. Supported Platforms, Hardware, and Programs
- 5.2. Packages Installed on Red Hat Enterprise Linux
- 5.3. Before Installation: Setting up the Operating Environment
- 5.3.1. Installing the Required Java Development Kit (JDK)
- 5.3.2. Installing Apache (for the TPS)
- 5.3.3. Installing Red Hat Directory Server
- 5.3.4. Installing Additional Operating System Packages
- 5.3.5. Verifying Firewall Configuration and iptables
- 5.3.6. Enabling SELinux
- 5.3.7. Setting up Operating System Users and Groups
- 5.3.8. Using a Java Security Manager
- 6. Installing and Configuring Certificate System
- 7. Installing Red Hat Certificate System with SSL Connections to Red Hat Directory Server
- 8. Using Hardware Security Modules for Subsystem Security Databases
- 9. Installing an Instance with ECC Enabled
- 10. Cloning Subsystems
- 10.1. About Cloning
- 10.2. Exporting Keys from a Software Database
- 10.3. Cloning a CA
- 10.4. Updating CA-DRM Connector Information After Cloning
- 10.5. Cloning OCSP Subsystems
- 10.6. Cloning DRM Subsystems
- 10.7. Cloning TKS Subsystems
- 10.8. Converting Masters and Clones
- 10.9. Cloning a CA That Has Been Re-Keyed
- 10.10. Updating CA Clones
- 11. Silently Configuring Instances
- 12. Additional Installation Options
- 13. Updating and Removing Subsystem Packages
- 14. Troubleshooting Installation, Cloning, and Upgrade
- 5.1. Supported Platforms, Hardware, and Programs
- 5.2. Packages Installed on Red Hat Enterprise Linux
- 5.3. Before Installation: Setting up the Operating Environment
- 5.3.1. Installing the Required Java Development Kit (JDK)
- 5.3.2. Installing Apache (for the TPS)
- 5.3.3. Installing Red Hat Directory Server
- 5.3.4. Installing Additional Operating System Packages
- 5.3.5. Verifying Firewall Configuration and iptables
- 5.3.6. Enabling SELinux
- 5.3.7. Setting up Operating System Users and Groups
- 5.3.8. Using a Java Security Manager
- Red Hat Enterprise Linux 5.6 and later (x86, 32-bit)
- Red Hat Enterprise Linux 5.6 and later (x86_64, 64-bit)
- Red Hat Enterprise Linux 5.6 and later (x86, 32-bit)
- Red Hat Enterprise Linux 5.6 and later (x86_64, 64-bit)
- Microsoft Windows Vista 32-bit
- Microsoft Windows Vista 64-bit
- Microsoft Windows XP 32-bit
- Microsoft Windows XP 64-bit
- Apple Mac OS X 10.5.x (Leopard)
NOTE
Table 5.1. Supported Web Browsers by Platform
| Platform | Agent Services | End User Pages | ||
|---|---|---|---|---|
| Red Hat Enterprise Linux | Firefox 10 and later | Firefox 10 and later | ||
| Windows Vista | Firefox 10 and later |
| ||
| Windows XP | Firefox 10 and later |
| ||
| Mac OS 10.5.x | Agent services are not supported for Mac | Firefox 10 and later |
- Gemalto TOP IM FIPS CY2 64K token, both as a smart card and GemPCKey USB form factor key
- Gemalto Cyberflex e-gate 32K token
- Safenet 330J Java smart card
| HSM | Firmware | Appliance Software | Client Software |
|---|---|---|---|
| Safenet Chrysalis-ITS LunaSA | 4.5.2 | 3.2.4 | 3.2.4 |
| nCipher netHSM 2000 | 2.33.60 | 11.10 | |
| nCipher sShield |
- 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
Table 5.2. Common Criteria Environment
| Requirement Area | Certified Version |
|---|---|
| Subsystems |
IMPORTANT
The RA subsystem is not Common Criteria-certified and cannot be used in a Common Criteria environment.
|
| Operating System |
|
| JDK/JRE | OpenJDK Runtime Environment 1.6.0.0 |
| Internal Database |
|
| Web Server |
|
| Hardware Security Modules or Tokens | Any properly-certified HSM, running in FIPS 140 Level 3 mode |
| Web Browser[a] | Firefox 10 and later |
[a]
To access the configuration wizard and agent and administrative interfaces.
| |
| RPMs for Certificate System Subsystems and Components | ||
|---|---|---|
| osutil | pki-ocsp | redhat-pki-ca-ui |
| pki-ca | pki-ra | redhat-pki-common-ui |
| pki-common | pki-selinux | redhat-pki-console-ui |
| pki-common-javadoc | pki-setup | redhat-pki-kra-ui |
| pki-console | pki-silent | redhat-pki-ocsp-ui |
| pki-java-tools | pki-tks | redhat-pki-ra-ui |
| pki-java-tools-javadoc | pki-tps | redhat-pki-tks-ui |
| pki-kra | pki-util | redhat-pki-tps-ui |
| pki-migrate | pki-util-javadoc | symkey |
| pki-native-tools |
| RPMs for Tomcat Web Services | ||
|---|---|---|
| ant | jakarta-commons-discovery | jakarta-oro |
| avalon-framework | jakarta-commons-el | regexp |
| avalon-logkit | jakarta-commons-fileupload | tomcat5 |
| axis | jakarta-commons-httpclient | tomcat5-common |
| bcel | jakarta-commons-launcher | tomcat5-jasper |
| classpathx-jaf | jakarta-commons-logging | tomcat5-server |
| classpathx-mail | jakarta-commons-modeler | velocity |
| eclipse-ecj | jakarta-commons-pool | werken.xpath |
| geronimo-specs | jdom | wsdl4j |
| xalan-j2 | ||
| geronimo-specs-compat | jakarta-commons-beanutils | xerces-j2 |
| jakarta-commons-collections | ldapjdk | xml-commons |
| jakarta-commons-daemon | log4j | xml-commons-apis |
| jakarta-commons-dbcp | mx4j | xml-commons-resolver |
| jakarta-commons-digester |
| RPMs for Apache Web Services | ||
|---|---|---|
| httpd | pcre-devel | perl-XML-SAX |
| mod_nss | perl-Parse-RecDescent | perl-XML-Simple |
| mod_perl | perl-XML-NamespaceSupport | tcl |
| mod_revocator | perl-XML-Parser | tcl-devel |
| RPMs for LDAP Support | ||
|---|---|---|
| cyrus-sasl | mozldap-devel | mozldap-tools |
| RPMs for SQL Lite Support for the RA | ||
|---|---|---|
| perl-DBD-SQLite | perl-DBI | sqlite-devel |
| RPMs for NSS and NSPR | |
|---|---|
| jss | nspr |
| jss-javadoc | nss |
| nss-tools | svrcore |
- SELinux should be enabled.
- A system user must be created. The Certificate System instance will run as this user.
- The system should have a Java Security Manager running to manage the Java-based subsystems.
- Any external hardware tokens that will be used to store subsystem certificates and keys must be installed, configured, and running before the subsystems are created.
- Check for any Fedora EPEL repos in
/etc/yum.repos.d/directory; these are usually namedepel.repoorepel-testing.repo. Either remove these repo files or disable the repos (setting the enabled line to zero,enabled=0). Disabling the EPEL repos prevents any EPEL packages from overriding the official Red Hat Enterprise Linux packages.
yum or by downloading the packages directly from http://openjdk.java.net/install/. For example:
yum install java-1.6.0-openjdk
/usr/sbin/alternatives as root to insure that the proper JDK is available:
/usr/sbin/alternatives --config java There are 3 programs which provide 'java'. Selection Command ----------------------------------------------- 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java + 2 /usr/lib/jvm/jre-1.6.0-openjdk/bin/java * 3 /usr/lib/jvm/jre-1.6.0-sun.x86_64/bin/java
yum info httpd Installed Packages Name : httpd Arch : x86_64 Version: 2.2.3 Release: 22.el5_3.2 Size : 2.9 M Repo : installed ...
yum install httpd
- Either Red Hat Directory Server 8.2 or 9.0 can be used.
- The Directory Server instance can be installed on the local system or on a remote system.
- Directory Server 8.2 instances can be installed on Red Hat Enterprise Linux 5 32-bit, Red Hat Enterprise Linux 5 64-bit, or Solaris 9 Sparc 64-bit.Directory Server 9.0 instances can be installed on Red Hat Enterprise Linux 6 32-bit or 64-bit systems.The Directory Server can be installed on any supported platform for its version, regardless of what platform the Certificate System is installed on.
[root@server ~]# yum info redhat-ds Installed Packages Name : redhat-ds Arch : x86_64 Version : 8.2.0 Release : 0.14el5dsrv Size : 136M Repo : installed ...
[root@server ~]# yum install redhat-ds [root@server ~]# setup-ds-admin.pl
IMPORTANT
semanage to relabel the LDAP/LDAPS ports and allow the subsystem to access the Directory Server.
IMPORTANT
[jsmith@server ~]$ ldapmodify -D "cn=Directory Manager" -w secret -h ds-server.example.com -p 389 -x dn: cn=config changetype: modify modify: nsslapd-syntaxcheck nsslapd-syntaxcheck: off
- gnome-desktop (package group)
- compat-arch-support (package group)
- web-server (package group)
- kernel-smp (package)
- e2fsprogs (package)
- firefox (package)
rpm -qi For example:
rpm -qi gnome-desktop gnome-desktop-2.16.0-1.el5
compat-libstdc++ libraries are installed, and not only the 32-bit (i386) libraries. To confirm this, run the following as root:
rpm -qi compat-libstdc++ --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n' | grep x86_64pki-selinux package. The SELinux policies are automatically configured whenever a new instance is created by the pkicreate command.
enforcing mode, to make the most of the security policies.
semanage to relabel the LDAP/LDAPS ports and allow the subsystem to access the Directory Server.
enforcing, then any external modules or hardware which interact with the subsystems must be configured with the proper SELinux settings to proceed with subsystem installation:
- Third-party modules, such as for ECC or HSM, must have an SELinux policy configured for them, or SELinux needs to be changed from
enforcingmode topermissivemode to allow the module to function. Otherwise, any subsystem operations which require the ECC module will fail.Changing SELinux policies is covered in the SELinux section in the Red Hat Enterprise Linux Deployment Guide. - SELinux policies must be set for any nCipher netHSM modules, as described in Section 8.1.2.4, “Setting up SELinux on nCiper netHSM 2000”.

pki-selinux, which is a required dependency for each subsystem. This policy defines objects, domains, and rules for each subsystem type, and those policies apply equally to every instance of that type on that machine. The rules and definitions for all the subsystems comprise the overall Certificate System SELinux policy.
pkicreate or removed with pkiremove.
- Open the menu.
- Open the menu, and select the item.

- In the Status area, set the system default and current enforcing modes to the desired setting. Enforcing mode is recommended.


NOTE
- pkiuser
- pkiadmin
- pkiaudit
- A hardware token group, such as nfast (optional)
pkiuser, is used by the Certificate System subsystems; this is the user which the subsystem daemons run as. The other two groups, pkiadmin and pkiaudit, are used by Certificate System users who manage the subsystem instances. If the subsystem uses a hardware token, then the PKI administrator users must also belong to that group, such as nfast for an nCipher token.
- They must have a GID and UID lower than 500. It is strongly recommended that the
pkiusergroup has a GID and UID of 17. On Red Hat Enterprise Linux 5.6 and later systems, thepkiusergroup is already configured and has a GID of 17. - The groups must not have a login shell, meaning that the login shell has a value of
/sbin/nologin. - All PKI groups must be created before attempting to install any subsystem. This account must be present in
/etc/group. - The PKI user should be create before installing any subsystems. This account must be present in
/etc/passwd.
pkiadmin and pkiaudit groups must be created for Certificate System. This is done using the groupadd tool, which is described in the the SELinux section in the Red Hat Enterprise Linux Deployment Guide.
- For Red Hat Enterprise Linux 5.6 (and later) systems, the
pkiusergroup is already created. This can be verified by checking the/etc/groupfile:grep pkiuser /etc/group pkiuser:x:17:If thepkiusergroup does not exist, then make sure that the appropriate tool packages are installed:# rpm -q setup setup-2.5.58-7.el5 # rpm -q shadow-utils shadow-utils-4.0.17-15.el5
Then, if thepkiusergroup does not exist or if it has a GID other than 17, then create thepkiusergroup. This group must have a GID value of 17; this can be specified using the-goption.# userdel pkiuser # groupdel pkiuser # groupadd -g 17 -r pkiuser
- Create the
pkiadmingroup. This group can have any randomly assigned GID for a system account. Use the-roption to create a system group.# groupadd -r pkiadmin - Create the
pkiauditgroup. This group can have any randomly assigned GID for a system account. Use the-roption to create a system group.# groupadd -r pkiaudit - Assign user accounts to the group so that users can perform the administrative and audit tasks for the subsystems. (If necessary, also create users for the groups.) This is described in Section 5.3.7.2, “Creating Operating System Users”.
# usermod -a -G pkiadmin bjensenAlong with assigning regular users to thepkiadminandpkiauditgroups, be sure to add thepkiusersystem user account.
TIP
groupadd or the Red Hat Enterprise Linux UI tools updates all of the group files on the system, including /etc/group, /etc/gshadow, and /etc/login.defs.
pkiuser account, which is associated with the pkiuser system group.
pkiadmin and pkiaudit — allow real users (not system users) to be members so that those users can carry out normal administrative and auditing functions. These user accounts simply need to be added to the PKI groups, as described in Section 5.3.7.2.3, “Associating Existing User Accounts with PKI Groups”.
pkiuser account already exists; this can be verified by checking the /etc/passwd file:
# grep pkiuser /etc/passwd
pkiuser:x:17:pkiuser group, the pkiuser account must have a UID number of 17. If the pkiuser account does not exist or if it does not have a UID of 17, then check that the appropriate setup packages are installed:
# rpm -q setup setup-2.5.58-7.el5 # rpm -q shadow-utils shadow-utils-4.0.17-15.el5
pkiuser user. Use the -g option to give the group to add the user to, and use the -r option to create a system account. To set the UID explicitly, use the -u option.
# userdel pkiuser # useradd -g pkiuser -d /usr/share/pki -s /sbin/nologin -c "Red Hat Certificate System" -u 17 -r pkiuser
useradd or the UI tools, because those automatically update all system files related to users, including /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow, /etc/default/useradd, /etc/skel, and /etc/login.defs.
-g option. For example, this creates a jsmith user who belongs to the pkiadmin group, and then creates the user password:
# useradd -g pkiadmin -d /home/jsmith -s /bin/bash -c "Red Hat Certificate System Administrator" -m jsmith # passwd jsmith New password: Re-enter new password:
usermod command. As with useradd, usermod updates all of the related user account files, including /etc/passwd, /etc/shadow, and /etc/group.
# usermod -a -G pkiadmin bjensenNOTE
pkiuser.
- PKI auditors only need to be added to the
pkiauditgroup. - PKI administrators need to be added to the
pkiadmingroup and any group uses by a hardware token used by the subsystem, such asnfastfor an nCipher hardware token.
pkiuser user should be added to both the pkiadmin and pkiaudit groups:
# usermod -a -G pkiadmin pkiuser # usermod -a -G pkiaudit pkiuser

-secure flag is set in Tomcat).
-sans_security_manager option.
- Certificate Authority (CA)
- Registration Authority (RA)
- Data Recovery Manager (DRM), sometimes referred to as a Key Recovery Authority (KRA)
- Online Certificate Status Protocol (OCSP) Responder
- Token Key Service (TKS)
- Token Processing System (TPS)
pkicreate. This script creates individual subsystem instances, with user-defined settings like the configuration and log directories and port numbers. After the instance is created, it is then configured through the HTML-based configuration wizard or by using the pkisilent script.
pkicreate is slightly different between subsystems because of the different port and groups configurations. Table 6.1, “pkicreate Parameters”
TIP
pkicreate command, run pkicreate --help.
Table 6.1. pkicreate Parameters
| Parameter | Description |
|---|---|
| pki_instance_root | Gives the full path to the new instance configuration directory. |
| subsystem_type | Gives the type of subsystem being created. |
| pki_instance_name | Gives the name of the new instance. Instance names must be unique on a single machine, but do not have to be unique within the security domain (since instances are identified by hostname and port, not instance name). |
| secure_port[a] | Sets a single SSL port number for the subsystem. This parameter is required if port separation is not configured, meaning that separate ports are not assigned for the administrator, agent, and end-entities services. |
| agent_secure_port[a] |
Sets the SSL port for the agent web services. If this is specified, then both ee_secure_port and admin_secure_port must be specified. For CAs only, an end-entities client authentication port is also required with the ee_secure_client_auth_port option.
|
| ee_secure_port[a] |
Sets the SSL port for the end-entities web services. If this is specified, then both agent_secure_port and admin_secure_port must be specified. For CAs only, an end-entities client authentication port is also required with the ee_secure_client_auth_port option.
|
| ee_secure_client_auth_port[a] |
For CAs only. Sets the SSL port for the end-entity client authentication. If this is specified, then ee_secure_port, agent_secure_port, and admin_secure_port must be specified.
|
| admin_secure_port[a] |
Sets the SSL port number for the administrator services, usually the pkiconsole. If this is specified, then both agent_secure_port and ee_secure_port must be specified. For CAs only, an end-entities client authentication port is also required with the ee_secure_client_auth_port option.
|
| non_clientauth_secure_port[a] | Sets the end entities SSL port for RA and TPS subsystems. |
| unsecure_port[a] | Sets the regular port number. If this is not set, the number is randomly generated. Still, it is recommended that administrators set this value to make sure there are no conflicts with SELinux labels for other services. |
| tomcat_server_port[a] | Sets the port number for the Tomcat web server for CA, OCSP, TKS, and DRM instances. |
| redirect conf |
Optional. Sets the location for the configuration files for the new instance. This should include an instance-specific directory name in the path. For example, for the pki-ca instance, this should be something like /etc/pki-ca.
|
| redirect logs |
Optional. Sets the location for the log files for the new instance. This should include an instance-specific directory name in the path. For example, for the pki-ca instance, this should be something like /var/log/pki-ca.
|
| user | Optional. Sets the user as which the Certificate System instance will run. |
| group | Optional. Sets the group as which the Certificate System instance will run. |
| audit_group |
Optional. Gives the name of the group for auditors for the TPS instance. The default is pkiaudit, if this option is not given.
|
| sans_security_manager | Optional. For the CA, OCSP, DRM, and TKS. Configures the new instance to run without a Java Security Manager. This option should not be used for subsystems in a Common Criteria environment. |
[a]
The ports selected for the new instance should not conflict with any other ports assigned on the host or SELinux. Check the /etc/services file to see port assignments for the system. Then, run semanage port -l |grep port# to check SELinux; if there is no output, then there is no conflict with SELinux assignments.
| |
pkicreate tool options, see the Certificate System Command-Line Tools Guide.
- Install a Red Hat Directory Server, as described in Section 5.3.3, “Installing Red Hat Directory Server”. This can be on a different machine from the Certificate System, which is the recommended scenario for most deployments.
- Create new, specific operating system groups for the Certificate System subsystems to run as. This is described in Section 5.3.7.1, “Creating Operating System Groups”.
- Assign users to the operating system groups to perform the subsystem administrative tasks. This is described in Section 5.3.7.2.3, “Associating Existing User Accounts with PKI Groups”.
- Download the Certificate System packages from the Red Hat Network channel.
- Install the packages.
- Run
pkicreateto create the subsystem instances. - Configure the Certificate System CA subsystem. At least one CA subsystem must be installed and fully configured before any other type of subsystem can be configured.
- Configure the RA, OCSP, and DRM subsystems. Once the CA is installed, the other subsystems can be installed and configured in any order.
- Set up the required
yumrepositories.- Log into the Customer Portal.
- Open the Downloads tab, and click the Downloads box in the main window.
- Under any product group, click the button.
- Search for the product name Certificate System or select the Red Hat Certificate System product from the drop-down menu.

- Click the link for the appropriate architecture.
- On the Downloads tab for the Certificate System release, click the Binary Disc link and save the ISO image to media.

- On the machine which hosts the repository, if necessary, install the VSFTP daemon. For example:
[root@server ~]# yum install vsftpd
- On the machine which hosts the repository, mount the media with the ISO. For example:
[root@server ~]# mount /dev/cdrom /mnt
- On the machine which hosts the repository, create a directory for the Certificate System packages.
[root@server ~]# mkdir /var/pub/rhcsrepo
- Copy the Certificate System ISO into the new repository directory.
- Create the
yumrepository, pointing to the RPM directory in the ISO.[root@server ~]# createrepo -g /var/pub/rhcsrepo/RedHat/RPMS
- Start the
vsftpdservice.[root@server ~]# service vsftpd start [root@server ~]# chkconfig vsftpd on
- On each client machine, create a
.repofile with the repository information. For example:[root@client ~]# touch /etc/yum.repos.d/rhcs.repo [root@client ~]# vim /etc/yum.repos.d/rhcs.repo [rhcs] name=rhcs baseurl=ftp://
repo_ip_address/pub/rhcsrepo enabled=1 gpgcheck=0
- To use an IPv6 hostname for configuration, set the hostname in the
PKI_HOSTNAMEenvironment variable before installing the packages. This is described in Section 12.3, “Enabling IPv6 for a Subsystem”. - Run
yumto install the CA packages. Optionally, include the console packages.[root@server ~]# yum install pki-ca pki-console
- Run the
pkicreatecommand to create the CA instance. For example:[root@server ~]# pkicreate -pki_instance_root=/var/lib -pki_instance_name=pki-ca -subsystem_type=ca -agent_secure_port=9443 -ee_secure_port=9444 -ee_secure_client_auth_port=9446 -admin_secure_port=9445 -unsecure_port=9180 -tomcat_server_port=9701 -audit_group=pkiaudit -redirect logs=/var/log/pki-name/logs PKI instance creation Utility ... PKI instance creation completed ... Startinginstance_name: [ OK ] instance_name (pid 17990) is running ... 'instance_name' must still be CONFIGURED! (see /var/log/pki-name-install.log) Before proceeding with the configuration, make sure the firewall settings of this machine permit proper access to this subsystem. Please start the configuration by accessing: http://server.example.com:9180/ca/admin/console/config/login?pin=kI7E1MByNIUcPJ6RKHmH After configuration, the server can be operated by the command: serviceinstance_namestart | stop | restartThis example uses the recommended port separation configuration, specifies an auditor group, and uses a Java Security Manager. Other options could be specified to set user-defined log and configuration directories and a user-defined operating system user and group. For otherpkicreateoptions, see Table 6.1, “pkicreate Parameters”.The command options here are on separate lines to make it clear what options are used. All options should be on a single line. - When the
pkicreatecommand completes, it returns a URL to use to access the web-based configuration wizard and a PIN to use to authenticate. Open the configuration wizard using the URL returned from the package installation.Alternatively, log into the setup wizard through the admin link on the services page and supply thepreop.pinvalue from the/var/lib/pki-ca/conf/CS.cfgfile when prompted.https://server.example.com:9444/ca/services
- Select the token which will store the Certificate System certificates and keys; a list of detected hardware tokens and databases is given.Any hardware tokens used with the instance must be configured before configuring the subsystem instance.
The Certificate System automatically discovers Safenet's LunaSA and nCipher's netHSM hardware security modules. The discovery process assumes that the client software installations for these modules are local to the Certificate System subsystem and are in the following locations:- LunaSA:
/usr/lunasa/lib/libCryptoki2.so - LunaSA:
/usr/lunasa/lib/libCryptoki2_64.so - nCipher:
/opt/nfast/toolkits/pkcs11/libcknfast.so
- Create a new security domain.
The first CA instance must create a new security domain. Subsequent CAs can create a new domain or join an existing security domain, but it is recommended that each CA have its own security domain.TIP
If a CA which is a security domain master is cloned, then that cloned CA is also a security domain master. In that case, both the original CA and its clone share the same security domain configuration. - Enter a name for the new instance.

- Set up the PKI hierarchy. Commonly, the first CA is a root, or self-signed, CA, meaning that it signs its own CA signing certificate rather than submitting its certificates to a third-party CA for issuance. Subsequent CAs can be subordinate CAs to that root. There are many other options, depending on the PKI environment.
For a CA, there are two possible configuration options:- Root CA. A root CA signs its own CA signing certificate and, therefore, can set its own certificate issuance rules.
- Subordinate CA. A subordinate CA receives its CA signing certificate from a root CA. The root CA must be referenced here; it can be another Certificate System CA, but this can be an external root CA. The certificate requests generated in this process must be submitted to the external CA and be approved before configuration can be completed.
- Fill in the information for the LDAP server which will be used for the instance's internal database. This requires connection information for the Directory Server instance, such as the hostname, port number, bind DN (username), and password. This step also creates a database in the Directory Server and a corresponding base directory entry (base DN) to use for the subsystem's entries.To configure SSL client authentication, make sure that the SSL port is set and the SSL checkbox is selected. The Directory Server must be configured to run in SSL, as described in Chapter 7, Installing Red Hat Certificate System with SSL Connections to Red Hat Directory Server.
The hostname can be the fully-qualified domain name or an IPv4 or IPv6 address, if IPv6 was configured before the packages were installed.NOTE
One thing that can derail subsystem configuration or function is having services that are unable to connect with each other. If servers that need to communicate with each other are on different servers or networks, when the firewalls and iptables must be configured to give the required access.If the Red Hat Directory Server instances is on a different server or network than the Certificate System subsystem, then make sure that the Certificate System host's firewall allows access to whatever LDAP port was set in the previous configuration panel.Installation will not complete if iptables is not configured properly. To configure iptables, see the Red Hat Enterprise Linux Deployment Guide, such as "Using iptables." It is also possible to simply turn iptables off. - Set the key size and the hashing algorithm (RSA) or curve (ECC) to use for the subsystem instance keys. A root CA has the additional option of selecting the algorithm to use to sign its certificates.By default, the settings for the signing key are applied to the keys for every certificate for the CA. To set different key types, sizes, or hashing algorithms (RSA) or curves (ECC) for each certificate, click the [Advanced] link to expand the form so each key pair is listed.The default RSA key size is 2048 and for ECC, 256.

IMPORTANT
ECC can be used for any keys for the subsystem, with one exception: only RSA can be used for audit signing keys.NOTE
An ECC CA signing certificate can be used to sign both ECC and RSA certificates. If you do not want to use the ECC client certificate that is generated at installation, simply replace the client certificate after configuration, and keep the ECC CA signing certificate.Any ECC-enabled PKCS#11 module must be loaded before beginning to configure the CA. - Optionally, change the subject names for the certificates.

NOTE
Certificate nicknames must be unique, and changing the default nicknames is one way to ensure that.Having unique certificate nicknames is vital for using an HSM, since any nickname conflicts (even for subsystems on different servers) will cause configuration to fail. - The next panels generate and show certificate requests, certificates, and key pairs.

- If the subsystem will ever be cloned, or as a protection if keys or certificates are ever lost, back up the keys and certificates when prompted. It is also possible to extract these keys later.

- The configuration wizard will prompt to import the new CA certificate. Set all of the trust flags (web, email, and software) and then import the certificate.

- Provide the information for the new subsystem administrator.

- Click through the remaining panels to import the agent certificate into the browser and complete the configuration.
- When the configuration is complete, restart the subsystem.
service pki-ca restart
IMPORTANT
The new instance is not active until it is restarted, and weird behaviors can occur if you try to use the instance without restarting it first.
NOTE
kra for this reason. In the documentation, the subsystem used to archive and recover keys is called the DRM or KRA interchangeably.
- A CA must be configured and running somewhere on the network. A DRM depends on the CA to issue their certificates and to create a security domain. If the security domain CA is not available, then the configuration process fails.
- Set up the required
yumrepositories.Create a.repofile with the repository information (this was likely configured in Section 6.2.1, “Installing and Configuring a CA”). For example:[root@client ~]# touch /etc/yum.repos.d/rhcs.repo [root@client ~]# vim /etc/yum.repos.d/rhcs.repo [rhcs] name=rhcs baseurl=ftp://
repo_ip_address/pub/rhcsrepo enabled=1 gpgcheck=0 - Run
yumto install the DRM packages. Optionally, include the console packages.[root@server ~]# yum install pki-kra pki-console
- Run the
pkicreatecommand to create the DRM instance. For example:pkicreate -pki_instance_root=/var/lib -pki_instance_name=pki-kra -subsystem_type=kra -agent_secure_port=10443 -ee_secure_port=10444 -admin_secure_port=10445 -unsecure_port=10180 -tomcat_server_port=10701 -audit_group=pkiaudit -redirect logs=/var/log/pki-name/logs PKI instance creation Utility ... PKI instance creation completed ... Startinginstance_name: [ OK ] instance_name (pid 17990) is running ... 'instance_name' must still be CONFIGURED! (see /var/log/pki-name-install.log) Before proceeding with the configuration, make sure the firewall settings of this machine permit proper access to this subsystem. Please start the configuration by accessing: http://server.example.com:10180/kra/admin/console/config/login?pin=kI7E1MByNIUcPJ6RKHmH After configuration, the server can be operated by the command: serviceinstance_namestart | stop | restartThis example uses the recommended port separation configuration, specifies an auditor group, and uses a Java Security Manager. Other options could be specified to set user-defined log and configuration directories and a user-defined operating system user and group. For otherpkicreateoptions, see Table 6.1, “pkicreate Parameters”.The command options here are on separate lines to make it clear what options are used. All options should be on a single line. - Download the CA certificate chain for the CA which will issue the CA certificate, and import the CA chain into the browser.
- Open the CA web services page.
http
s://server.example.com:9444/ca/ee/ca - Click the Retrieval tab.
- Click the Import CA Certificate Chain link.
- Select the radio button to import the CA certificate into the browser.

- Click .
- When the
pkicreatecommand completes, it returns a URL to use to access the web-based configuration wizard and a PIN to use to authenticate. Open the configuration wizard using the URL returned from the package installation.Alternatively, log into the setup wizard through the admin link on the services page and supply thepreop.pinvalue from the/var/lib/pki-kra/conf/CS.cfgfile when prompted.https://server.example.com:10445/kra/services
- Select the token which will store the Certificate System certificates and keys; a list of detected hardware tokens and databases is given.Any hardware tokens used with the instance must be configured before configuring the subsystem instance.

- Join an existing security domain by entering the CA information. This URL can be identified by running
service pki-ca statuson the CA's host; the security domain URL is returned with the other configuration settings. For example:https://server.example.com:9445
When the CA is successfully contacted, then supply the admin username and password for the CA so that it can be properly accessed.
- Enter a name for the new instance.

- Fill in the information for the LDAP server which will be used for the instance's internal database. This requires connection information for the Directory Server instance, such as the hostname, port number, bind DN (username), and password. This step also creates a database in the Directory Server and a corresponding base directory entry (base DN) to use for the subsystem's entries.To configure SSL client authentication, make sure that the SSL port is set and the SSL checkbox is selected. The Directory Server must be configured to run in SSL, as described in Chapter 7, Installing Red Hat Certificate System with SSL Connections to Red Hat Directory Server.
The hostname can be the fully-qualified domain name or an IPv4 or IPv6 address.NOTE
One thing that can derail subsystem configuration or function is having services that are unable to connect with each other. If servers that need to communicate with each other are on different servers or networks, when the firewalls and iptables must be configured to give the required access.If the Red Hat Directory Server instances is on a different server or network than the Certificate System subsystem, then make sure that the Certificate System host's firewall allows access to whatever LDAP port was set in the previous configuration panel.Installation will not complete if iptables is not configured properly. To configure iptables, see the Red Hat Enterprise Linux Deployment Guide, such as "Using iptables." It is also possible to simply turn iptables off. - Set the key size and the algorithm (RSA) or curve (ECC) to use for the subsystem instance keys.To set different key types, sizes, or algorithms (RSA) or curves (ECC) for each certificate, click the [Advanced] link to expand the form so each key pair is listed.The default RSA key size is 2048 and for ECC, 256.

IMPORTANT
ECC can be used for any keys for the subsystem, with one exception: only RSA can be used for audit signing keys.Any ECC-enabled PKCS#11 module must be loaded before beginning to configure the CA. - Optionally, change subject names to the listed certificates.

NOTE
Certificate nicknames must be unique, and changing the default nicknames is one way to ensure that.Having unique certificate nicknames is vital for using an HSM, since any nickname conflicts (even for subsystems on different servers) will cause configuration to fail. - The next panels generate and show certificate requests, certificates, and key pairs.

- If the subsystem will ever be cloned, or as a protection if keys or certificates are ever lost, back up the keys and certificates when prompted. It is also possible to extract these keys later.

- Provide the information for the new subsystem administrator.

- Click through the remaining panels to import the agent certificate into the browser and complete the configuration.
- When the configuration is complete, restart the subsystem.
service pki-kra restart
IMPORTANT
The new instance is not active until it is restarted, and weird behaviors can occur if you try to use the instance without restarting it first.
- A CA must be configured and running somewhere on the network. An OCSP responder depends on the CA to issue their certificates and to create a security domain. If the security domain CA is not available, then the configuration process fails.
- Set up the required
yumrepositories.Create a.repofile with the repository information (this was likely configured in Section 6.2.1, “Installing and Configuring a CA”). For example:[root@client ~]# touch /etc/yum.repos.d/rhcs.repo [root@client ~]# vim /etc/yum.repos.d/rhcs.repo [rhcs] name=rhcs baseurl=ftp://
repo_ip_address/pub/rhcsrepo enabled=1 gpgcheck=0 - Run
yumto install the OCSP packages. Optionally, include the console packages.[root@server ~]# yum install pki-ocsp pki-console
- Run the
pkicreatecommand to create the OCSP instance. For example:pkicreate -pki_instance_root=/var/lib -pki_instance_name=pki-ocsp -subsystem_type=ocsp -agent_secure_port=11443 -ee_secure_port=11444 -admin_secure_port=11445 -unsecure_port=11180 -tomcat_server_port=11701 -audit_group=pkiaudit -redirect logs=/var/log/pki-name/logs PKI instance creation Utility ... PKI instance creation completed ... Startinginstance_name: [ OK ] instance_name (pid 17990) is running ... 'instance_name' must still be CONFIGURED! (see /var/log/pki-name-install.log) Before proceeding with the configuration, make sure the firewall settings of this machine permit proper access to this subsystem. Please start the configuration by accessing: http://server.example.com:11180/ocsp/admin/console/config/login?pin=IOjh7fIOjkld90kkI7E1MByNIUcPJ6RKHmH After configuration, the server can be operated by the command: serviceinstance_namestart | stop | restartThis example uses the recommended port separation configuration, specifies an auditor group, and uses a Java Security Manager. Other options could be specified to set user-defined log and configuration directories and a user-defined operating system user and group. For otherpkicreateoptions, see Table 6.1, “pkicreate Parameters”.The command options here are on separate lines to make it clear what options are used. All options should be on a single line. - Download the CA certificate chain for the CA which will issue the CA certificate, and import the CA chain into the browser.
- Open the CA web services page.
http
s://server.example.com:9444/ca/ee/ca - Click the Retrieval tab.
- Click the Import CA Certificate Chain link.
- Select the radio button to import the CA certificate into the browser.

- Click .
- When the
pkicreatecommand completes, it returns a URL to use to access the web-based configuration wizard and a PIN to use to authenticate. Open the configuration wizard using the URL returned from the package installation.Alternatively, log into the setup wizard through the admin link on the services page and supply thepreop.pinvalue from the/var/lib/pki-ocsp/conf/CS.cfgfile when prompted.https://server.example.com:11444/ocsp/services
- Select the token which will store the Certificate System certificates and keys; a list of detected hardware tokens and databases is given.Any hardware tokens used with the instance must be configured before configuring the subsystem instance.

- Join an existing security domain by entering the CA information. This URL can be identified by running
service pki-ca statuson the CA's host; the security domain URL is returned with the other configuration settings. For example:https://server.example.com:9445
When the CA is successfully contacted, then supply the admin username and password for the CA so that it can be properly accessed.
- Enter a name for the new instance.

- Fill in the information for the LDAP server which will be used for the instance's internal database. This requires connection information for the Directory Server instance, such as the hostname, port number, bind DN (username), and password. This step also creates a database in the Directory Server and a corresponding base directory entry (base DN) to use for the subsystem's entries.To configure SSL client authentication, make sure that the SSL port is set and the SSL checkbox is selected. The Directory Server must be configured to run in SSL, as described in Chapter 7, Installing Red Hat Certificate System with SSL Connections to Red Hat Directory Server.
The hostname can be the fully-qualified domain name or an IPv4 or IPv6 address.NOTE
One thing that can derail subsystem configuration or function is having services that are unable to connect with each other. If servers that need to communicate with each other are on different servers or networks, when the firewalls and iptables must be configured to give the required access.If the Red Hat Directory Server instances is on a different server or network than the Certificate System subsystem, then make sure that the Certificate System host's firewall allows access to whatever LDAP port was set in the previous configuration panel.Installation will not complete if iptables is not configured properly. To configure iptables, see the Red Hat Enterprise Linux Deployment Guide, such as "Using iptables." It is also possible to simply turn iptables off. - Set the key size and the algorithm (RSA) or curve (ECC) to use for the subsystem instance keys.To set different key types, sizes, or algorithms (RSA) or curves (ECC) for each certificate, click the [Advanced] link to expand the form so each key pair is listed.The default RSA key size is 2048 and for ECC, 256.

IMPORTANT
ECC can be used for any keys for the subsystem, with one exception: only RSA can be used for audit signing keys.Any ECC-enabled PKCS#11 module must be loaded before beginning to configure the CA. - Optionally, change subject names to the listed certificates.

NOTE
Certificate nicknames must be unique, and changing the default nicknames is one way to ensure that.Having unique certificate nicknames is vital for using an HSM, since any nickname conflicts (even for subsystems on different servers) will cause configuration to fail. - The next panels generate and show certificate requests, certificates, and key pairs.

- If the subsystem will ever be cloned, or as a protection if keys or certificates are ever lost, back up the keys and certificates when prompted. It is also possible to extract these keys later.

- Provide the information for the new subsystem administrator.

- Click through the remaining panels to import the agent certificate into the browser and complete the configuration.
- When the configuration is complete, restart the subsystem.
service pki-ocsp restart
IMPORTANT
The new instance is not active until it is restarted, and weird behaviors can occur if you try to use the instance without restarting it first. - Restart the CA instance. Restarting the CA instance loads the configuration for the new OCSP responder.
service pki-ca restart
- A CA must be configured and running somewhere on the network. An RA depends on the CA to issue their certificates and to create a security domain. If the security domain CA is not available, then the configuration process fails.
- Set up the required
yumrepositories.Create a.repofile with the repository information (this was likely configured in Section 6.2.1, “Installing and Configuring a CA”). For example:[root@client ~]# touch /etc/yum.repos.d/rhcs.repo [root@client ~]# vim /etc/yum.repos.d/rhcs.repo [rhcs] name=rhcs baseurl=ftp://
repo_ip_address/pub/rhcsrepo enabled=1 gpgcheck=0 - Run
yumto install the RA packages.[root@server ~]# yum install pki-ra
- Run the
pkicreatecommand to create the RA instance. For example:pkicreate -pki_instance_root=/var/lib -pki_instance_name=pki-ra -subsystem_type=ra -secure_port=12889 -non_clientauth_secure_port=12890 -unsecure_port=12888 -redirect logs=/var/log/pki-name/logsWhen thepkicreatecommand completes, it returns a URL to use to access the web-based configuration wizard and a PIN to use to authenticate. This PIN is also contained in the install logs (/var/log/pki-) and in thename-install.logCS.cfgfile for the instance.PKI instance creation Utility ... PKI instance creation completed ... Starting
instance_name: [ OK ] instance_name (pid 17990) is running ... 'instance_name' must still be CONFIGURED! (see /var/log/pki-name-install.log) Before proceeding with the configuration, make sure the firewall settings of this machine permit proper access to this subsystem. Please start the configuration by accessing: http://server.example.com:12888/ra/admin/console/config/login?pin=kI7E1MByNIUcPJ6RKHmH After configuration, the server can be operated by the command: serviceinstance_namestart | stop | restartThis example uses the recommended port separation configuration, specifies an auditor group, and uses a Java Security Manager. Other options could be specified to set user-defined log and configuration directories and a user-defined operating system user and group. For otherpkicreateoptions, see Table 6.1, “pkicreate Parameters”.The command options here are on separate lines to make it clear what options are used. All options should be on a single line. - Download the CA certificate chain for the CA which will issue the CA certificate, and import the CA chain into the browser.
- Open the CA web services page.
http
s://server.example.com:9444/ca/ee/ca - Click the Retrieval tab.
- Click the Import CA Certificate Chain link.
- Select the radio button to import the CA certificate into the browser.

- Click .
- If the CA which will be used to configure the RA is configured to prefer client authentication (
sslClientAuth = wantis set in theserver.xmlfile), then this setting must be disabled before the RA can be configured. Otherwise, the CA requests client authentication when the RA attempts to connect with it during configuration, which the RA cannot perform, and the configuration process hangs.The procedure for changing the client authentication settings is in the Administrator's Guide. - Open the configuration wizard using the URL returned by running
pkicreate.http
s://server.example.com:12889/ra/admin/console/config/login?pin=kI7E1MByNIUcPJ6RKHmH - Join an existing security domain by entering the CA information. This URL can be identified by running
service pki-ca statuson the CA's host; the security domain URL is returned with the other configuration settings. For example:https://server.example.com:9445
When the CA is successfully contacted, then supply the admin username and password for the CA so that it can be properly accessed.
The hostname for the security domain CA can be the fully-qualified domain name or an IPv4 or IPv6 address, if IPv6 was configured before the packages were installed. - Enter a name for the new instance.

- Select the CA which will issue, renew, and revoke certificates for certificates processed through the RA. All of the CAs configured in the security domain are listed in a dropdown menu.

- Click on the Internal Database panel; the SQLite database is created automatically.

NOTE
The RA uses a SQLite database to store its configuration and user data rather than an LDAP database, as the other subsystems do. - Select the token which will store the Certificate System certificates and keys; a list of detected hardware tokens and databases is given.Any hardware tokens used with the instance must be configured before configuring the subsystem instance.

- Set the key size and type (RSA or ECC) to use for the subsystem instance keys.By default, the settings for the signing key are applied to the keys for every certificate for the CA. To set different key types, sizes, or hashing algorithms (RSA) or curves (ECC) for each certificate, click the [Advanced] link to expand the form so each key pair is listed.The default RSA key size is 2048 and for ECC, 256.
Any ECC-enabled PKCS#11 module must be loaded before beginning to configure the RA. - Optionally, change the subject names for the certificates.

NOTE
Certificate nicknames must be unique, and changing the default nicknames is one way to ensure that.Having unique certificate nicknames is vital for using an HSM, since any nickname conflicts (even for subsystems on different servers) will cause configuration to fail. - The next panels generate and show certificate requests, certificates, and key pairs.

- Provide the information for the new subsystem administrator.

- Click through the remaining panels to import the agent certificate into the browser and complete the configuration.
- When the configuration is complete, restart the subsystem.
service pki-ra restart
IMPORTANT
The new instance is not active until it is restarted, and weird behaviors can occur if you try to use the instance without restarting it first.
- Install a Red Hat Directory Server, as described in Section 5.3.3, “Installing Red Hat Directory Server”. This can be on a different machine from the Certificate System, which is the recommended scenario for most deployments.
- Create new, specific operating system groups for the Certificate System subsystems to run as. This is described in Section 5.3.7.1, “Creating Operating System Groups”.
- Assign users to the operating system groups to perform the subsystem administrative tasks. This is described in Section 5.3.7.2.3, “Associating Existing User Accounts with PKI Groups”.
- Download the Certificate System packages from the Red Hat Network channel.
- Install the packages.
- Run
pkicreateto create the subsystem instances. - Optionally, configure the DRM subsystem.
- Configure the TKS subsystem.
- A CA must be configured and running somewhere on the network. A TKS depends on the CA to issue their certificates and to create a security domain. If the security domain CA is not available, then the configuration process fails.
- Set up the required
yumrepositories.Create a.repofile with the repository information (this was likely configured in Section 6.2.1, “Installing and Configuring a CA”). For example:[root@client ~]# touch /etc/yum.repos.d/rhcs.repo [root@client ~]# vim /etc/yum.repos.d/rhcs.repo [rhcs] name=rhcs baseurl=ftp://
repo_ip_address/pub/rhcsrepo enabled=1 gpgcheck=0 - Run
yumto install the TKS packages. Optionally, include the console packages.[root@server ~]# yum install pki-tks pki-console
- Run the
pkicreatecommand to create the TKS instance. For example:pkicreate -pki_instance_root=/var/lib -pki_instance_name=pki-tks -subsystem_type=tks -agent_secure_port=13443 -ee_secure_port=13444 -admin_secure_port=13445 -unsecure_port=13180 -tomcat_server_port=13701 -audit_group=pkiaudit -redirect logs=/var/log/pki-name/logs PKI instance creation Utility ... PKI instance creation completed ... Startinginstance_name: [ OK ] instance_name (pid 17990) is running ... 'instance_name' must still be CONFIGURED! (see /var/log/pki-name-install.log) Before proceeding with the configuration, make sure the firewall settings of this machine permit proper access to this subsystem. Please start the configuration by accessing: http://server.example.com:13180/tks/admin/console/config/login?pin=kI7E1MByNIUcPJ6RKHmH After configuration, the server can be operated by the command: serviceinstance_namestart | stop | restartThis example uses the recommended port separation configuration, specifies an auditor group, and uses a Java Security Manager. Other options could be specified to set user-defined log and configuration directories and a user-defined operating system user and group. For otherpkicreateoptions, see Table 6.1, “pkicreate Parameters”.The command options here are on separate lines to make it clear what options are used. All options should be on a single line. - Download the CA certificate chain for the CA which will issue the CA certificate, and import the CA chain into the browser.
- Open the CA web services page.
http
s://server.example.com:9444/ca/ee/ca - Click the Retrieval tab.
- Click the Import CA Certificate Chain link.
- Select the radio button to import the CA certificate into the browser.

- Click .
- When the
pkicreatecommand completes, it returns a URL to use to access the web-based configuration wizard and a PIN to use to authenticate. Open the configuration wizard using the URL returned from the package installation. - Select the token which will store the Certificate System certificates and keys; a list of detected hardware tokens and databases is given.Any hardware tokens used with the instance must be configured before configuring the subsystem instance.

- Join an existing security domain by entering the CA information. This URL can be identified by running
service pki-ca statuson the CA's host; the security domain URL is returned with the other configuration settings. For example:https://server.example.com:9445
When the CA is successfully contacted, then supply the admin username and password for the CA so that it can be properly accessed.
- Enter a name for the new instance.

- Fill in the information for the LDAP server which will be used for the instance's internal database. This requires connection information for the Directory Server instance, such as the hostname, port number, bind DN (username), and password. This step also creates a database in the Directory Server and a corresponding base directory entry (base DN) to use for the subsystem's entries.To configure SSL client authentication, make sure that the SSL port is set and the SSL checkbox is selected. The Directory Server must be configured to run in SSL, as described in Chapter 7, Installing Red Hat Certificate System with SSL Connections to Red Hat Directory Server.
The hostname can be the fully-qualified domain name or an IPv4 or IPv6 address.NOTE
One thing that can derail subsystem configuration or function is having services that are unable to connect with each other. If servers that need to communicate with each other are on different servers or networks, when the firewalls and iptables must be configured to give the required access.If the Red Hat Directory Server instances is on a different server or network than the Certificate System subsystem, then make sure that the Certificate System host's firewall allows access to whatever LDAP port was set in the previous configuration panel.Installation will not complete if iptables is not configured properly. To configure iptables, see the Red Hat Enterprise Linux Deployment Guide, such as "Using iptables." It is also possible to simply turn iptables off. - Set the key size and the algorithm (RSA) or curve (ECC) to use for the subsystem instance keys.To set different key types, sizes, or algorithms (RSA) or curves (ECC) for each certificate, click the [Advanced] link to expand the form so each key pair is listed.The default RSA key size is 2048 and for ECC, 256.

IMPORTANT
ECC can be used for any keys for the subsystem, with one exception: only RSA can be used for audit signing keys.Any ECC-enabled PKCS#11 module must be loaded before beginning to configure the CA. - Optionally, change subject names to the listed certificates.

NOTE
Certificate nicknames must be unique, and changing the default nicknames is one way to ensure that.Having unique certificate nicknames is vital for using an HSM, since any nickname conflicts (even for subsystems on different servers) will cause configuration to fail. - The next panels generate and show certificate requests, certificates, and key pairs.

- If the subsystem will ever be cloned, or as a protection if keys or certificates are ever lost, back up the keys and certificates when prompted. It is also possible to extract these keys later.

- Provide the information for the new subsystem administrator.

- Click through the remaining panels to import the agent certificate into the browser and complete the configuration.
- Before restarting the new TKS instance, create a shared secret key.The
tkstoolscript prints information about the shared secret key as it creates the key. These session key shares are required to import the shared key onto the TPS, so record this information.NOTE
Creating shared keys for the TKS and TPS is covered in the Administrator's Guide.tkstool -T -d /var/lib/pki-tks/alias -n sharedSecret Generating the first session key share . . . first session key share: 792F AB89 8989 D902 9429 6137 8632 7CC4 first session key share KCV: D1B6 14FD Generating the second session key share . . . second session key share: 4CDF C8E0 B385 68EC 380B 6D5E 1C19 3E5D second session key share KCV: 1EC7 8D4B Generating the third session key share . . . third session key share: CD32 3140 25B3 C789 B54F 2C94 26C4 9752 third session key share KCV: 73D6 8633 Generating first symmetric key . . . Generating second symmetric key . . . Generating third symmetric key . . . Extracting transport key from operational token . . . transport key KCV: A8D0 97A2 Storing transport key on final specified token . . . Naming transport key "sharedSecret" . . . Successfully generated, stored, and named the transport key!NOTE
If you are using a hardware token, thetkstoolscript could return an error requiring you to set environment variables before running the tool. Set the environment variables as directed, and then re-run the tool.List the keys to make sure the shared key was properly imported.tkstool -d /var/lib/pki-tks/alias -L slot: NSS User Private Key and Certificate Services token: NSS Certificate DB Enter Password or Pin for "NSS Certificate DB": xxxxx <0> sharedSecretThe shared key issharedSecret, which is the default name. - When the configuration is complete, restart the subsystem.
service pki-tks restart
IMPORTANT
The new instance is not active until it is restarted, and weird behaviors can occur if you try to use the instance without restarting it first.
- A CA must be configured and running somewhere on the network.
- A TKS must be configured and running somewhere on the network.
- If a DRM will be used to store keys, then it must be configured and running somewhere on the network.
- On the TPS host machine, set up the required
yumrepositories.Create a.repofile with the repository information (this was likely configured in Section 6.2.1, “Installing and Configuring a CA”). For example:[root@client ~]# touch /etc/yum.repos.d/rhcs.repo [root@client ~]# vim /etc/yum.repos.d/rhcs.repo [rhcs] name=rhcs baseurl=ftp://
repo_ip_address/pub/rhcsrepo enabled=1 gpgcheck=0 - Run
yumto install the TPS packages.[root@server ~]# yum install pki-tps
- Run the
pkicreatecommand to create the TPS instance. For example:pkicreate -pki_instance_root=/var/lib -pki_instance_name=pki-tps -subsystem_type=tps -secure_port=7889 -non_clientauth_secure_port=7890 -unsecure_port=7888 -audit_group=pkiaudit -redirect logs=/var/log/pki-name/logs PKI instance creation Utility ... PKI instance creation completed ... Startinginstance_name: [ OK ] instance_name (pid 17990) is running ... 'instance_name' must still be CONFIGURED! (see /var/log/pki-name-install.log) Before proceeding with the configuration, make sure the firewall settings of this machine permit proper access to this subsystem. Please start the configuration by accessing: http://server.example.com:7888/tps/admin/console/config/login?pin=kI7E1MByNIUcPJ6RKHmH After configuration, the server can be operated by the command: serviceinstance_namestart | stop | restartThis example uses the recommended port separation configuration, specifies an auditor group, and uses a Java Security Manager. Other options could be specified to set user-defined log and configuration directories and a user-defined operating system user and group. For otherpkicreateoptions, see Table 6.1, “pkicreate Parameters”.The command options here are on separate lines to make it clear what options are used. All options should be on a single line.When thepkicreatecommand completes, it returns a URL to use to access the web-based configuration wizard and a PIN to use to authenticate. This PIN is also contained in the install logs (/var/log/pki-) and in thename-install.logCS.cfgfile for the instance. - Download the CA certificate chain for the CA which will issue the CA certificate, and import the CA chain into the browser.
- Open the CA web services page.
http
s://server.example.com:9444/ca/ee/ca - Click the Retrieval tab.
- Click the Import CA Certificate Chain link.
- Select the radio button to import the CA certificate into the browser.

- Click .
- If the CA, TKS, or DRM which will be used to work with the TPS is configured to prefer client authentication (
sslClientAuth = wantis set in theserver.xmlfile), then this setting must be disabled before the TPS can be configured. Otherwise, the CA, TKS, or DRM will request client authentication when the TPS attempts to connect with it during configuration, which the TPS cannot perform.The procedure for changing the client authentication settings is in the Administrator's Guide. - Open the configuration wizard using the URL returned by running
pkicreate.http://server.example.com:7888/tps/admin/console/config/login?pin=kI7E1MByNIUcPJ6RKHmH
- Select the token which will store the Certificate System certificates and keys; a list of detected hardware tokens and databases is given.Any hardware tokens used with the instance must be configured before configuring the subsystem instance.

- Join an existing security domain by entering the CA information. This URL can be identified by running
service pki-ca statuson the CA's host; the security domain URL is returned with the other configuration settings. For example:https://server.example.com:9445
When the CA is successfully contacted, then supply the admin username and password for the CA so that it can be properly accessed.
- Enter a name for the new instance.

- Select the CA which will issue, renew, and revoke certificates for token operations requested through the TPS subsystem.

- Supply information about the TKS which will manage the TPS keys. Select the TKS from the drop-down menu of TKS subsystems within the security domain.

- There is an option for server-side key generation for tokens enrolled through the TPS. If server-side key generation is selected, supply information about the DRM which will generate keys and archive encryption keys. Key and certificate recovery is initiated automatically through the TPS, which is a DRM agent. Select the DRM from the drop-down menu of DRM subsystems within the security domain.
The hostname for the DRM can be the fully-qualified domain name or an IPv4 or IPv6 address. - Fill in the Directory Server authentication directory. This directory is used by the TPS to authenticate users which access the Enterprise Security Client and as an additional database for certificates and keys.This Directory Server instance must not be the same Directory Server instance used as the TPS's internal database. This is a general user directory, which may be accessed by other applications or users, whereas the TPS's internal database is used exclusively by the TPS and is created on the fly as the TPS is configured.To configure SSL client authentication, make sure that the SSL port is set and the SSL checkbox is selected. The Directory Server must be configured to run in SSL, as described in Chapter 7, Installing Red Hat Certificate System with SSL Connections to Red Hat Directory Server.
The hostname of the LDAP server can be the fully-qualified domain name or an IPv4 or IPv6 address. - Fill in the information for the LDAP server which will be used for the instance's internal database. This requires connection information for the Directory Server instance, such as the hostname, port number, bind DN (username), and password. This step also creates a database in the Directory Server and a corresponding base directory entry (base DN) to use for the subsystem's entries.To configure SSL client authentication, make sure that the SSL port is set and the SSL checkbox is selected. The Directory Server must be configured to run in SSL, as described in Chapter 7, Installing Red Hat Certificate System with SSL Connections to Red Hat Directory Server.
The hostname can be the fully-qualified domain name or an IPv4 or IPv6 address.NOTE
One thing that can derail subsystem configuration or function is having services that are unable to connect with each other. If servers that need to communicate with each other are on different servers or networks, when the firewalls and iptables must be configured to give the required access.If the Red Hat Directory Server instances is on a different server or network than the Certificate System subsystem, then make sure that the Certificate System host's firewall allows access to whatever LDAP port was set in the previous configuration panel.Installation will not complete if iptables is not configured properly. To configure iptables, see the Red Hat Enterprise Linux Deployment Guide, such as "Using iptables." It is also possible to simply turn iptables off. - Set the key size and type (RSA or ECC) to use for the subsystem instance keys.By default, the settings for the signing key are applied to the keys for every certificate for the CA. To set different key types, sizes, or hashing algorithms for each certificate, click the [Advanced] link to expand the form so each key pair is listed.The default RSA key size is 2048. The available algorithms are listed in Section A.1, “RSA Hashing Algorithms”. The default size for ECC is 256, and the only supported curve is nistp256.

- Optionally, change subject names to the listed certificates.

NOTE
Certificate nicknames must be unique, and changing the default nicknames is one way to ensure that.Having unique certificate nicknames is vital for using an HSM, since any nickname conflicts (even for subsystems on different servers) will cause configuration to fail. - The next panels generate and show certificate requests, certificates, and key pairs.

- Provide the information for the new subsystem administrator.

- Click through the remaining panels to import the agent certificate into the browser and complete the configuration.
- When the configuration is complete, restart the subsystem.
service pki-tps restart
IMPORTANT
The new instance is not active until it is restarted, and weird behaviors can occur if you try to use the instance without restarting it first. - Stop the TPS.
service pki-tps stop
- Use the
tkstoolscript to import the shared key into the NSS software token.tkstool -I -d /var/lib/pki-tps/alias -n sharedSecret
The script will prompts for the session key shares that were printed when the key was created in the TKS. Enter the information from the TKS.NOTE
If you are using a hardware token, thetkstoolscript could return an error requiring you to set environment variables before running the tool. Set the environment variables as directed, and then re-run the tool.List the keys to make sure the shared key was properly imported.tkstool -d /var/lib/pki-tps/alias -L slot: NSS User Private Key and Certificate Services token: NSS Certificate DB Enter Password or Pin for "NSS Certificate DB": xxxxx <0> sharedSecretThe shared key issharedSecret, which is the default name. The TPS can be configured to set a different name for the shared key by changing the value of theconn.tks1.tksSharedSymKeyNamevalue in theCS.cfg. This value must be the same as the nickname for the key imported into the token, or the TPS cannot locate the key. - Start the TPS instance.
service pki-tps start
- Edit the TPS configuration file to use the appropriate profile name for the
delegateISEtokenprofile.When a new TPS is installed using 8.1 packages, thedelegateISEtokenprofile is created with the wrong CA profile ID. The ID is incorrectly is set tocaTokenUserAuthenticationKeyEnrollment.Open the TPS configuration file:[root@server ~]# vim /var/lib/pki-tps/conf/CS.cfg
Change the profile ID name tocaTokenUserDelegateAuthKeyEnrollment:op.enroll.delegateISEtoken.keyGen.encryption.ca.profileId=caTokenUserDelegateAuthKeyEnrollment
NOTE
NOTE
- Configure the Red Hat Directory Server instance to run over SSL. This is described in detail in http://docs.redhat.com/docs/en-US/Red_Hat_Directory_Server/8.2/html/Administration_Guide/Managing_SSL.html.
- Obtain and install CA and server certificates for the Directory Server from the external authority. Each CA will have its own path for requesting and receiving certificates.When importing the CA certificate into the Directory Server security databases in the Directory Server Console, make sure to allow the CA certificate to be trusted for both client and server authentication.
- In the Directory Server Console, open the Configuration tab and the Encryption subtab. Check the Enable SSL checkbox and select all the ciphers and certificates to use.
- At the bottom of the window, select the Allow client authentication radio button. Do not require client authentication. Requiring client authentication will prevent the Certificate System server from connecting to the Directory Server instance.
- Restart the Directory Server instance.
service dirsrv restart
- If necessary, export the Directory Server's CA certificate so it can be imported into the Certificate System security database. The CA certificate had to be imported into the Directory Server, so a copy should be available. If not, the CA certificate can be exported from the Directory Server Console or by using
certutil.certutil -L -d
/ldap/alias/directory-n "DS CA certificate" -A > cacert.crt - Import that Directory Server's CA certificate into the Certificate System security database. Importing the CA certificate allows the Certificate System instance to connect to the Directory Server over the secure port during its setup process.
# service
instance_namestop # certutil -A -i cacert.crt -t "CT,C,C" -n "CA_cert_nickname" -a -d /var/lib/instance_name/alias # serviceinstance_namestart - For the TPS only. After the CA is configured, and after the TPS is created but before it is configured, import the Directory Server's CA certificate into the TPS's security databases.
# certutil -A -i cacert.crt -t "CT,C,C" -n "
CA_cert_nickname" -a -d /var/lib/pki-tps/alias - Begin the instance setup. When the wizard comes to the section to configure the LDAP instance to use, supply the SSL port for the Directory Server instance and select the SSL checkbox.
- Optional. Configure SSL client authentication between the Certificate System and LDAP server. This is done after the instance is set up and is covered in the section in the Certificate System Administrator's Guide for configuring the LDAP database.
certutil. Once a new Certificate System CA is fully setup and configured, the Directory Server can then request permanent SSL certificates from the CA. The Directory Server instance and the CA must then be reconfigured to use the new, permanent certificates.
NOTE
- Configure the Red Hat Directory Server instance to run over SSL. This is described in detail in the SSL configuration chapter in the Directory Server 8.2 Administrator's Guide.
- Open the Directory Server instance's security directory.
cd /etc/dirsrv/slapd-
instanceThe Directory Server instance should have its security databases already set up in the/etc/dirsrv/slapd-instance directory. If these databases are missing for some reason, they can be created using thecertutilcommand.certutil -N -d .
- Generate temporary self-signed certificates for the Directory Server using
certutil. For example:certutil -S -n "Temporary CA certificate" -s "cn=Temporary CA cert,dc=example,dc=com" -2 -x -t "CT,," -m 1000 -v 120 -d . -k rsa certutil -S -n "Server-Cert" -s "cn=ldap.example.com" -c "Temporary CA certificate" -t "u,u,u" -m 1001 -v 120 -d . -k rsa
- Import the temporary server and CA certificates into the Directory Server using the Directory Server Console. When importing the CA certificate into the Directory Server security databases in the Directory Server Console, make sure to allow the CA certificate to be trusted for both client and server authentication.
- In the Directory Server Console, open the Configuration tab and the Encryption subtab. Check the Enable SSL checkbox and select all the ciphers and certificates to use. The only server certificate listed should be the temporary server certificate,
Server-Cert. - At the bottom of the window, select the Allow client authentication radio button. Do not require client authentication. Requiring client authentication will prevent the Certificate System server from connecting to the Directory Server instance.
- Restart the Directory Server instance.
service dirsrv restart
- Export that Directory Server's temporary CA certificate from its security database.
certutil -L -d
/ldap/alias/directory-n "Temporary CA certificate" -A > tempcacert.crt - Import that Directory Server's temporary CA certificate into the Certificate System security database. Importing the CA certificate allows the Certificate System instance to connect to the Directory Server over the secure port during its setup process.
# service
instance_namestop # certutil -A -i tempcacert.crt -t "CT,C,C" -n "Temporary CA certificate" -a -d /var/lib/instance_name/alias # serviceinstance_namestart - Begin the CA instance setup. When the wizard comes to the section to configure the LDAP instance to use, supply the SSL port for the Directory Server instance and select the SSL checkbox.
- Once the CA is configured, it can be used to issue new certificates to the Directory Server instance.
- Generate a new certificate request for the Directory Server. This must have the same certificate nickname as the original, temporary certificate.A certificate request can be generated in the Directory Server Console or using
certutil. For example:certutil -R -n "Server-Cert" -s "cn=ldap.example.com" -d
/ldap/alias/directory-a - Submit the generated certificate request through the CA's end-entities forms:
http
s://server.example.com:9444/ca/ee/ca - Log into the CA's agent forms as an agent, and approve the request. The process of approving certificates is covered in the Agent's Guide.
- When the request is approved, the agent form returns the base 64-encoded version of the new certificate. Copy and save this certificate, including the header and footer lines, to a file.
- Export the CA certificate so that it can be imported into the Directory Server.
certutil -L -d /var/lib/pki-ca/alias -n "CA certificate" -A > cacert.crt
- Stop the Directory Server.
service dirsrv stop
- Stop the CA.
service pki-ca stop
- Delete the temporary Server-Cert SSL certificate from the Directory Server's security database:
certutil -D -d
/ldap/alias/directory-n "Server-Cert" - Delete the temporary CA certificate from the Directory Server's security database:
certutil -D -d
/ldap/alias/directory-n "Temporary CA certificate" - Import the new, permanent Server-Cert SSL certificate into the Directory Server's security database:
certutil -A -i ldap-server.crt -t "u,u,u" -d
/ldap/alias/directory-n "Server-Cert" - Import the new, permanent CA signing certificate into the Directory Server's security database:
certutil -A -i casigning-b64.crt -t "CT,C,C" -d
/ldap/alias/directory-n "caSigningCert cert-pki-ca" - Start the Directory Server.
service dirsrv start
- Start the CA.
service pki-ca start
- For the TPS only. After the CA is configured, and after the TPS is created but before it is configured, import the Directory Server's CA certificate into the TPS's security databases. The TPS instance must be stopped before the certificates can be imported.
# service pki-tps stop # certutil -A -i cacert.crt -t "CT,C,C" -n "
CA_cert_nickname" -a -d /var/lib/pki-tps/alias # service pki-tps start - Optional. Configure SSL client authentication between each Certificate System subsystem instance and the LDAP server. This is done after the instance is set up and is covered in the section in the Certificate System Administrator's Guide for configuring the LDAP database.
pkicreate is run to create the subsystem instance.
cert8.db; the key database is named key3.db. These files are located in the instanceID/alias directory.
NOTE
- All system keys for a subsystem must be generated on the same token.
- The subsystem keys 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.
- A single HSM can be used to store certificates and keys for mulitple 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.
- LunaSA:
/usr/lunasa/lib/libCryptoki2.so - LunaSA:
/usr/lunasa/lib/libCryptoki2_64.so - nCipher:
/opt/nfast/toolkits/pkcs11/libcknfast.so
- Fast SSL 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.
IMPORTANT
CS.cfg file to configure the HSM. For example:
#RHCS supported modules preop.configModules.module0.commonName=NSS Internal PKCS #11 Module preop.configModules.module0.imagePath=../img/mozilla.png preop.configModules.module0.userFriendlyName=NSS Internal PKCS #11 Module preop.configModules.module1.commonName=nfast preop.configModules.module1.imagePath=../img/ncipher.png preop.configModules.module1.userFriendlyName=nCipher's nFast Token Hardware Module preop.configModules.module2.commonName=lunasa preop.configModules.module2.imagePath=../img/safenet.png preop.configModules.module2.userFriendlyName=SafeNet's LunaSA Token Hardware Module #selected token preop.module.token=Internal Key Storage Token
password.conf file for the HSM password. For example:
hardware-nethsm=caPassword
- Check that the LunaSA module has been properly installed:
modutil -dbdir /var/lib/
instance_name/alias -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/lunasa/lib/libCryptoki2_64.so slots: 1 slot attached status: loaded slot: LunaNet Slot token: lunasa3-caIf the LunaSA module isn't listed, then install the module manually:- Stop the subsystem.
service
instance_namestop - Load the module.
modutil -dbdir /var/lib/
instance_name/alias -nocertdb -add lunasa -libfile /usr/lunasa/lib/libCryptoki2_64.so - Verify that the module has been loaded.
modutil -dbdir /var/lib/
instance_name/alias -list - Start the subsystem.
service
instance_namestart
- Open the
/etc/Chrystoki.confconfiguration file. - Add this configuration parameter.
Misc { NetscapeCustomize=1023; } - If they are there, remove these two configuration lines for the applet version.
AppIdMajor=2; AppIdMinor=4;
- Stop the server.
service
instance_namestop - Edit the instance's
serverCertNick.conffile in the/var/lib/directory. Add the HSM token name to theinstance_name/confserverCertparameter.The original value only points to the server:Server-Cert
instanceIDThe new value includes a reference to the LunaSA HSM:lunasa3-ca:Server-Cert
instanceID - Start the server.
service
instance_namestart
modutil manually to add the module to the secmod.db database.
- Install the cryptographic device, using the manufacturer's instructions. Be sure to name the token something that will help identify it easily later.
- Install the PKCS #11 module using the
modutilcommand-line utility.- Open the
aliasdirectory for the subsystem which is being configured with the PKCS #11 module. For example:cd /var/lib/pki-ca/alias
- The required security module database file,
secmod.db, should be created by default when the subsystem is created. If it does not exist, use themodutilutility to createsecmod.db.modutil -dbdir . -nocertdb -create
- Use the
modutilutility to set the library information.modutil -dbdir . -nocertdb / -add
module_name-libfilelibrary_filelibrary_file specifies the path to the library file containing the PKCS #11 interface module and module_name gives the name of the PKCS #11 module which was set when the drivers were installed.- For the LunaSA HSM, the library can be
/usr/lunasa/lib/libCryptoki2_64.soor/usr/lunasa/lib/libCryptoki2.so:modutil -dbdir . -nocertdb -add lunasa -libfile /usr/lunasa/lib/libCryptoki2.so
- For an nCipher HSM:
modutil -dbdir . -nocertdb -add nethsm -libfile /opt/nfast/toolkits/pkcs11/libcknfast.so
IMPORTANT
/opt/nfast/bin/ksafe
IMPORTANT
- Install the SELinux packages for Certificate System.
yum install pki-selinux
- Reset the context of files in
/dev/nfastand/opt/nfastto match the newly-installed policy./sbin/restorecon -R /dev/nfast /sbin/restorecon -R /opt/nfast
- Restart the netHSM software.
modutil utility.
- Open the instance
aliasdirectory. For example:cd /var/lib/pki-ca/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
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-ca/alias
- Set up the HSM, as described in Section 8.1.2, “Using Hardware Security Modules with Subsystems” and the vendor documentation.
- Install and configure the CA instance.
- Stop the CA instance. The instance must be stopped to protect the information stored in its security databases.
service pki-ca stop
- Replace the SSL subsystem certificate. By default, the installation process puts the certificate on the hardware token, but it should be placed on the software FIPS token.
- Open the CA's security database directory.
cd /var/lib/pki-ca/alias
- Using
certutil, create a request for a new SSL server certificate.certutil -d . -R -s "CN=ca.example.com,OU=pki-ca,O=Example Domain pki-ca" -o sslfips.req -h "NSS Certificate DB" -a
- Restart the CA.
service pki-ca start
- Open the end entities pages for the CA (http
s://server.example.com:9444/ca/ee/ca), and use the SSL Server Cert Profile to submit the request. - Log into the agent pages (https://server.example.com:9443/ca/agent/ca), and approve the request.
- Copy the base 64-encoded certificate on the approval page and save it to a file, such as
sslfips.cert. - Stop the CA again.
service pki-ca stop
- Check the CA's certificate database to see if an SSL server certificate is already listed.
certutil -d /var/lib/pki-ca/alias -L
- If the certificate exists, then delete it.
certutil -d /var/lib/pki-ca/alias -D -n "ServerCert
nickname" - Import the new SSL server certificate.
certutil -d /var/lib/pki-ca/alias -A -t "u,u,u" -n "ServerCert ca.example.com - Example Domain pki-ca" -i sslfips.cert -a
- Edit the
/var/lib/pki-ca/conf/serverCertNick.conffile to contain the nickname of the new certificate, such as ServerCert ca.example.com - Example Domain pki-ca. - Edit the
CS.cfgfile to replace both references to the SSL server certificate nickname.vim /var/lib/pki-ca/conf/CS/cfg ca.cert.sslserver.nickname= ServerCert ca.example.com - Example Domain pki-ca ca.sslserver.nickname= ServerCert ca.example.com - Example Domain pki-ca
- In the
CS.cfgfile, add a line to verify signatures from the token. The value is the token name, which depends on the vendor and version of the HSM. For example, for a NetHSM token:ca.requestVerify.token=NHSM6000-OCS
- Edi the
server.xmlfile to enable FIPS mode for each SSL-enabled connector. SetstrictCiphtersto true and add or setssl3to false.vim /var/lib/pki-ca/conf/server.xml <Connector name="Agent" port="9443" maxHttpHeaderSize="8192" ... ... sslOptions="ssl2=false,ssl3=false,tls=true" strictCiphers="true" ... > - Enable FIPS mode in the NSS software database.
modutil -dbdir /var/lib/pki-ca/alias -fips true
- Verify that FIPS mode has been enabled. The command will return the current FIPS status.
modutil -dbdir /var/lib/pki-ca/alias modutil -dbdir . -chkfips true FIPS mode enabled. - Start the CA.
service pki-ca start
- Set up the HSM, as described in Section 8.1.2, “Using Hardware Security Modules with Subsystems” and the vendor documentation.
- Install and configure the instance.
- Stop the instance. The instance must be stopped to protect the information stored in its security databases.
service
instance_namestop - Replace the SSL subsystem certificate. By default, the installation process puts the certificate on the hardware token, but it should be placed on the software FIPS token.
- Open the instance's security database directory.
cd /var/lib/
instance_name/alias - Using
certutil, create a request for a new SSL server certificate.certutil -d . -R -s "CN=server.example.com,OU=
instance_name,O=Example Domaininstance_name" -o sslfips.req -h "NSS Certificate DB" -a - Open the end entities pages for the CA (http
s://server.example.com:9444/ca/ee/ca), and use the SSL Server Cert Profile to submit the request. - Log into the agent pages (https://server.example.com:9443/ca/agent/ca), and approve the request.
- Copy the base 64-encoded certificate on the approval page and save it to a file, such as
sslfips.cert. - Check the instance's certificate database to see if an SSL server certificate is already listed.
certutil -d /var/lib/
instance_name/alias -L - If the certificate exists, then delete it.
certutil -d /var/lib/
instance_name/alias -D -n "ServerCertnickname" - Import the new SSL server certificate.
certutil -d /var/lib/
instance_name/alias -A -t "u,u,u" -n "ServerCert server.example.com - Example Domaininstance_name" -i sslfips.cert -a - Edit the
/var/lib/file to contain the nickname of the new certificate, such as ServerCert server.example.com - Example Domaininstance_name/conf/serverCertNick.confinstance_name. - Edit the
CS.cfgfile to replace both references to the SSL server certificate nickname.vim /var/lib/
instance_name/conf/CS/cfgtype.cert.sslserver.nickname= ServerCert server.example.com - Example Domaininstance_nametype.sslserver.nickname= ServerCert server.example.com - Example Domaininstance_name - Edit the
server.xmlfile to enable FIPS mode for each SSL-enabled connector. SetstrictCiphtersto true and add or setssl3to false. For example:vim /var/lib/
instance_name/conf/server.xml <Connector name="Agent" port="11443" maxHttpHeaderSize="8192" ... ... sslOptions="ssl2=false,ssl3=false,tls=true" strictCiphers="true" ... > - Enable FIPS mode in the NSS software database.
modutil -dbdir /var/lib/
instance_name/alias -fips true - Verify that FIPS mode has been enabled. The command will return the current FIPS status.
modutil -dbdir /var/lib/
instance_name/alias modutil -dbdir . -chkfips true FIPS mode enabled. - Start the instance.
service
instance_namestart
- Set up the HSM, as described in Section 8.1.2, “Using Hardware Security Modules with Subsystems” and the vendor documentation.
- Install and configure the TPS.
- Stop the TPS. The instance must be stopped to protect the information stored in its security databases.
service pki-tps stop
- Replace the SSL subsystem certificate. By default, the installation process puts the certificate on the hardware token, but it should be placed on the software FIPS token.
- Open the instance's security database directory.
cd /var/lib/pki-tps/alias
- Using
certutil, create a request for a new SSL server certificate.certutil -d . -R -s "CN=tps.example.com,OU=pki-tps,O=Example Domain pki-tps" -o sslfips.req -h "NSS Certificate DB" -a
- Open the end entities pages for the CA (http
s://server.example.com:9444/ca/ee/ca), and use the SSL Server Cert Profile to submit the request. - Log into the agent pages (https://server.example.com:9443/ca/agent/ca), and approve the request.
- Copy the base 64-encoded certificate on the approval page and save it to a file, such as
sslfips.cert. - Check the instance's certificate database to see if an SSL server certificate is already listed.
certutil -d /var/lib/pki-tps/alias -L
- If the certificate exists, then delete it.
certutil -d /var/lib/pki-tps/alias -D -n "ServerCert
nickname" - Import the new SSL server certificate.
certutil -d /var/lib/pki-tps/alias -A -t "u,u,u" -n "ServerCert tps.example.com - Example Domain pki-tps" -i sslfips.cert -a
- Edit the
/var/lib/pki-tps/conf/serverCertNick.conffile to contain the nickname of the new certificate, such as ServerCert tps.example.com - Example Domain pki-tps. - Edit the
CS.cfgfile to replace both references to the SSL server certificate nickname.vim /var/lib/pki-tps/conf/CS/cfg tps.cert.sslserver.nickname= ServerCert server.example.com - Example Domain pki-tps tps.sslserver.nickname= ServerCert server.example.com - Example Domain pki-tps
- The
nss.conffile for the TPS contains a list of virtual servers for the different SSL listening ports for the TPS. Every SSL port must be configured to run under FIPS:- Turn on FIPS.
# FIPS Switch: # Enable/Disable FIPS mode NSSFIPS on
- Uncomment the FIPS cipher suite directive and comment out the standard directive.
# SSL Cipher Suite: # List the ciphers that the client is permitted to negotiate. # See the mod_nss documentation for a complete list. #NSSCipherSuite -des,-desede3,-rc2,-rc2export,-rc4,-rc4export,+rsa_3des_sha,-rsa_des_56_sha,+rsa_des_sha,-rsa_null_md5,-rsa_null_sha,-rsa_rc2_40_md5,+rsa_rc4_128_md5,-rsa_rc4_128_sha,-rsa_rc4_40_md5,-rsa_rc4_56_sha,-fortezza,-fortezza_rc4_128_sha,-fortezza_null,-fips_des_sha,+fips_3des_sha,-rsa_aes_128_sha,-rsa_aes_256_sha,+ecdhe_ecdsa_aes_256_sha # SSL cipher suite in FIPS mode: NSSCipherSuite +rsa_3des_sha,-rsa_des_sha,-rsa_rc4_40_md5,-rsa_rc2_40_md5,-rsa_null_md5,-rsa_null_sha,+fips_3des_sha,-fips_des_sha,-fortezza,-fortezza_rc4_128_sha,-fortezza_null,-rsa_des_56_sha,-rsa_rc4_56_sha,+rsa_aes_128_sha,+rsa_aes_256_sha
- For each SSL virtual host, turn off the setting to enforce valid certificates:
NSSEnforceValidCerts off
- Add or edit the line for the NSS FIPS database to the TPS's
password.conffile.vim /var/lib/pki-tps/conf/password.conf NSS FIPS 140-2 Certificate DB:mypassword
- Enable FIPS mode in the NSS software database.
modutil -dbdir /var/lib/pki-tps/alias -fips true
- Verify that FIPS mode has been enabled. The command will return the current FIPS status.
modutil -dbdir /var/lib/pki-tps/alias modutil -dbdir . -chkfips true FIPS mode enabled. - Start the TPS.
service pki-tps start
NOTE
Hit the enter key to complete the startup process or the TPS will not start.
IMPORTANT
enforcing mode to permissive mode to allow the module to function. Otherwise, any subsystem operations which require the ECC module will fail.
- Copy the third-party module to a common directory, like
/usr/libfor 32-bit systems or/usr/lib64for 64-bit systems. - Create a new instance by running
pkicreate, but do not go through the configuration wizard. - Stop the instance.
service
instance_namestop - The subsystem user runs as the
pkiuseruser. Asroot, create a home directory forpkiuser./usr/sbin/usermod --home /usr/share/pki/pkiuser pkiuser cd /usr/share/pki mkdir pkiuser HOME=/usr/share/pki/pkiuser export HOME
- Install the third-party module in the instance's security databases so it is available for the configuration.
cd /var/lib/
instance_name/alias modutil -dbdir . -nocertdb -addTHIRD_PARTY_MODULE-libfile /usr/lib/libYourNewModule.soThis creates a directory called THIRD_PARTY_MODULE in the new home directory created forroot(the newpkiuserhome directory). For example, if the module's name is EccForPki, then the directory is named.EccForPki/ - Using
modutil, set the password for the new ECC module token.modutil -dbdir . -nocertdb -changepw "
THIRD_PARTY_MODULE_TOKEN" - Change the ownership of the new home directory from
roottopkiuser.cd /usr/share/pki chown -R pkiuser:pkiuser pkiuser
- Add the password for the ECC token to the instance's password file.
vim /etc/
instance_name/password.conf hardware-THIRD_PARTY_MODULE_TOKEN=secretThehardware-prefix is required. - Edit the instance configuration and add a line to require signature verification. For example:
ca.requestVerify.token=
THIRD_PARTY_MODULE_TOKEN - Start the instance.
service
instance_namestart - Continue with the instance configuration, with two important configuration settings:
- In the Key Store panel, the ECC module should be listed as an available token. Select that module for the key store.
- In the Key Pairs panel, ECC should be listed as an option to use to generate the keys used for the CA's certificates. Select the ECC key type.
- After completing the configuration for the instance, assuming it is a Java subsystem, try to log into the console.
pkiconsole https://server.example.com:
admin_port/subsystem_typeThis fails, because the console is not yet configured to run with ECC enabled. However, this does create the security databases for the console, so the ECC module can be loaded. - Load the ECC module into the console security databases.
cd ~/.redhat-idm-console/ modutil -dbdir . -nocertdb -add
THIRD_PARTY_MODULE-libfile /usr/lib/libYourNewModule.soNow, logging into the console succeeds.
- Copy the third-party libraries to a common directory, like
/usr/libfor 32-bit systems or/usr/lib64for 64-bit systems.There are two library files for the Certicom ECC modules,libsbcpgse.soandlibsbgse2.so. - Cache the recent shared libraries.
ldconfig
- Install the instance, but do not go through the configuration wizard.
- Stop the instance.
service
instance_namestop - The instance runs as the
pkiuseruser. Asroot, create a home directory forpkiuser./usr/sbin/usermod --home /usr/share/pki/pkiuser pkiuser cd /usr/share/pki mkdir pkiuser HOME=/usr/share/pki/pkiuser export HOME
- Open the subsystem's
aliasdirectory. For example:cd /var/lib/
instance_name/alias - Install the third-party module in the CA's security databases so it is available for the configuration.
modutil -dbdir . -nocertdb -add certicom -libfile /usr/lib/libsbcpgse.so
This creates a.certicomdirectory in the newpkiuserhome directory. - Certicom's ECC module includes an initpin file; copy this into the new
pkiuserdirectory and give it execute permissions. For example:cp /tmp/initpin /usr/share/pki/pkiuser chmod +x initpin
- Run Certicom's
initpinfile from the/usr/share/pki/pkiuserdirectory. This first prompts for the directory to use for the Certicom token databases; use thepkiuserhome directory,/usr/share/pki/pkiuser. This also prompts to set a password for the module, and then proceed with configuring the module./usr/share/pki/pkiuser/initpin Please enter the directory where the token databases exist or will be created: /usr/share/pki/pkiuser Enter PIN: Confirm PIN: Security Builder API for PKCS #11 Samples CryptoAes() success CryptoArc4() success CryptoDes() success CryptoDh() success CryptoDsa() success CryptoEcdh() success CryptoEcdsa() success CryptoEcmqv() success CryptoPkcs1Enc() success CryptoPkcs1Sig() success CryptoRsaEnc() success CryptoRsaSig() success CryptoSha1() success Token() samples starting Slot info for Slot 0 Desc: FIPS Generic Crypto Services V2.0.1d manufacturerID: Certicom Corp. flags: 0x1 CKF_TOKEN_PRESENT hardwareVersion: 1.0 ... - Edit the
pkiuser's home directory so that every file is owned bypkiuser.cd /usr/share/pki; chown -R pkiuser:pkiuser pkiuser
- List the Certicom ECC module to make sure it has been properly loaded. The module is in security databases in the subsystem's
aliasdirectory. For example:modutil -dbdir /var/lib/
instance_name/alias -list certicom - Add the password for the ECC token to the subsystem's password file. Escape any spaces or special characters in the name. For example:
vim /etc/
instance_name/password.conf hardware-Certicom\ FIPS\ Cert/Key\ Services=secretThehardware-prefix is required. - Edit the instance configuration and add a line to require signature verification. In this file, spaces and special characters do not need to be escaped. For example:
ca.requestVerify.token=Certicom FIPS Cert/Key Services
- Edit file
dtomcat5-instance file for the subsystem in the/usr/bindirectory, and add a line to use the ECC module.umask 00002
NSS_USE_DECODED_CKA_EC_POINT=1export NSS_USE_DECODED_CKA_EC_POINT - Start the instance.
service
instance_namestart - Continue with the instance configuration, with two important configuration settings:
- In the Key Store panel, the ECC module should be listed as an available token. Select that module for the key store.
- In the Key Pairs panel, ECC should be listed as an option to use to generate the keys used for the CA's certificates. Select the ECC key type.
- After completing the configuration, assuming this is a Java subsystem, try to log into the subsystem console.
pkiconsole https://server.example.com:
admin_port/subsystem_typeThis fails, because the console is not yet configure to run in ECC. However, this does create the security databases for the console, so the ECC module can be loaded.Load the ECC module into the console security databases.cd ~/.redhat-idm-console/ modutil -dbdir . -nocertdb -add certicom -libfile /usr/lib/libsbcpgse.so
Now, logging into the console succeeds. - The web browser used to access administrative and agent services pages also needs to be configured to support ECC.
- Create a user for the browser profile, such as
agent-pki. - Launch Firefox and create a profile for this user; this automatically creates the required security databases and directory.
- Set the
roothome directory to/home/agent-pki, and make sure the directory is owned byroot.chown -R root:root /home/agent-pki
- Copy the ECC module libraries and
initpinfile to the/home/agent-pkidirectory. All these files should be owned byroot. - Load the ECC module.
modutil -dbdir /home/agent-pki/.mozilla/
profile.default -nocertdb -add certicom -libfile /usr/lib/libsbcpgse.so - Run the
initpinfile. When prompted, enter the Certicom token database directory,/usr/share/pki/pkiuser, and enter the PIN configured for those databases../initpin
- Change the ownership of the new user's home directory from
rootto the user. For example:chown -R agent-pki:agent-pki /home/agent-pki
- In the terminal with the
/home/agent-pkidirectory open, export the environment variable that allows ECC support.export NSS_USE_DECODED_CKA_EC_POINT=1
- Open Firefox again. The Certicom module should be available and you should be able to log into it successfully.
- Then, import the agent certificate and root CA certificate or certificate chain into Firefox so that the user profile can access the agent services pages.
- The
NSS_USE_DECODED_CKA_EC_POINTenvironment variable also needs to be set to access the subsystem Java console with an ECC certificate. This can be set in the.bashrcfile for the user who uses the console. For example:[root@server ~]# vim /home/jsmith/.bashrc # User specific aliases and functions
NSS_USE_DECODED_CKA_EC_POINT=1export NSS_USE_DECODED_CKA_EC_POINT - Configure the appropriate SELinux policies and settings.
- The Certicom ECC library stores some of its data in the user's home directory. However, this directory is not defined in the Certificate System SELinux file contexts, so some operations could be prevented from accessing the libraries. To avoid this, relabel the files to allow the appropriate SELinux context so that the subsystem processes can access the libraries. For example:
[root@server ~]# /usr/sbin/semanage fcontext -a -t pki_ca_t /usr/share/pki/pki.db
- Update the contexts to allow the Certicom client to have write access to the Certificate System user directory, so it can maintain the Certicom libraries.
[root@server ~]# /usr/sbin/semanage fcontext -a -t pki_common_t /usr/share/pki/.certicom\(/.*\)? [root@server ~]# restorecon -r -v /usr/share/pki/.certicom
- Then, enable enforcing mode by setting the
SELINUXparameter in the SELinux configuration file.[root@server ~]# vim /etc/selinux/config SELINUX=enforcing
- Install the cryptographic device, using the manufacturer's instructions. Be sure to name the token something that will help identify it easily later.
- Install the PKCS #11 module on the subsystem using the
modutilcommand-line utility.- Open the
aliasdirectory for the subsystem which is being configured with the PKCS #11 module:cd /var/lib/
instance_name/alias - The required security module database file,
secmod.db, should be created by default when the subsystem is created. If it does not exist, use themodutilutility to createsecmod.db.modutil -dbdir . -nocertdb -create
- Use the
modutilutility to set the library information.modutil -dbdir . -nocertdb / -add
module_name-libfilelibrary_filelibrary_file specifies the path to the library file containing the PKCS #11 interface module and module_name gives the name of the PKCS #11 module which was set when the drivers were installed.- For the LunaSA HSM, the library can be
/usr/lunasa/lib/libCryptoki2_64.soor/usr/lunasa/lib/libCryptoki2.so:modutil -dbdir . -nocertdb -add lunasa -libfile /usr/lunasa/lib/libCryptoki2.so
- For an nCipher HSM:
modutil -dbdir . -nocertdb -add nethsm -libfile /opt/nfast/toolkits/pkcs11/libcknfast.so
- Install the instance, but do not go through the configuration wizard.
- Stop the instance.
service
instance_namestop - Edit the
CS.cfgconfiguration and add a line to require signature verification. In this file, spaces and special characters do not need to be escaped. For example:ca.requestVerify.token=
module name - Start the instance.
service
instance_namestart - Continue with the instance configuration, with two important configuration settings:
- In the Key Store panel, the ECC module should be listed as an available token. Select that module for the key store.
- In the Key Pairs panel, ECC should be listed as an option to use to generate the keys used for the CA's certificates. Select the ECC key type.
- 10.1. About Cloning
- 10.2. Exporting Keys from a Software Database
- 10.3. Cloning a CA
- 10.4. Updating CA-DRM Connector Information After Cloning
- 10.5. Cloning OCSP Subsystems
- 10.6. Cloning DRM Subsystems
- 10.7. Cloning TKS Subsystems
- 10.8. Converting Masters and Clones
- 10.9. Cloning a CA That Has Been Re-Keyed
- 10.10. Updating CA Clones
NOTE
- DNS round-robin, a feature for managing network congestion that distributes load across several different servers.
- Sticky SSL, which makes it possible for a user returning to the system to be routed the same host used previously.
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
CS.cfg file for the clone. Clones can revoke, display, import, and download CRLs previously generated by master CAs, but having them generate new CRLs may cause synchronization problems. Only a single CA should generate CRLs, and this task is always left to the master CA, which also maintains the CRL cache.
TIP
IMPORTANT
CS.cfg file — such as adding a DRM connection or creating a custom profile — are not copied into a clone's configuration if the change occurs after the clone is created.
alias/ directory for the clone instance. Then, the PKCS#12 filename is given in the Restore Keys and Certificates screen during the clone's configuration.
- Duplicate all the required keys and certificates, except the SSL 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.
NOTE
- If the master uses SSL to connect to its database, then the clone uses SSL, and the master/clone Directory Server databases use SSL 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 connections, so it must have a server certificate and a CA certificate installed on the Directory Server and SSL must be enabled.
IMPORTANT
dbs.beginReplicaNumber=1 dbs.endReplicaNumber=95
CS.cfg file — outside the replicated database.
CS.cfg file, but this connector information is not added to the clone CA configuration. If the DRm sends a key archival request to the master CA, the DRM is recognized and the request is approved. If the same DRM sends its key archival request to the clone CA, the DRM is not recognized and the key archival request is ignored.
TIP
PKCS12Export command. For example:
PKCS12Export -debug -d /var/lib/instance_name/alias -w p12pwd.txt -p internal.txt -o master.p12master.p12) can then be copied to the clone instance's alias/ directory and imported during the clone configuration.
NOTE
- 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:cd /etc/
instance_nameca.listenToCloneModifications=true - Create the clone subsystem instance.
IMPORTANT
Do not go through the setup wizard for the instance yet. - Copy the exported PKCS#12 file containing the master instance's keys to the clone's
alias/directory.The keys for the master instance could have been exported to a.p12file when the instance was configured. Alternatively, the keys can be exported using thePKCS12Exportcommand, as in Section 10.2, “Exporting Keys from a Software Database”. - Make sure the PKCS#12 file is accessible by the Certificate System user. If necessary, change the file owner to
pkiuserand reset the permissions to allow the correct read/write access. For example:chown pkiuser:pkiuser example.p12 chmod 00644 example.p12
- It may be necessary to reset the SELinux permissions for the exported file so that the setup program can use it. First, check what context is assigned:
ls -lZ * -rw-------. pkiuser pkiuser system_u:object_r:pki_ca_var_lib_t:s0 cert8.db -rw-------. pkiuser pkiuser system_u:object_r:pki_ca_var_lib_t:s0 key3.db -rw-r--r--. pkiuser pkiuser
system_u:object_r:nfs_t:s0 example.p12-rw-------. pkiuser pkiuser system_u:object_r:pki_ca_var_lib_t:s0 secmod.dbIf it does not match the other security files, then reset the SELinux context to that of the other objects usingchcon:chcon "system_u:object_r:pki_ca_var_lib_t:s0" example.p12 ls -lZ * -rw-------. pkiuser pkiuser system_u:object_r:pki_ca_var_lib_t:s0 cert8.db -rw-------. pkiuser pkiuser system_u:object_r:pki_ca_var_lib_t:s0 key3.db -rw-r--r--. pkiuser pkiuser
system_u:object_r:pki_ca_var_lib_t:s0 example.p12-rw-------. pkiuser pkiuser system_u:object_r:pki_ca_var_lib_t:s0 secmod.db - Open the setup wizard URL, which was returned when the instance was created. For example:
http://server.example.com:9180/ca/admin/console/config/login?pin=HIsd90RJSioDK==
- In the Security Domain panel, add the clone to the same security domain to which the master belongs.
- The Subsystem Type panel sets whether to create a new instance or a clone; select the clone radio button.

- Give the path and filename of the PKCS #12 backup file which was saved when the master instance was created or that were exported in 4.If the keys are stored on an HSM that is accessible to the clone, then they are picked up automatically.

NOTE
When cloning a CA, the master and clone instances have the same CA signing key. - The subsystem information is automatically supplied from the master instance to the clone instance once the keys are successfully restored. Complete the configuration process.When configuring the LDAP database, there are three critical configuration changes that must be made:
- The clone must use a different Directory Server instance but must have the same suffix name.
- By default, the instance configuration wizard uses
localhostas the location for the internal LDAP database for a new instance. However, with cloning, the configuration process will spin endlessly and never complete if localhost is used for the internal database location, even if the LDAP database is indeed installed on the localhost.Use the fully-qualified domain name for the LDAP database in the Internal Database panel when configuring a clone. - The subsystem can connect to its database over a special secure port using SSL or over the regular port. However, the clone can only use a secure connection if the master was first set up to use a secure connection to the database, and it must use the same type of connection (SSL or unencrypted) as the master. If the master and clone use a regular, unencrypted connection, then the clone has the option to use Start TLS (a secure connection over an unsecure port) for replication between the master Directory Server database and the clone database.
IMPORTANT
Even if the clone connects to the master over a secure connection, the standard LDAP port (389 by default) must still be open and enabled on the LDAP server while cloning is configured.For secure environments, the standard LDAP port can be disabled on the master's Directory Server instance once the clone is configured.
- Edit the
CS.cfgfile for the clone. Certain parameters must be added to the clone configuration to disable caching and generating CRLs.- 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 - Enable the clone to redirect CRL requests to the master clone:
master.ca.agent.host=
master_hostnamemaster.ca.agent.port=master_port
- Restart the Directory Server instance used by the clone.
service
instance_namerestartdrm-clone-ds-instanceNOTE
Restarting the Directory Server reloads the updated schema, which is required for proper performance. - Restart the clone instance.
service
instance_namerestart
- 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.
- On the master clone machine, open the master CA's
CS.cfgfile, and copy all of theca.connector.KRA.*lines for the new DRM connector.[root@master ~]# vim /var/lib/pki-ca/conf/CS.cfg
- Stop the clone CA instance. For example:
[root@clone-ca ~] service pki-ca stop
- Open the clone CA's
CS.cfgfile.[root@clone-ca ~]# vim /var/lib/pki-ca/conf/CS.cfg
- Copy in the connector information for the new DRM 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 ~] service pki-ca start
- 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.
IMPORTANT
Do not go through the setup wizard for the instance yet. - Copy the exported PKCS#12 file containing the master instance's keys to the clone's
alias/directory.The keys for the master instance could have been exported to a.p12file when the instance was configured. Alternatively, the keys can be exported using thePKCS12Exportcommand, as in Section 10.2, “Exporting Keys from a Software Database”. - Make sure the PKCS#12 file is accessible by the Certificate System user. If necessary, change the file owner to
pkiuserand reset the permissions to allow the correct read/write access. For example:chown pkiuser:pkiuser example.p12 chmod 00644 example.p12
- It may be necessary to reset the SELinux permissions for the exported file so that the setup program can use it. First, check what context is assigned:
ls -lZ * -rw-------. pkiuser pkiuser system_u:object_r:pki_ocsp_var_lib_t:s0 cert8.db -rw-------. pkiuser pkiuser system_u:object_r:pki_ocsp_var_lib_t:s0 key3.db -rw-r--r--. pkiuser pkiuser
system_u:object_r:nfs_t:s0 example.p12-rw-------. pkiuser pkiuser system_u:object_r:pki_ocsp_var_lib_t:s0 secmod.dbIf it does not match the other security files, then reset the SELinux context to that of the other objects usingchcon:chcon "system_u:object_r:pki_ocsp_var_lib_t:s0" example.p12 ls -lZ * -rw-------. pkiuser pkiuser system_u:object_r:pki_ocsp_var_lib_t:s0 cert8.db -rw-------. pkiuser pkiuser system_u:object_r:pki_ocsp_var_lib_t:s0 key3.db -rw-r--r--. pkiuser pkiuser
system_u:object_r:pki_ocsp_var_lib_t:s0 example.p12-rw-------. pkiuser pkiuser system_u:object_r:pki_ocsp_var_lib_t:s0 secmod.db - Open the setup wizard URL, which was returned when the instance was created. For example:
http://server.example.com:11180/ocsp/admin/console/config/login?pin=IOjh7fIOjkld90k
- In the Security Domain panel, add the clone to the same security domain to which the master belongs.
- The Subsystem Type panel sets whether to create a new instance or a clone; select the clone radio button.

- Give the path and filename of the PKCS #12 backup file which was saved when the master instance was created or that were exported in 3.If the keys are stored on an HSM that is accessible to the clone, then they are picked up automatically.

- The subsystem information is automatically supplied from the master instance to the clone instance once the keys are successfully restored. Complete the configuration process.When configuring the LDAP database, there are three critical configuration changes that must be made:
- The clone must use a different Directory Server instance but must have the same suffix name.
- By default, the instance configuration wizard uses
localhostas the location for the internal LDAP database for a new instance. However, with cloning, the configuration process will spin endlessly and never complete if localhost is used for the internal database location, even if the LDAP database is indeed installed on the localhost.Use the fully-qualified domain name for the LDAP database in the Internal Database panel when configuring a clone. - The subsystem can connect to its database over a special secure port using SSL or over the regular port. However, the clone can only use a secure connection if the master was first set up to use a secure connection to the database, and it must use the same type of connection (SSL or unencrypted) as the master. If the master and clone use a regular, unencrypted connection, then the clone has the option to use Start TLS (a secure connection over an unsecure port) for replication between the master Directory Server database and the clone database.
IMPORTANT
Even if the clone connects to the master over a secure connection, the standard LDAP port (389 by default) must still be open and enabled on the LDAP server while cloning is configured.For secure environments, the standard LDAP port can be disabled on the master's Directory Server instance once the clone is configured.
- Edit the
CS.cfgfile for the clone. Set theOCSP.Responder.store.defStore.refreshInSecparameter in the clone instance to21600.vim /etc/
instance_name/CS.cfg OCSP.Responder.store.defStore.refreshInSec=21600 - Restart the Directory Server instance used by the clone.
service
instance_namerestartNOTE
Restarting the Directory Server reloads the updated schema, which is required for proper performance. - Restart the clone instance.
service
instance_namestart
- 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.
- Configure the master subsystem, and back up the keys.
- Create the clone subsystem instance.
IMPORTANT
Do not go through the setup wizard for the instance yet. - Copy the exported PKCS#12 file containing the master instance's keys to the clone's
alias/directory.The keys for the master instance could have been exported to a.p12file when the instance was configured. Alternatively, the keys can be exported using thePKCS12Exportcommand, as in Section 10.2, “Exporting Keys from a Software Database”. - Make sure the PKCS#12 file is accessible by the Certificate System user. If necessary, change the file owner to
pkiuserand reset the permissions to allow the correct read/write access. For example:chown pkiuser:pkiuser example.p12 chmod 00644 example.p12
- It may be necessary to reset the SELinux permissions for the exported file so that the setup program can use it. First, check what context is assigned:
ls -lZ * -rw-------. pkiuser pkiuser system_u:object_r:pki_kra_var_lib_t:s0 cert8.db -rw-------. pkiuser pkiuser system_u:object_r:pki_krs_var_lib_t:s0 key3.db -rw-r--r--. pkiuser pkiuser
system_u:object_r:nfs_t:s0 example.p12-rw-------. pkiuser pkiuser system_u:object_r:pki_kra_var_lib_t:s0 secmod.dbIf it does not match the other security files, then reset the SELinux context to that of the other objects usingchcon:chcon "system_u:object_r:pki_kra_var_lib_t:s0" example.p12 ls -lZ * -rw-------. pkiuser pkiuser system_u:object_r:pki_kra_var_lib_t:s0 cert8.db -rw-------. pkiuser pkiuser system_u:object_r:pki_kra_var_lib_t:s0 key3.db -rw-r--r--. pkiuser pkiuser
system_u:object_r:pki_kra_var_lib_t:s0 example.p12-rw-------. pkiuser pkiuser system_u:object_r:pki_kra_var_lib_t:s0 secmod.db - Open the setup wizard URL, which was returned when the instance was created. For example:
http://server.example.com:10180/kra/admin/console/config/login?pin=Jhu7HBJiodljnw3oijs
- In the Security Domain panel, add the clone to the same security domain to which the master belongs.
- The Subsystem Type panel sets whether to create a new instance or a clone; select the clone radio button.

- Give the path and filename of the PKCS #12 backup file which was saved when the master instance was created or that were exported in 3.If the keys are stored on an HSM that is accessible to the clone, then they are picked up automatically.

NOTE
When cloning a DRM, the master and clone instances have the same storage and transport keys. - The subsystem information is automatically supplied from the master instance to the clone instance once the keys are successfully restored. Complete the configuration process.When configuring the LDAP database, there are three critical configuration changes that must be made:
- The clone must use a different Directory Server instance but must have the same suffix name.
- By default, the instance configuration wizard uses
localhostas the location for the internal LDAP database for a new instance. However, with cloning, the configuration process will spin endlessly and never complete if localhost is used for the internal database location, even if the LDAP database is indeed installed on the localhost.Use the fully-qualified domain name for the LDAP database in the Internal Database panel when configuring a clone. - The subsystem can connect to its database over a special secure port using SSL or over the regular port. However, the clone can only use a secure connection if the master was first set up to use a secure connection to the database, and it must use the same type of connection (SSL or unencrypted) as the master. If the master and clone use a regular, unencrypted connection, then the clone has the option to use Start TLS (a secure connection over an unsecure port) for replication between the master Directory Server database and the clone database.
IMPORTANT
Even if the clone connects to the master over a secure connection, the standard LDAP port (389 by default) must still be open and enabled on the LDAP server while cloning is configured.For secure environments, the standard LDAP port can be disabled on the master's Directory Server instance once the clone is configured.
- Restart the Directory Server instance used by the clone.
service
instance_namerestartNOTE
Restarting the Directory Server reloads the updated schema, which is required for proper performance. - Restart the clone instance.
service
instance_namerestart
- Go to the DRM agent's page.
- Click List Requests.
- Select Show all requests for the request type and status.
- Click .
- Compare the results from the cloned DRM and the master DRM. The results ought to be identical.
- Configure the master subsystem, and back up the keys.
- Create the clone subsystem instance.
IMPORTANT
Do not go through the setup wizard for the instance yet. - Copy the exported PKCS#12 file containing the master instance's keys to the clone's
alias/directory.The keys for the master instance could have been exported to a.p12file when the instance was configured. Alternatively, the keys can be exported using thePKCS12Exportcommand, as in Section 10.2, “Exporting Keys from a Software Database”. - Make sure the PKCS#12 file is accessible by the Certificate System user. If necessary, change the file owner to
pkiuserand reset the permissions to allow the correct read/write access. For example:chown pkiuser:pkiuser example.p12 chmod 00644 example.p12
- It may be necessary to reset the SELinux permissions for the exported file so that the setup program can use it. First, check what context is assigned:
ls -lZ * -rw-------. pkiuser pkiuser system_u:object_r:pki_tks_var_lib_t:s0 cert8.db -rw-------. pkiuser pkiuser system_u:object_r:pki_tks_var_lib_t:s0 key3.db -rw-r--r--. pkiuser pkiuser
system_u:object_r:nfs_t:s0 example.p12-rw-------. pkiuser pkiuser system_u:object_r:pki_tks_var_lib_t:s0 secmod.dbIf it does not match the other security files, then reset the SELinux context to that of the other objects usingchcon:chcon "system_u:object_r:pki_tks_var_lib_t:s0" example.p12 ls -lZ * -rw-------. pkiuser pkiuser system_u:object_r:pki_tks_var_lib_t:s0 cert8.db -rw-------. pkiuser pkiuser system_u:object_r:pki_tks_var_lib_t:s0 key3.db -rw-r--r--. pkiuser pkiuser
system_u:object_r:pki_tks_var_lib_t:s0 example.p12-rw-------. pkiuser pkiuser system_u:object_r:pki_tks_var_lib_t:s0 secmod.db - Open the setup wizard URL, which was returned when the instance was created. For example:
http://server.example.com:13180/tks/admin/console/config/login?pin=Jhu7HBJiodljnw3oijs
- In the Security Domain panel, add the clone to the same security domain to which the master belongs.
- The Subsystem Type panel sets whether to create a new instance or a clone; select the clone radio button.

- Give the path and filename of the PKCS #12 backup file which was saved when the master instance was created or that were exported in step 3.If the keys are stored on an HSM that is accessible to the clone, then they are picked up automatically.

- The subsystem information is automatically supplied from the master instance to the clone instance once the keys are successfully restored. Complete the configuration process.When configuring the LDAP database, there are three critical configuration changes that must be made:
- The clone must use a different Directory Server instance but must have the same suffix name.
- By default, the instance configuration wizard uses
localhostas the location for the internal LDAP database for a new instance. However, with cloning, the configuration process will spin endlessly and never complete if localhost is used for the internal database location, even if the LDAP database is indeed installed on the localhost.Use the fully-qualified domain name for the LDAP database in the Internal Database panel when configuring a clone. - The subsystem can connect to its database over a special secure port using SSL or over the regular port. However, the clone can only use a secure connection if the master was first set up to use a secure connection to the database, and it must use the same type of connection (SSL or unencrypted) as the master. If the master and clone use a regular, unencrypted connection, then the clone has the option to use Start TLS (a secure connection over an unsecure port) for replication between the master Directory Server database and the clone database.
IMPORTANT
Even if the clone connects to the master over a secure connection, the standard LDAP port (389 by default) must still be open and enabled on the LDAP server while cloning is configured.For secure environments, the standard LDAP port can be disabled on the master's Directory Server instance once the clone is configured.
- Restart the clone instance.
service
instance_namerestart
ldapsearch to make sure that the same key information is contained in both databases.
- Stop the master CA if it is still running.
- Open the existing master CA configuration directory:
cd /var/lib/pki-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_hostnamemaster.ca.agent.port=new_master_port
- Stop the cloned CA server.
service
instance_namestop - 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=
hostnamemaster.ca.agent.port=port number
- Start the new master CA server.
service
instance_namestart
- 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.
service
instance_namestop - 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.
service
instance_namestart
CS.cfg configuration file — and those keys are not updated when the certificate database keys change.
CertUtil::createSelfSignedCert() - CA private key is null!
- Find all of the private keys in the
CS.cfgfile.# grep privkey.id /var/lib/pki-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 keys stored in the NSS database and compare them to the private keys 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-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.3, “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.javaCS.cfg is also copied to the clone CA. This includes any DRMs which are configured for the CA to use for key archival. However, if a DRM is configured for a master CA after a clone is created, then the new DRM configuration must be copied over to the clone CAs manually.
- Stop the clone CA.
service
instance_namestopAlways stop a subsystem instance before editing its configuration files. - Copy all of the
ca.connecter.KRA.*parameters for the new DRM connection in theCS.cfgfor the master CA over to the clone CACS.cfgfile. - Restart the clone CA.
service
instance_namerestart
pkisilent, which configures an instance in a single step. Normally, instances are configured by accessing the subsystem HTML page and going through the setup wizard. pkisilent can be used to pass all of the configuration parameters to a new instance simply from the command line.
NOTE
pkisilent script is downloaded and installed in its own package.
pkisilent command.
pkisilent command can configure the subsystem instance the same as if it were configured using the HTML-based configuration wizard, so it can create a new security domain or use an existing one, back up keys, create a clone, or use certificates issued by an external CA.
pkisilent command has groups of parameters that define major areas of the subsystem's default settings and users.
/usr/share/pki/silent/pki_silent.template and /usr/share/pki/silent/subca_silent.template. Both of these templates have detailed information on parameters and usage options for pkisilent.
Example 11.1. pkisilent Command
pkisilent Configuretype-parameters to configure the subsystem URL...-parameters to configure the admin user...-parameters to configure the domain...-parameters to configure the agent...-parameters to configure the internal database...-parameters to configure the subsystem keys, certificates, and key store
pkisilent command are listed in Table 11.1, “Parameters for pkisilent”.
TIP
/usr/share/pki/silent/pki_silent.template and /usr/share/pki/silent/subca_silent.template. Both of these templates have detailed information on parameters and usage options for pkisilent.
Configuretype option, just run the pkisilent command with the Configuretype option and the -help flag. For example, to get the help for configuring a subordinate CA:
pkisilent ConfigureSubCA -help
Configuretype option sets what kind of subsystem is being configured. This can be any of the following:
- ConfigureCA (for a root CA) or ConfigureSubCA (for a subordinate CA)
- ConfigureRA
- ConfigureDRM
- ConfigureOCSP
- ConfigureTKS
- ConfigureTPS
Table 11.1. Parameters for pkisilent
| Parameter | Description | |||||
|---|---|---|---|---|---|---|
| Basic Instance Configuration | ||||||
| cs_hostname | The hostname for the Certificate System machine. | |||||
| cs_port | The administrative SSL port number of the Certificate System instance. | |||||
| subsystem_name | Sets the name of the new subsystem instance. | |||||
| client_certdb_dir | The directory for the subsystem certificate databases. | |||||
| client_certdb_pwd | The password to protect the certificate database. | |||||
| preop_pin |
The preoperation PIN number used for the initial configuration. This PIN is part of the output of pkicreate, at the end of the configuration URL. It can also be found in the URL in the installation file for the instance (/var/log/pki-).
| |||||
| token_name | Gives the name of the HSM token used to store the subsystem certificates. This is only required for hardware tokens; if this parameter is not given, then the script automatically uses the local software token. | |||||
| token_pwd | Gives the password for the HSM. | |||||
| Agent and Admin User Configuration | ||||||
| admin_user | The new admin user for the new subsystem. | |||||
| admin_email | The email address of the admin user. | |||||
| admin_password | The password for the admin user. | |||||
| agent_key_size | The key size to use for generating the agent certificate and key pair. | |||||
| agent_key_type | The key type to use for generating the agent certificate and key pair. | |||||
| agent_cert_subject | The subject name for the agent certificate. | |||||
| Security Domain Configuration | ||||||
| domain_name | The name of the security domain to which the subsystem will be added. | |||||
| sd_hostname | The hostname of the CA which hosts security domain. | |||||
| sd_admin_port | The administrative SSL port of the CA which hosts security domain. | |||||
| sd_agent_port | The agent SSL port of the CA which hosts security domain. | |||||
| sd_ssl_port | The end-entities SSL port of the CA which hosts security domain. | |||||
| sd_admin_name | The username of the administrative user for the CA hosting the security domain. | |||||
| sd_admin_password | The password of the administrative user for the CA hosting the security domain. | |||||
| Internal Database Configuration | ||||||
| ldap_host | The hostname of the Directory Server machine. | |||||
| ldap_port | The non-SSL port of the Directory Server. | |||||
| bind_dn | The bind DN which will access the Directory Server; this is normally the Directory Manager ID. | |||||
| bind_password | The bind DN password. | |||||
| base_dn | The entry DN under which to create all of the subsystem entries. | |||||
| db_name | The database name. | |||||
| secure_conn | Whether to use SSL to connect to the internal database. This is either true or false. | |||||
| remove_data | Whether to overwrite the data if a database of the same name exsits. | |||||
| Subsystem Certificates and Keys Configuration | ||||||
| key_size | The size of the key to generate. The recommended size for an RSA key is 1048 bits for regular operations and 2048 bits for sensitive operations. | |||||
| key_type | The type of key to generate; the only option is RSA. | |||||
| key_algorithm |
The hashing algorithm to use for the key pair. This is only used for root CA subsystems; hashing algorithms for other subsystems and sub CAs are set by editing the certificate profile. For RSA:
For ECC:
| |||||
| key_curvename |
For ECC keys. The curve to use for the key. The default is nistp256.
| |||||
|
For CA signing certificates. CAs only. Sets the specific settings to generate a CA signing key and certificate.
The
key_type, key_size, key_algorithm, and key_curvename parameters apply to every key and certificate generated by a susbsystem. However, each individual key can have its own parameters set separately. The parameters available to key_type, key_size, key_algorithm, and key_curvename apply to the CA signing key parameters.
| |||||
|
For OCSP signing certificates. CAs and OCSPs. Sets the specific settings to generate an OCSP signing key and certificate.
The
key_type, key_size, key_algorithm, and key_curvename parameters apply to every key and certificate generated by a susbsystem. However, each individual key can have its own parameters set separately. The parameters available to key_type, key_size, key_algorithm, and key_curvename apply to the OCSP signing key parameters.
| |||||
|
For audit signing certificates. For CA, DRM, OCSP, TKS, and TPS. Sets the specific settings to generate an audit log signing key and certificate.
The only supported key type for audit certificates is RSA.
The
key_type, key_size, key_algorithm, and key_curvename parameters apply to every key and certificate generated by a susbsystem. However, each individual key can have its own parameters set separately. The parameters available to key_type, key_size, key_algorithm, and key_curvename apply to the audit log signing key parameters.
| |||||
|
For subsystem client certificates. For all subsystems. Sets the specific settings to generate an SSL client key and certificate.
The
key_type, key_size, key_algorithm, and key_curvename parameters apply to every key and certificate generated by a susbsystem. However, each individual key can have its own parameters set separately. The parameters available to key_type, key_size, key_algorithm, and key_curvename apply to the SSL client key parameters.
| |||||
|
For server certificates. For all subsystems. Sets the specific settings to generate an SSL server key and certificate.
The
key_type, key_size, key_algorithm, and key_curvename parameters apply to every key and certificate generated by a susbsystem. However, each individual key can have its own parameters set separately. The parameters available to key_type, key_size, key_algorithm, and key_curvename apply to the SSL server key parameters.
| |||||
| save_p12 |
Sets whether to export the keys and certificate information to a backup PKCS #12 file. true backs up the information; false does not back up the information. Only for the CA subsystem.
| |||||
| backup_pwd | The password to protect the PKCS #12 backup file containing the subsystem keys and certificates. Not for use with TPS installation. | |||||
| backup_fname | The file to which to export the the PKCS #12 backup file. | |||||
| The subject names for the CA subsystem certificates. | |||||
| The subject names and nicknames for the RA subsystem certificates. | |||||
| The subject names for the OCSP subsystem certificates. | |||||
| The subject names for the DRM subsystem certificates. | |||||
| The subject names for the TKS subsystem certificates. | |||||
| The subject names and nicknames for the TPS subsystem certificates. | |||||
| Required Subsystem Configuration | ||||||
| ca_hostname | The hostname for the CA subsystem which will issue the certificates for a subordinate CA, RA, DRM, OCSP, TKS, or TPS subsystem. | |||||
| ca_port | The non-SSL port number of the CA. | |||||
| ca_ssl_port | The SSL end entities port number of the CA. | |||||
| drm_hostname | The hostname for the DRM subsystem to use to archive keys. For the TPS only. | |||||
| drm_ssl_port | The SSL agent port number of the DRM. For the TPS only. | |||||
| tks_hostname | The hostname for the TKS subsystem to use to derive keys. For the TPS only. | |||||
| tks_ssl_port | The SSL agent port number of the TKS. For the TPS only. | |||||
| Authentication Database Configuration (TPS only) | ||||||
| ldap_auth_host | Gives the hostname of the LDAP directory database to use for the TPS subsystem token database. Only for the TPS subsystem. | |||||
| ldap_auth_port | Gives the port number of the LDAP directory database to use for the TPS subsystem token database. Only for the TPS subsystem. | |||||
| ldap_auth_base_dn | Gives the base DN in the LDAP directory tree of the TPS token database under which to create token entries. Only for the TPS subsystem. | |||||
| External CA for Issuing Certificates | ||||||
| external |
Sets whether to submit the subsystem certificates to the configured CA or to an external CA. The options are true or false. If this is not set, then the default is false.
| |||||
| ext_csr_file | The output file to which to write the generated certificate requests for the subsystem certificates. Step one of the silent configuration process. | |||||
| ext_ca_cert_file | The input file for the certificates issued by the external CA. Step two of the silent configuration process. | |||||
| ext_ca_cert_chain_file | The input file for the CA certificate chain for the external CA issuing the certificate. Step two of the silent configuration process. | |||||
| Cloning Configuration | ||||||
| clone |
Sets whether the new instance is a clone. Its possible values are true or false. If this is not set, then the default is false.
| |||||
| clone_p12_file |
The file name of the PKCS#12 file for the backed-up keys for the original instance. This must be in the /var/lib/ directory for the clone.
| |||||
| clone_p12_password | The password to access the PKCS#12 file. | |||||
| clone_start_tls | Whether to use Start TLS with replication between the clones. This opens a secure connection over a standard port. |
NOTE
pkisilent, first run pkicreate to create the instance.
- Different security domain settings. A CA can host a security domain, so it has special configuration options to create a security domain. All other subsystems (as well as CAs) must join an existing security domain.
TIP
It is recommended that every CA have its own security domain, because each system within the security domain depends on having the security domain running and accessible. However, subordinate CAs can only be configured within the root CA's security domain using thepkisilentscript. - Different numbers and types of SSL ports. The CA, DRM, OCSP, and TKS each have three SSL ports admin, agents, and users), while the RA and TPS both have two SSL ports (client and non-client).
- Different numbers and types of certificates.
- Different required subsystems. Every subsystem must, at a minimum, specify which CA will sign and issue its certificates, while a CA has the option of self-signing its certificates. The TPS also relies on a TKS and optional DRM, which can also be specified at configuration.
- Different database configuration. The RA uses a SQLite database as its internal databases, while all other subsystems use an LDAP directory. The TPS uses two separate LDAP directories, one as its internal database and the other as an authentication directory to help manage its users.
pkisilent is still pretty similar between the subsystems. They use the same options to identify the instance to configure, back up their keys, and configure their users, and even though the parameters are slightly different in name, the configuration concepts (like cloning or generating certificates) are the same.
NOTE
pkisilent must be escaped.
Example 11.2. Configuring a Root CA
pkisilent ConfigureCA -cs_hostname localhost
-cs_port 9445
-subsystem_name "pki-ca2"
-client_certdb_dir /tmp/
-client_certdb_pwd password
-preop_pin sYY8er834FG9793fsef7et5
-domain_name "testca"
-admin_user admin
-admin_email "admin@example.com"
-admin_password secret
-agent_name "jsmith"
-agent_key_size 2048
-agent_key_type rsa
-agent_cert_subject "cn=ca\ agent\ cert"
-ldap_host server
-ldap_port 389
-secure_conn false
-remove_data true
-bind_dn "cn=directory\ manager"
-bind_password secret
-base_dn "o=pki-ca2"
-db_name "server.example.com-pki-ca2"
-key_size 2048
-key_type rsa
-key_algorithm SHA256withRSA
-backup_pwd password
-backup_fname /export/backup.p12
-ca_subsystem_cert_subject_name "cn=ca\ subsystem\ cert,o=testca\ domain"
-ca_ocsp_cert_subject_name "cn=ocsp\ signing\ cert,o=testca\ domain"
-ca_server_cert_subject_name "cn=ca\ client\ cert,o=testca\ domain"
-ca_sign_cert_subject_name "cn=ca\ signing\ cert,o=testca\ domain"
-ca_audit_signing_cert_subject_name "cn=audit\ signing\ cert,o=testca\ domain"
-token_name "internal"Example 11.3. Configuring a Subordinate CA
pkisilent ConfigureCA -cs_hostname localhost
-cs_port 9445
-subsystem_name "pki-ca2"
-client_certdb_dir /tmp/
-client_certdb_pwd password
-preop_pin sYY8er834FG9793fsef7et5
-sd_hostname "domain.example.com"
-sd_admin_port 9445
-sd_agent_port 9443
-sd_ssl_port 9444
-sd_admin_name admin
-sd_admin_password secret
-admin_user admin
-admin_email "admin@example.com"
-admin_password secret
-agent_name "jsmith"
-agent_key_size 2048
-agent_key_type rsa
-agent_cert_subject "cn=ca\ agent\ cert"
-ldap_host server
-ldap_port 389
-secure_conn false
-remove_data true
-bind_dn "cn=directory\ manager"
-bind_password secret
-base_dn "o=pki-ca2"
-db_name "server.example.com-pki-ca2"
-key_size 2048
-key_type rsa
-save_p12 true
-backup_pwd password
-backup_fname /export/backup.p12
-ca_hostname server.example.com
-ca_port 9180
-ca_ssl_port 9443
-ca_subsystem_cert_subject_name "cn=ca\ subsystem\ cert,o=testca\ domain"
-ca_ocsp_cert_subject_name "cn=ocsp\ signing\ cert,o=testca\ domain"
-ca_server_cert_subject_name "cn=ca\ client\ cert,o=testca\ domain"
-ca_sign_cert_subject_name "cn=ca\ signing\ cert,o=testca\ domain"
-ca_audit_signing_cert_subject_name "cn=audit\ signing\ cert,o=testca\ domain"
-token_name "internal"-save_p12 option. All of the parameters should be on a single line.
Example 11.4. Configuring a DRM
pkisilent ConfigureDRM -cs_hostname localhost
-cs_port 9445
-subsystem_name "pki-kra"
-client_certdb_dir /tmp/
-client_certdb_pwd password
-preop_pin sYY8er834FG9793fsef7et5
-domain_name "example\ domain"
-sd_hostname "domain.example.com"
-sd_admin_port 9445
-sd_agent_port 9443
-sd_ssl_port 9444
-sd_admin_name admin
-sd_admin_password secret
-admin_user admin
-admin_email "admin@example.com"
-admin_password secret
-agent_key_size 2048
-agent_key_type rsa
-agent_cert_subject "cn=drm\ agent\ cert"
-agent_name "jsmith"
-ldap_host server
-ldap_port 389
-secure_conn false
-remove_data true
-bind_dn "cn=directory\ manager"
-bind_password secret
-base_dn "o=pki-kra"
-db_name "server.example.com-pki-kra"
-key_size 2048
-key_type rsa
-backup_pwd password
-ca_hostname server.example.com
-ca_port 9180
-ca_ssl_port 9443
-drm_subsystem_cert_subject_name "cn=drm\ subsystem\ cert,o=example\ domain"
-drm_transport_cert_subject_name "cn=drm\ transport\ cert,o=example\ domain"
-drm_server_cert_subject_name "cn=drm\ client\ cert,o=example\ domain"
-drm_storage_cert_subject_name "cn=drm\ storage\ cert,o=example\ domain"
-drm_audit_signing_cert_subject_name "cn=drm\ audit\ signing\ cert,o=example\ domain"
-token_name "internal"Example 11.5. Configuring an RA
pkisilent ConfigureRA -cs_hostname localhost
-cs_port 9445
-subsystem_name "pki-ra2"
-client_certdb_dir /tmp/
-client_certdb_pwd password
-preop_pin sYY8er834FG9793fsef7et5
-domain_name "example\ domain"
-sd_hostname "domain.example.com"
-sd_admin_port 9445
-sd_agent_port 9443
-sd_ssl_port 9444
-sd_admin_name admin
-sd_admin_password secret
-admin_user admin
-admin_email "admin@example.com"
-admin_password secret
-agent_name "jsmith"
-agent_key_size 2048
-agent_key_type rsa
-agent_cert_subject "cn=ra\ agent\ cert"
-ca_hostname server.example.com
-ca_port 9180
-ca_ssl_port 9443
-key_size 2048
-key_type rsa
-ra_subsystem_cert_subject_name "cn=ra\ subsystem\ cert,o=testca\ domain"
-ra_server_cert_subject_name "cn=ra\ client\ cert,o=testca\ domain"
-token_name ="internal"Example 11.6. Configuring a TPS
pkisilent ConfigureTPS -cs_hostname localhost
-cs_port 9445
-subsystem_name "pki-tps2"
-client_certdb_dir /tmp/
-client_certdb_pwd password
-preop_pin sYY8er834FG9793fsef7et5
-domain_name "example\ domain"
-sd_hostname "domain.example.com"
-sd_admin_port 9445
-sd_agent_port 9443
-sd_ssl_port 9444
-sd_admin_name admin
-sd_admin_password secret
-admin_user admin
-admin_email "admin@example.com"
-admin_password secret
-agent_name "jsmith"
-agent_key_size 2048
-agent_key_type rsa
-agent_cert_subject "cn=tps\ agent\ cert"
-ldap_host server
-ldap_port 389
-secure_conn false
-remove_data true
-bind_dn "cn=directory\ manager"
-bind_password secret
-base_dn "o=pki-tps2"
-db_name "server.example.com-pki-tps2"
-ca_hostname server.example.com
-ca_port 9180
-ca_ssl_port 9443
-tks_hostname server.example.com
-tks_ssl_port 13443
-drm_hostname server.example.com
-drm_ssl_port 10443
-key_size 2048
-key_type rsa
-tps_subsystem_cert_subject_name "cn=tps\ subsystem\ cert,o=testca\ domain"
-tps_server_cert_subject_name "cn=tps\ client\ cert,o=testca\ domain"
-tps_audit_signing_cert_subject_name "cn=audit\ signing\ cert,o=testca\ domain"
-ldap_auth_host auth.example.com
-ldap_auth_port 389
-ldap_auth_base_dn "ou=tps,ou=People,dc=example,dc=com"
-token_name "internal"... -key_size 2048 -key_type rsa -key_algorithm SHA256withRSA ...
pkisilent ConfigureCA -cs_hostname localhost
-cs_port 9445
-subsystem_name "pki-ca2"
-client_certdb_dir /tmp/
-client_certdb_pwd password
-preop_pin sYY8er834FG9793fsef7et5
-domain_name "testca"
-signing_key_type ec
-signing_key_size 256
-signing_key_curvename nist256
-signing_key_signingalgorithm SHA256withEC
-ocsp_signing_key_type ec
-ocsp_signing_key_size 256
-ocsp_signing_key_curvename nist256
-ocsp_signing_key_signingalgorithm SHA256withEC
-audit_signing_key_type rsa
-audit_signing_key_size 2048
-audit_signing_key_algorithm SHA256withRSA
-subsystem_key_type rsa
-subsystem_key_size 2048
-subsystem_key_algorithm SHA512withRSA
-sslserver_key_type rsa
-sslserver_key_size 2048
-sslserver_key_algorithm SHA256withRSA
...pkisilent ConfigureCA -cs_hostname localhost
-cs_port 9445
-subsystem_name "pki-ca2"
-signing_key_type ec
-signing_key_size 256
-signing_key_curvename nist256
-signing_key_signingalgorithm SHA256withEC
-key_size 2048
-key_type rsa
-key_algorithm SHA256withRSA
...IMPORTANT
pkisilent. The other subsystem clones must be configured using the HTML-based configuration wizard.
- -clone true (which sets that the new instance will be a clone)
- -clone_p12_file and -clone_p12_password, which gives the name of the master's PKCS #12 key file in the clone's
/var/lib/directory and the password to access itinstance_name/alias - -clone_start_tls, which sets whether to use Start TLS for replication between clones
- The same security domain, set in the -sd_* parameters
- The same LDAP base DN and database name, set in the -ldap_* parameters (either the hostname or the port must be different, since the clone does require a separate Directory Server instance)
- The same issuing CA for its certificates, set in either the -ca_* parameters or possibly self-signed, for a CA
pkisilent ConfigureCA -cs_hostname localhost
-cs_port 9445
-subsystem_name "clone-ca2"
-client_certdb_dir /tmp/
-client_certdb_pwd password
-preop_pin sYY8er834FG9793fsef7et5
_doman_name "example\ domain"
-sd_hostname "domain.example.com"
-sd_admin_port 9445
-sd_agent_port 9443
-sd_ssl_port 9444
-sd_admin_name admin
-sd_admin_password secret
-admin_user admin
-admin_email "admin@example.com"
-admin_password secret
-agent_name jsmith
-agent_key_size 2048
-agent_key_type rsa
-key_type rsa
-key_size 2048
-agent_cert_subject "'CN=jsmith,ou=clone-ca2,o=Example Domain'"
-ldap_host ldap-server.example.com
-ldap_port 389
-bind_dn "'cn=Directory Manager'"
-bind_password secret
-base_dn "dc=ca.example.com-clone-ca2"
-db_name "ca.example.com-clone-ca2"
-clone true
-clone_p12_file backup.p12
-clone_p12_password secret
-clone_start_tls false
-master_instance_name pki-ca
-ca_hostname server.example.com
-ca_non_ssl_port 9180
-ca_ssl_port 9443
-ca_subsystem_cert_subject_name "cn=ca\ subsystem\ cert,o=testca\ domain"
-ca_ocsp_cert_subject_name "cn=ocsp\ signing\ cert,o=testca\ domain"
-ca_server_cert_subject_name "cn=ca\ client\ cert,o=testca\ domain"
-ca_sign_cert_subject_name "cn=ca\ signing\ cert,o=testca\ domain"
-ca_audit_signing_cert_subject_name "cn=audit\ signing\ cert,o=testca\ domain"
-token_name "internal"pkisilent.
pkisilent command assumes that you will request a certificate from a CA within the security domain, and this CA is identified in the -ca_hostname and other ca_ options. This assumes that the -external option is false.
-external option to true. The generated certificate requests are exported to a file, and then can be submitted to the external CA. Once they are issued, files which contain the subsystem certificates and the CA certificate chain for the issuing external CA can be passed using the pkisilent command. This is set in four parameters:
- -external, which explicitly sets whether to use an external CA
- -ext_csr_file, which gives the path and name of the output file to which to write the certificate requests for the subsystem
- -ext_ca_cert_file, which gives the input file to use which contains the certificates issued by the external CA
- -ext_ca_cert_file, which gives the input file to use which contains the CA certificate chain for the external CA which issued the certificates
pkisilent, submitting certificates to an external CA is a three-step process, two of them involving pkisilent:
- In the first step, much of the preliminary information is configured for the instance.Along with the subsystem configuration settings, the subsystem's certificate requests are generated and written to the file specified in
-ext_csr_file. These certificate requests must be submitted to the external CA.For example (in real life, these options should be on a single line):pkisilent ConfigureCA -cs_hostname server.example.com -cs_port 9445 -subsystem_name "pki-ca2" -client_certdb_dir /tmp/ -client_certdb_pwd password -preop_pin sYY8er834FG9793fsef7et5 -domain_name "testca" -agent_name jsmith -agent_key_size 2048 -agent_key_type rsa -agent_cert_subject "cn=ca\ agent\ cert" -ldap_host ldapserver.example.com -ldap_port 389 -secure_conn false -remove_data true -bind_dn "cn=directory\ manager" -bind_password password -base_dn "o=pki-ca2" -db_name "server.example.com-pki-ca2" -key_size 2048 -key_type rsa -key_algorithm SHA512withRSA -token_name internal -token_pwd 242986083911 -save_p12 true -backup_pwd password -backup_fname /export/backup.p12 -ca_subsystem_cert_subject_name "cn=ca\ subsystem\ cert,o=testca\ domain" -ca_ocsp_cert_subject_name "cn=ocsp\ signing\ cert,o=testca\ domain" -ca_server_cert_subject_name "cn=ca\ client\ cert,o=testca\ domain" -ca_sign_cert_subject_name "cn=ca\ signing\ cert,o=testca\ domain" -ca_audit_signing_cert_subject_name "cn=audit\ signing\ cert,o=testca\ domain"-external true-ext_csr_file /tmp/cert.req - The certificate requests are submitted to the external CA, and the issued certificates are retrieved and saved to file.
- The newly issued subsystem certificates are installed in the instance by referencing the saved certificate file in the
-ext_cert_fileparameter and the issuing CA's certificate chain in the-ext_cert_chain_fileparameter.For example (in real life, these options should be on a single line):pkisilent ConfigureCA -cs_hostname server.example.com -cs_port 9445 -subsystem_name "pki-ca2" -client_certdb_dir /tmp/ -client_certdb_pwd password -preop_pin sYY8er834FG9793fsef7et5 -domain_name "testca"-admin_user admin-admin_password secret-admin_email "admin@example.com"-agent_name jsmith -agent_key_size 2048 -agent_key_type rsa -agent_cert_subject "cn=ca\ agent\ cert" -ldap_host ldapserver.example.com -ldap_port 389 -secure_conn false -remove_data true -bind_dn "cn=directory\ manager" -bind_password password -base_dn "o=pki-ca2" -db_name "server.example.com-pki-ca2" -key_size 2048 -key_type rsa -key_algorithm SHA512withRSA -token_name internal -token_pwd 242986083911 -save_p12 true -backup_pwd password -backup_fname /export/backup.p12 -ca_subsystem_cert_subject_name "cn=ca\ subsystem\ cert,o=testca\ domain" -ca_ocsp_cert_subject_name "cn=ocsp\ signing\ cert,o=testca\ domain" -ca_server_cert_subject_name "cn=ca\ client\ cert,o=testca\ domain" -ca_sign_cert_subject_name "cn=ca\ signing\ cert,o=testca\ domain" -ca_audit_signing_cert_subject_name "cn=audit\ signing\ cert,o=testca\ domain"-external true-ext_cert_file /tmp/cert.cer-ext_cert_chain_file /tmp/cachain.cerThis is also when the final configuration to create the administrator user is performed.NOTE
All of the previous parameters must be included the second time thatpkisilentis invoked.
pkicreate 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.
- Install the subsystem packages, and open the configuration URL.
- Join a security domain. For a CA, it is also possible to create a new security domain.
- Set the subsystem information, like its name.
- For a CA, set the CA to be a subordinate CA. This is required in order to submit CA subsystem certificates to an external CA; making a root CA automatically generates self-signed certificates.
- Set up the internal database.
- Select the key store, and generate the key pairs.
- Set the subsystem certificate names; you can set these to whatever you want, but make sure that they conform to any requirements that the external CA sets for the subject names of certificates.At the bottom of the screen is the list of CAs which are available to accept the submitted certificate requests. Choose from the drop-down menu.

- In the Requests and Certificates panel, the CA signing certificate is listed, with an action required label. Once that certificate is generated, the other certificates for the CA will be automatically generated.For other subsystems, each subsystem certificate has an action required label and must be submitted to the external CA.

- Click the Step 1: Copy the certificate request link, and copy the certificate request to a file or the clipboard.

- Click Step 2, and import the certificate chain for the issuing CA. This certificate chain must not contain the leaf certificate (the certificate being requested).
- After retrieving the issued certificates, click the Step 3: Paste in the base 64-encoded certificate link, and paste in the new certificate (this should be only the new certificate, not a certificate chain).

- For the CA, this only has to be done for the signing certificate. For the other subsystems, repeat steps 9, 10, and 12 for each certificate.When all the certificates have been submitted, click to resume the configuration process.
- Export the keys for the certificates, if the subsystem will be cloned.
- Create the administrator user.
- When the configuration is done, restart the subsystem.
service
instance_namerestart
WARNING
pkicreate, though this can be configured manually after the instance is configured.
pkicreate with three options which specify the services ports: -admin_secure_port, -agent_secure_port, and -ee_secure_port. For CAs only, there is an additional port for end-entity client authentication, -ee_secure_client_auth_port.
- Run the
pkicreatecommand, specifying the type of subsystem being created, the configuration directory, instance name, and port numbers. For example, this created a second DRM instance:pkicreate -pki_instance_root=/var/lib -subsystem_type=kra -pki_instance_name=pki-drm2 -secure_port=10543 -unsecure_port=10180 -tomcat_server_port=1802 -verbose
- When the instance is successfully created, the process returns a URL for the HTML configuration page. For example:
http://server.example.com:10180/kra/admin/console/config/login?pin=nt2z2keqcqAZiBRBGLDf
TIP
The configuration URL is written to the end of the instance's installation file,/var/log/pki-. This log is also useful for debugging an instance.name/logs-install.log - Open the new instance URL, and go through the configuration wizard as described in Chapter 6, Installing and Configuring Certificate System. Supply the security domain, CA, instance ID, internal LDAP database, and agent information.
- When the configuration is complete, restart the subsystem.
service
instance_IDrestart
pkicreate tool options, see the Certificate System Command-Line Tools Guide.
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 address3ffe:1234:2222:2000:202:55ff:fe67:f527 server6.example.comIPv6 address - Then, export the environment variable to use the IPv6 address for the server. For example:
export PKI_HOSTNAME=server6.example.com
- Run
pkicreateto create the new instance. The values for the server hostname in theCS.cfgfile will be set to the IPv6 address.
- Install and configure the first RA instance.
- Add the new RA group to the Certificate Manager.
- Start the Console. For example:
pkiconsole https://server.example.com:9445/ca
- Click Users and Groups, and then click Groups.
- Click to open the Edit Group Information dialog box.
- Enter the group name and description, such as
Registration Manager2 Agents. - Click .
- Add the new RA authentication instance to the CA:
- Open the CA configuration directory, and edit the
CS.cfgfilecd /etc/pki-ca vi CS.cfg
- Search for the string
raCertAuth. - Copy those lines for the first RA instance, paste them, and edit them for the second RA instance's information. For example:
auths.instance.raCertAuth.agentGroup=Registration Manager Agents auths.instance.raCertAuth.plug-inName=AgentCertAuth
auths.instance.ra2CertAuth.agentGroup=Registration Manager2 Agentsauths.instance.ra2CertAuth.plug-inName=AgentCertAuth
- Add the new RA user enrollment profile to the Certificate Manager's certificate profiles list to utilize the new RA authentication instance.
- Open the CA profiles directory.
cd /var/lib/pki-ca/profiles/ca
- Copy the current RA profile to create the new profile. For example:
cp caDualRAuserCert.cfg caDualRA
2userCert.cfg - Edit the new file to contain the second RA instance's information. Change
raCertAuthtora2CertAuth.
- Open the CA configuration directory, and edit the
CS.cfgfile.cd /var/lib/pki-ca/conf vi CS.cfg
- Add
caDualRA2userCertto the profiles list. For example:profile.list=...[snip]...caRAserverCert
,caRA2userCertMake sure to use a comma to separate the entries. - Search for the lines for the
caDualRAuserCertprofile configuration, copy them, and edit them for the second RA instance's information.profile.caDualRAuserCert.class_id=caEnrollImpl profile.caDualRAuserCert.config=/var/lib/pki-ca/profiles/ca/caDualRAuserCert.cfg
profile.caDualRA2userCert.class_id=caEnrollImplprofile.caDualRA2userCert.config=/var/lib/pki-ca/profiles/ca/caDualRA2userCert.cfg
- Add a new URI mapping to allow the new RA agent to be registered in the new RA group.
- Open the CA web applications directory, and edit the
web.xmlfile:cd /var/lib/pki-ca/webapps/ca/WEB-INF vi web.xml
- At about line 288 in the
web.xmlfile is theservletsetting for the first RA's user. Copy the entire entry, including the opening and closing<servlet>tags, and edit the information to match the second RA's user. For example:<servlet> <servlet-name> caRegisterRa
2User </servlet-name> <servlet-class> com.netscape.cms.servlet.csadmin.RegisterUser </servlet-class> <init-param><param-name> GetClientCert </param-name> <param-value> false </param-value> </init-param> <init-param><param-name> authority </param-name> <param-value> ca </param-value> </init-param> <init-param><param-name> ID </param-name> <param-value> caRegisterRaUser </param-value> </init-param> <init-param><param-name> AuthMgr </param-name> <param-value> TokenAuth </param-value> </init-param> <init-param><param-name> GroupName </param-name> <param-value> Registration Manager2Agents </param-value> </init-param> <init-param><param-name> AuthzMgr </param-name> <param-value> BasicAclAuthz </param-value> </init-param> <init-param><param-name> resourceID </param-name> <param-value> certServer.ca.registerUser </param-value> </init-param> </servlet> - At about line 2510 in the
web.xmlfile is theservlet-mappingsetting for the first RA's user mapping. Copy the entire entry, including the opening and closing<servlet-mapping>tags, and edit the information to match the second RA's user. For example:<servlet-mapping> <servlet-name> caRegisterRa2User </servlet-name> <url-pattern> /admin/ca/registerRa2User </url-pattern> </servlet-mapping>
- Restart the CA. For example:
service pki-ca restartt
- Create the new RA instance using the
pkicreate.pkicreate -pki_instance_root=/var/lib -subsystem_type=ra -pki_instance_name=pki-ra2 -secure_port=12899 -unsecure_port=12898 -verbose -user=pkiuser -group=pkiuser
- Open the configuration file for the new RA instance, and edit its parameters to reflect the second RA instance information.
cd /var/lib/pki-ra2/conf/ vi CS.cfg
- Change the
registerRaUsersetting toregisterRa2User.conn.ca1.servlet.addagent=/ca/admin/ca/registerRa2User
- Change the
caDualRAuserCertsetting tocaDualRA2userCert.request.renewal.approve_request.0.profileId=caDualRAuser
2Cert ... request.user.approve_request.0.profileId=caDualRA2userCert - Restart the new RA instance. For example:
# service pki-ra2 restart
- A URL was generated at the end of the
pkicreatecommand; go to that URL to configure the second RA. For example:http://server.example.com:12898/ra/admin/console/config/login?pin=bFyAk9nWPfgLZXffRBT9
- When the new RA is completely configured, restart the instance.
# service pki-ra2 restart
yum.
NOTE
yum to manage the updates.
- Stop all Certificate System instances.
service
instance_IDstop - Log in as
root. - Run
yumfor the package. For example:yum update pki-java-tools-8.1.0-4.noarch
Or simply:yum update pki-java-tools
- Restart the Certificate System instances.
service
instance_IDstart
- Stop all Certificate System instances.
service
instance_IDstop - Log in as
root. - Install the updated package.
rpm -Uvh
package_nameFor example:rpm -Uvh pki-java-tools-8.1.0-4.noarch.rpm
- Restart the Certificate System instances.
service
instance_IDstart
pkiremove -pki_instance_root=pki_instance_root-pki_instance_name=pki_instance_ID-token_pwd=password-force
/var/lib/instance_name. The pki_instance_name is the instance name, such as pki-ca. The password is the password used to access the NSS database for the instance being removed. If the password isn't given with the command, then the script assumes that it is in the password.conf file; otherwise, the script prompts for the password.
TIP
-force with pkiremove to remove the instance without prompting for confirmation.
Example 13.1. Removing a CA Instance
pkiremove -pki_instance_root=/var/lib -pki_instance_name=pki-ca1 -force -token_pwd=secret PKI instance Deletion Utility ... PKI instance Deletion Utility cleaning up instance ... Stopping pki-ca1: process already stopped Removing dir /var/lib/pki-ca1 Removing file /var/log/pki-ca1-install.log Removing file /etc/init.d/pki-ca1 Removing file /usr/share/applications/pki-ca1-config.desktop Removing file /usr/bin/dtomcat5-pki-ca1
pkiremove removes the instance and any related files, such as the certificate databases, certificates, keys, and associated users. It does not uninstall the subsystem packages.
yum, to remove each package individually.
- Remove all the associated subsystem instances using
pkiremove. For example:pkiremove -pki_instance_root=/var/lib -pki_instance_name=pki-ca -force -token_pwd=secret
- Run the uninstall utility. For example:
yum remove pki-
subsystem_typeThe subsystem type can beca,ra,drm,ocsp,tks, ortps. - To remove other packages and dependencies, remove the packages specifically, using
yum. The complete list of installed packages is at Section 5.2, “Packages Installed on Red Hat Enterprise Linux”.
IMPORTANT
pkicreate), try the /var/log/pki-name/logs/instance-install.log file. If you have configuration errors (meaning, setting up the subsystem after running pkicreate), check the catalina.out and debug files in the instance's log directory.
- 14.1. Installation
- Q: I can't 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 am having trouble running through the configuration wizard for a new instance. It's giving me errors about already having the certificate for the subsystem installed.
- Q: I want to set different certificate validity periods and extensions for my root certificate authority — but I don't see a way to set it in the configuration wizard.
- Q: I'm seeing an HTTP 500 error code when I try to connect to the web services pages after configuring my subsystem instance.
- Q: I keep getting errors in when I try to configure the LDAP internal database for my instance. It says the database has already been used. Why?
- 14.2. Java Console
- 14.3. Cloning
- 14.4. Upgrade and Migration
- Q: I can't 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 am having trouble running through the configuration wizard for a new instance. It's giving me errors about already having the certificate for the subsystem installed.
- Q: I want to set different certificate validity periods and extensions for my root certificate authority — but I don't see a way to set it in the configuration wizard.
- Q: I'm seeing an HTTP 500 error code when I try to connect to the web services pages after configuring my subsystem instance.
- Q: I keep getting errors in when I try to configure the LDAP internal database for my instance. It says the database has already been used. Why?
yum repositories configured to point to Red Hat Network or a local Satellite and then to use and account with the appropriate subscriptions to access the Red Hat Certificate System channels.
catalina.out, system, and debug log files for the instance to see what errors have occurred. This lists a couple of common errors.
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, try unsetting the LD_LIBRARY_PATH variable and restart the CA.
unset LD_LIBRARY_PATH service pki-ca restart
IMPORTANT
pkicreate to create a new CA instance.
- Back up the original CA certificate profile used by the configuration wizard.
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
pkicreateto create the new CA instance and go through the configuration wizard.
catalina.out, 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.
catalina.out 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)catalina.out log file for the instance's Tomcat servive 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)debug file will have these errors about the database already being used:
[15/Jul/2010:16:28:15][http-7445-Processor25]: DatabasePanel populateDB: creating non-secure (non-SSL) connection for internal ldap [15/Jul/2010:16:28:15][http-7445-Processor25]: DatabasePanel connecting to 10.14.5.25:389 [15/Jul/2010:16:28:15][http-7445-Processor25]: DatabasePanel update: This database has already been used. [15/Jul/2010:16:28:15][http-7445-Processor25]: DatabasePanel update: populateDB Exception: java.io.IOException: This database has already been used. Select the checkbox below to remove all data and reuse this database [15/Jul/2010:16:28:15][http-7445-Processor25]: panel no=7 [15/Jul/2010:16:28:15][http-7445-Processor25]: panel name=database [15/Jul/2010:16:28:15][http-7445-Processor25]: total number of panels=19
alternatives --config java to see what JRE is selected. Red Hat Certificate System requires OpenJDK 1.6.
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)TxtTo73 instead of TxtTo81, then the new instance cannot import the previous information, which means it cannot recognize and confirm the old certificates. This results in an authentication error for the wrong admin certificate in the debug logs:
16076.http-9443-Processor20 - [29/Jun/2009:16:03:58 PDT] [6] [3] Agent authentication cannot evaluate the revocation status. 16076.http-9443-Processor24 - [29/Jun/2009:16:04:00 PDT] [6] [3] Agent authentication cannot evaluate the revocation status. 16076.http-9443-Processor18 - [29/Jun/2009:16:04:02 PDT] [6] [3] Agent authentication cannot evaluate the revocation status. 16076.http-9443-Processor18 - [29/Jun/2009:16:04:02 PDT] [13] [6] checkPermission(): permission denied for the resource certServer.ca.request.profile on operation read
[29/Jun/2009:16:35:42][http-9443-Processor23]: KeyUsageExtDefault: populate start [29/Jun/2009:16:35:42][http-9443-Processor23]: KeyUsageExtDefault: populate end [29/Jun/2009:16:35:42][http-9443-Processor23]: ExtendedKeyUsageExtDefault: populate start [29/Jun/2009:16:35:42][http-9443-Processor23]: ExtendedKeyUsageExtDefault: populate end [29/Jun/2009:16:35:42][http-9443-Processor23]: SubjectAltNameExtDefault: populate start [29/Jun/2009:16:35:42][http-9443-Processor23]: SubjectAltNameExtDefault: createExtension i=0 [29/Jun/2009:16:35:42][http-9443-Processor23]: gname is empty, not added [29/Jun/2009:16:35:42][http-9443-Processor23]: count is 0 [29/Jun/2009:16:35:42][http-9443-Processor23]: ProfileSubmitServlet: populate extension not found [29/Jun/2009:16:35:42][http-9443-Processor23]: CMSServlet: curDate=Mon Jun 29 16:35:42 PDT 2009 id=caProfileSubmit time=379
ToTxt script and then TxtTo73, and I'm seeing AUTH_TOKEN errors in my debug log.
TxtTo81. This script is available with the new Certificate System 8.1 pacakges.
ERROR AuthToken type - AUTH_TOKEN:com.netscape.certsrv.authentication.AuthToken=uid:[Ljava.lang.String;=[Ljava.lang.String;@108ca1
Table of Contents
- 15. After Configuration: Checklist of Configuration Areas for Deploying Certificate System
- 16. Basic Information for Using Certificate System
Table 15.1. Certificate System Features to Configure after Setup
| Feature | Why It's Useful | Admin Guide Link | Recommended or Required |
|---|---|---|---|
| Create agents and administrative users | The setup process only creates a single administrative user account. To manage a PKI environment in real life requires a number more administrators and agents, which are created after the instance is set up. |
| |
| Import the certificate chain into the browser. | Any browser which will be used to access agent or admin services pages must have the client certificate and the CA certificate chain imported into its trust store. | Importing certs |
|
| Set sudo permissions on PKI services for PKI administrators | Granting sudo permissions for Certificate System and Directory Server services to PKI administrators makes it easier to manage the instances. | Setting sudo permissions |
|
| Set up backup and restore procedures | A reliable backup and restore strategy is vital for disaster and data recovery. | Backup and restore |
|
| Enable signed audit logs |
This can be done when an instance is first created by using the -audit_group option, but it can also be done post-installation.
|
| |
| Configure LDAP publishing | LDAP publishing publishes the certificates to specific entries within an LDAP database, so other clients can access the entries. | LDAP publishing |
|
| Configure client authentication with the backend Directory Server | Client authentication allows the Certificate System instance to bind automatically to its backend Directory Server over SSL by presenting a recognized SSL client certificate (similar to the way agents connect to a subsystem instance). | Client authentication |
|
| Customize certificate profiles | A certificate profile defines everything associated with issuing a particular type of certificate, including the authentication method, the authorization method, the certificate content (defaults), constraints for the values of the content, and the contents of the input and output for the certificate profile. Existing certificate profiles can be edited and new profiles added to allow deployment-specific certificates and tokens to be issued. | Certificate profiles |
|
| Enable revocation checking and OCSP responses | There are two methods for checking whether a certificate is active (and not revoked): CRL checking and OCSP services. Checking the revocation status helps ensure that a revoked certificate isn't wrongly accepted just because it is within its validity period. |
| |
| Configure a timeout period for SSL sessions | Using session timeouts prevents unauthorized users from accessing an open, but otherwise inactive, session with a subsystem. | Session timeouts |
|
| Use port fowarding | The default URLs used by Certificate System subsystems can be very long, which makes it possible for users to mistype the URL. Port forwarding allows users to access a much simpler, more intuitive URL for a better experience. | Port forwarding |
|
| Set up cross-pair certificates (also called FBCA or bridge certificates). | Cross-pair certificates set up a trusted environment between two separate PKI environments, so that certificates issued in one PKI are automatically recognized and trusted by the other PKI environment. | Cross-pair certificate profiles |
|
| Run self-tests | Self-tests are subsystem type-specific diagnostics. These are usually run when the server starts, but they can also be run on demand. Additionally, self-test can be customized by creating new self-test plug-ins or to accommodate changes to the subsystem configuration like new certificates or changed certificate nicknames. | Self-tests |
|
Remove the password.conf file.
|
The password.conf file stores system passwords in plaintext.
| Running without the password.conf file |
|
| Remove unused CA connection interfaces. |
Several legacy interfaces are included in the CA's web.xml. While these can be used for custom or legacy applications to connect to the CA, for secure environments, these deprecated interfaces should be removed from the CA configuration to prevent unauthorized access.
| Remove unused CA connection interfaces |
|
| Assign POSIX system ACLs for PKI subsystem users. | This provides finer control over the ACLs used for the subsystems' system users. | Configuring POSIX system ACLs |
|
pkiconsole command. This command has the format:
pkiconsole https://server.example.com:admin_port/subsystem_typeca, kra, ocsp, or tks. For example, this opens the DRM console:
pkiconsole https://server.example.com:10445/kra
https://1.2.3.4:9445/ca https://[00:00:00:00:123:456:789:00:]:9445/ca
service instance-name {start|stop|restart}pki-instance-id, such as pki-ca.
chkconfig also defines startup settings for different run levels of the server. chkconfig is explained more in the Red Hat Enterprise Linux documentation, such as the Deployment Guide.
chkconfig, so this tool can set whether to restart subsystems automatically. By default, every Certificate System subsystem instance is turned off at every run level in the system, meaning instances must be started and stopped manually. This can be changed by resetting the configuration in chkconfig to on. For example, this automatically restarts Red Hat Directory Server, Administration Server, and the CA:
/sbin/chkconfig --level 2345 dirsrv-admin on /sbin/chkconfig --level 2345 dirsrv on /sbin/chkconfig --level 2345 pki-ca on
chkconfig --list | grep subsystem_nameoff:
chkconfig --level 35 subsystem_name offchkconfig settings.
chkconfig settings set a start and stop priority for all of the subsystems and their dependent services so that they start and stop in the proper order, as listed in Table 16.1, “Certificate System Processes and Their chkconfig Start Priority”. Processes with a low number for their start priority are started first, so Directory Server, Administration Server, and Tomcat are started before any of the subsystem instances. Likewise, processes with a low number for their shutdown priority are shut down first, so the subsystem processes are stopped before the processes they depend on are stopped.
Table 16.1. Certificate System Processes and Their chkconfig Start Priority
| Server | Process Name | Start Priority | Shutdown Priority |
|---|---|---|---|
| Administration Server | dirsrv-admin | 21 | 79 |
| Directory Server | dirsrv | 21 | 79 |
| Tomcat Server | tomcat5 | 80 | 20 |
| CA | pki-ca | 81 | 19 |
| DRM | pki-kra | 82 | 18 |
| OCSP | pki-ocsp | 83 | 17 |
| TKS | pki-tks | 84 | 16 |
| Apache | httpd | 85 | 15 |
| RA | 86 | 14 | |
| TPS | pki-tps | 87 | 13 |
https://server.example.com:9444/ca/services
TIP
service instance-name statushttps://server.example.com:9444/ca/ee/ca
https://1.2.3.4:9444/ca/services https://[00:00:00:00:123:456:789:00:]:9444/ca/services
NOTE
Table 16.2. Default Web Services Pages
| Port | Used for SSL | Used for Client Authentication[a] | Web Services | Web Service Location |
|---|---|---|---|---|
| Certificate Manager | ||||
| 9180 | No | End Entities | ca/ee/ca/ | |
| 9444 | Yes | No | End Entities | ca/ee/ca |
| 9443 | Yes | Yes | Agents | ca/agent/ca |
| 9445 | Yes | Configuration | ca/admin/console/config/login?pin=pin | |
| 9445 | Yes | No | Services | ca/services |
| 9445 | Yes | No | Console | pkiconsole https://host:port/ca |
| Registration Manager | ||||
| 12888 | No | End Entities | ee/index.cgi | |
| 12889 | Yes | Yes | Agents | agent/index.cgi |
| 12889 | Yes | Yes | Admin | admin/index.cgi |
| 12890 | Yes | Configuration | ra/admin/console/config/login?pin=pin | |
| 12890 | Yes | End Entities | ee/index.cgi | |
| 12890 | Yes | Services | index.cgi | |
| Data Recovery Manager | ||||
| 10180 | No | End Entities[b] | kra/ee/kra/ | |
| 10444 | Yes | No | End Entities[b] | kra/ee/kra |
| 10443 | Yes | Yes | Agents | kra/agent/kra |
| 10445 | Yes | Configuration | kra/admin/console/config/login?pin=pin | |
| 10445 | Yes | No | Services | kra/services |
| 10445 | Yes | No | Console | pkiconsole https://host:port/kra |
| Online Certificate Status Manager | ||||
| 11180 | No | End Entities[c] | ocsp/ee/ocsp | |
| 11444 | Yes | No | End Entities[c] | ocsp/ee/ocsp |
| 11443 | Yes | Yes | Agents | ocsp/agent/ocsp |
| 11445 | Yes | Configuration | ocsp/admin/console/config/login?pin=pin | |
| 11445 | Yes | No | Services | ocsp/services |
| 11445 | Yes | No | Console | pkiconsole https://host:port/ocsp |
| Token Key Service | ||||
| 13180 | No | End Entities[b] | tks/ee/tks | |
| 13444 | Yes | No | End Entities[b] | tks/ee/tks |
| 13443 | Yes | Yes | Agents | tks/agent/tks |
| 13445 | Yes | Configuration | tks/admin/console/config/login?pin=pin | |
| 13445 | Yes | No | Services | tks/services |
| 13445 | Yes | No | Console | pkiconsole https://host:port/tks |
| Token Processing System | ||||
| 7888 | No | Enterprise Security Client Phone Home | cgi-bin/home/index.cgi | |
| 7890 | Yes | Enterprise Security Client Phone Home | cgi-bin/home/index.cgi | |
| 7888 | No | Enterprise Security Client Security Officer Enrollment | cgi-bin/so/enroll.cgi | |
| 7890 | Yes | Yes | Enterprise Security Client Security Officer Enrollment | cgi-bin/so/enroll.cgi |
| 7889 | Yes | Yes | Enterprise Security Client Security Officer Workstation | cgi-bin/sow/welcome.cgi |
| 7889 | Yes | Yes | Agents[d] | tus |
| 7889 | Yes | Yes | Admin[d] | tus?op=index_admin |
| 7889 | Yes | Yes | Operator[d] | tus?op=index_operator |
| 7890 | Yes | Configuration | tps/admin/console/config/login?pin=pin | |
| 7890 | Yes | Services | index.cgi | |
| 9445 | Yes | No | Console | pkiconsole https://host:port/ca |
[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 has a different tab on that page. The role-specific tab is visible to every user who is a member of that role.
| ||||
pki-ca; the true value is whatever is specified at the time the instance is created with pkicreate.
Table 16.3. CA Instance Information
| Setting | Value | ||||||
|---|---|---|---|---|---|---|---|
| Ports |
| ||||||
| Main Directory | /var/lib/pki-ca | ||||||
| Configuration Directory | /etc/pki-ca | ||||||
| Configuration File |
| ||||||
| Subsystem Certificates |
| ||||||
| Security Databases | /var/lib/pki-ca/alias | ||||||
| Log Files | /var/log/pki-ca/logs | ||||||
| Install Logs | /var/log/pki-ca/logs-install.log | ||||||
| Process File | /var/run/pki-ca.pid | ||||||
| Profile Files | /var/lib/pki-ca/profiles/ca | ||||||
| Email Notification Templates | /var/lib/pki-ca/emails | ||||||
| Web Services Files |
| ||||||
[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.
| |||||||
pki-ra; the true value is whatever is specified at the time the instance is created with pkicreate.
Table 16.4. RA Instance Information
| Setting | Value | |||
|---|---|---|---|---|
| Ports |
| |||
| Instance Name | pki-ra | |||
| Main Directory | /var/lib/pki-ra | |||
| Configuration Directory | /etc/pki-ra | |||
| Configuration File |
| |||
| Subsystem Certificates |
| |||
| Security Databases | /var/lib/pki-ra/alias | |||
| Log Files | /var/log/pki-ra/logs | |||
| Install Logs | /var/log/pki-ra/logs-install.log | |||
| Web Services Files |
| |||
[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.
| ||||
pki-kra; the true value is whatever is specified at the time the instance is created with pkicreate.
Table 16.5. KRA Instance Information
| Setting | Value | |||||
|---|---|---|---|---|---|---|
| Ports |
| |||||
| Instance Name | pki-kra | |||||
| Main Directory | /var/lib/pki-kra | |||||
| Configuration Directory | /etc/pki-kra | |||||
| Configuration File |
| |||||
| Subsystem Certificates |
| |||||
| Security Databases | /var/lib/pki-kra/alias | |||||
| Log Files | /var/log/pki-kra/logs | |||||
| Install Logs | /var/log/pki-kra/logs-install.log | |||||
| Process File | /var/run/pki-kra.pid | |||||
| Web Services Files |
| |||||
[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.
| ||||||
pki-ocsp; the true value is whatever is specified at the time the instance is created with pkicreate.
Table 16.6. OCSP Instance Information
| Setting | Value | |||||
|---|---|---|---|---|---|---|
| Ports |
| |||||
| Instance Name | pki-ocsp | |||||
| Main Directory | /var/lib/pki-ocsp | |||||
| Configuration Directory | /etc/pki-ocsp | |||||
| Configuration File |
| |||||
| Subsystem Certificates |
| |||||
| Security Databases | /var/lib/pki-ocsp/alias | |||||
| Log Files | /var/log/pki-ocsp/logs | |||||
| Install Logs | /var/log/pki-ocsp/logs-install.log | |||||
| Process File | /var/run/pki-ocspocsp.pid | |||||
| Web Services Files |
| |||||
[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.
| ||||||
pki-tks; the true value is whatever is specified at the time the instance is created with pkicreate.
Table 16.7. TKS Instance Information
| Setting | Value | |||||
|---|---|---|---|---|---|---|
| Ports |
| |||||
| Instance Name | pki-tks | |||||
| Main Directory | /var/lib/pki-tks | |||||
| Configuration Directory | /etc/pki-tks | |||||
| Configuration File |
| |||||
| Subsystem Certificates |
| |||||
| Security Databases | /var/lib/pki-tks/alias | |||||
| Log Files | /var/log/pki-tks/logs | |||||
| Install Logs | /var/log/pki-tks/logs-install.log | |||||
| Process File | /var/run/pki-tks.pid | |||||
[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.
| ||||||
pki-tps; the true value is whatever is specified at the time the instance is created with pkicreate.
Table 16.8. TPS Instance Information
| Setting | Value | |||
|---|---|---|---|---|
| Ports |
| |||
| Main Directory | /var/lib/pki-tps | |||
| Configuration Directory | /etc/pki-tps | |||
| Configuration File |
| |||
| Subsystem Certificates |
| |||
| Security Databases | /var/lib/pki-tps/alias | |||
| Log Files | /var/log/pki-tps/logs | |||
| Install Logs | /var/log/pki-tps/logs-install.log | |||
| Web Services Files |
|
Table 16.9. Subsystem File Locations
| Directory Location | Contents | ||||||
|---|---|---|---|---|---|---|---|
| /var/lib/instance_name | Contains the main instance directory, which is the location for user-specific default and customized configuration files, profiles, certificate databases, web files, and other files for the subsystem instance. | ||||||
| /usr/share/java/pki |
Contains Java archive files shared by the Certificate System subsystems. Along with shared files for all subsystems, there are subsystem-specific files in subfolders:
| ||||||
| /usr/share/pki |
Contains common files and templates used to create Certificate System instances. Along with shared files for all subsystems, there are subsystem-specific files in subfolders:
| ||||||
| /usr/bin |
Contains the pkicreate and pkiremove instance configuration scripts and tools (Java, native, and security) shared by the Certificate System subsystems.
| ||||||
| /var/lib/tomcat5/common/lib | Contains Java archive files shared by local Tomcat web applications and shared by the Certificate System subsystems. Not used by the TPS or RA subsystems. | ||||||
| /var/lib/tomcat5/server/lib | Contains Java archive files used by the local Tomcat web server and shared by the Certificate System subsystems. Not used by the TPS or RA subsystems. | ||||||
| Contains Apache modules shared by TPS and RA subsystems. Not used by the CA, DRM, OCSP, or TKS subsystems. | ||||||
| Mozilla LDAP SDK tools shared by TPS and RA subsystems. Not used by the CA, DRM, OCSP, or TKS subsystems. |
- SHA256withRSA (the default)
- SHA1withRSA
- SHA256withRSA
- SHA512withRSA
- MD5withRSA
- MD2withRSA
- SHA256withEC (the default)
- SHA1withEC
- SHA384withEC
- SHA512withEC
NOTE
IMPORTANT
Table A.1. ECC Curves
| Curve Family | Supported Curves |
|---|---|
| NIST, SEC2 Prime |
|
| NIST, SEC2 Binary |
|
| ANSI X9.62 Prime |
|
| ANSI X9.62 Binary |
|
Table A.2. Providers and Key Sizes
| Algorithm | Provider | Supported Key Sizes |
|---|---|---|
| ECC | Microsoft Software Key Storage Provider |
|
| ECC | Microsoft Smart Card Key Storage Provider |
|
| RSA | Microsoft Base Cryptographic Provider |
|
| RSA | Microsoft Strong Cryptographic Provider |
|
| RSA | Enhanced Cryptographic Provider |
|
| RSA | Microsoft Software Key Storage Provider |
|
IMPORTANT
- Recover to a viable state after malicious code is introduced and damage occurs.
- Provide time stamps to ensure the sequencing of events can be verified.
- Implement automated notification or other responses to the target security functions-discovered attacks in order to identify attacks and create an attack deterrent.
- Require inspection for downloads.
- Respond to possible loss of stored audit records.
- Run the subsystem instances in an environment where the applications and services are restricted to a trusted path (SELinux).
- Run the subsystem instances in an environment that enforces data integrity and establishes policies for periodic integrity checks (SELinux).
/var/lib/instance_name/conf/password.conf (protected by Linux operating system permissions). However, for Common Criteria purposes, Red Hat Certificate System 8.1 utilizes the nuxwdog executable to store unencrypted passwords in the kernel keyring through sockets, and the associated instance-specific password.conf file is deleted for security reasons.
- Private key associated with the CA server certificate.
- Private key associated with the CA subsystem certificate.
- Private key associated with the CA audit log signing certificate.
- Private key associated with the CA signing certificate.
- Private key associated with the OCSP Responder signing certificate.
- Private key associated with the DRM server certificate.
- Private key associated with the DRM subsystem certificate.
- Private key associated with the DRM audit log signing certificate.
- Private key associated with the DRM transport certificate.
- Private key associated with the DRM storage certificate (for DRM key archival).
- Private key associated with the OCSP server certificate.
- Private key associated with the OCSP subsystem certificate.
- Private key associated with the OCSP audit log signing certificate.
- Private key associated with the OCSP signing certificate.
- Private key associated with the TKS server certificate.
- Private key associated with the TKS subsystem certificate.
- Private key associated with the TKS audit log signing certificate.
- Private key associated with the TPS server certificate.
- Private key associated with the TPS subsystem certificate.
- Private key associated with the TPS audit log signing certificate.
Table B.1. Mappings for Default Roles
| CIMC PP Role | Certificate System Role |
|---|---|
| Administrator |
|
| Officer |
|
| Auditor |
|
rpm --checksig -v filenamemd5sum filenameCS.cfg are protected and audited within the operating system environment. Therefore, only operating system administrators can directly edit these files. During installation, an operating system administrator must be present to help set any custom configuration in the CS.cfg file that is required.
NOTE
AuditVerify with sufficient frequency to verify the audit log signatures, along with reviewing the audit logs. Although the Certificate System subsystems are designed to deny operations that violate defined security policies, it is up to the site to define operational policies on the audit log review frequency to detect any type of attack.
- Using anything other than hardware tokens to create and store CIMC keys and certificates is not supported for Common Criteria.
- The watchdog daemon prompts for passwords to ensure that passwords are never entered or stored in the clear. Using the plain-text password file,
password.confis not supported for Common Criteria. nk - For security, all services should run using secure connections. Using the administrative interface (the subsystem Java console) in non-SSL client authentication mode is not supported for Common Criteria.
- Using a Registration Manager is not supported for Common Criteria.
- For security, all services should run using secure connections. Running the internal database or any publishing LDAP database in non-SSL client authentication mode is not supported for Common Criteria.
- Enrollment is supported using certificate profiles. Using the deprecated policy feature is not supported.
- Certificate System services use the operating system settings to provide an additional layer of security. SELinux must be in enforcing mode for the Common Criteria environment, not disabled or permissive.
- For security, all services should run using secure connections. Configuring OCSP publishing to a non-SSL port on the OCSP is not supported for Common Criteria.
- Customized plug-ins for jobs, notifications, or other extensible areas allow Certificate System performance to be extended, but they cannot be evaluated as part of the target of evaluation. Adding a custom plug-in in essence breaks the Common Criteria assurance. If adding custom plug-ins is unavoidable, it is the responsibility of all role users to carefully evaluate these plug-ins before making them part of the system.
- As with Certificate System plug-ins, the Certificate System ACLs provide comprehensive security for susbsystem/subsystem and subsystem/user interactions. Any changed the default ACLs for a custom environment cannot be evaluated and is therefore not supported for Common Criteria. The default ACLs contain access control enforcement requirements specified in the CIMC Security Level 3 protection profile. Caution must be taken when making changes to them.
yum system tools or by downloading packages from Red Hat Network. Applying updates and new packages is described at https://access.redhat.com/kb/docs/DOC-11259.
- The Red Hat Knowledgebase. Many technical issues can be resolved the Knowledgebase articles. Before contacting technical support, search the Knowledgebase to see if the question or issue is already a known case.
- Production support. Red Hat Technical Support can be contacted through web or phone depending upon the level of service:
- Basic support is for non-essential or prototype systems.
- Standard support is for most business systems that are not mission critical and only require support during normal business hours.
- Premium support is for mission critical services, which require rapid response.
This is described in more detail on the Red Hat Customer Portal as part of explaining the service-level agreements, https://access.redhat.com/support/offerings/production/sla.html. - Technical account manager (TAM). A service provided by supper service highly personalized support relationships. This service offers a highly-skilled, proactive support engineer who knows the client personally and understands their IT infrastructure, internal processes and overall business needs. The TAM is accountable for driving technical issues like bugs. This level of support provides access to a separate issue tracker for reporting and tracking all technical requests.This is described in more detail on the Red Hat Customer Portal at https://access.redhat.com/support/offerings/tam/.
NOTE
[root@server]# yum -y update
NOTE
- Tomcat 5.5.23
- Red Hat Directory Server 8.2
- Red Hat Certificate System 8.1 subsystems:
- Certificate Authority (CA)
- Data Recovery Management (DRM) - also called a Key Recovery Authority (KRA)
- Online Certificate Status Protocol (OCSP) Responder
- Red Hat Certificate System (Red Hat Certificate System) 8.1 Console
- Firefox 10 and later
- Open JDK/JRE 1.6
- JSS 4.6
- NSS 3.12
- nss-tools 3.12
- mozldap-tools
[root@server]# mkdir /mnt/iso
[root@server]# cd /mnt/iso/document
[root@server]# mount -o loop /tmp/nCSS_linux64_user_11_40.iso /mnt/iso/
[root@server]# ls dr-xr-xr-x 2 root root 2048 Aug 2 2010 netHSM -r-xr-xr-x 1 root root 967656 Aug 2 2010 nShield_Connect_Physical_Security_Checklist.pdf -r-xr-xr-x 1 root root 310693 Aug 2 2010 nShield_Connect_Quick_Start_Guide.pdf -r-xr-xr-x 1 root root 2409806 Aug 2 2010 nShield_Connect_User_Guide.pdf -r-xr-xr-x 1 root root 610234 Aug 2 2010 nShield_Hardware_Installation.pdf -r-xr-xr-x 1 root root 278386 Aug 2 2010 nShield_Quick_Start_Guide.pdf -r-xr-xr-x 1 root root 2449190 Aug 2 2010 nShield_User_Guide.pdf -r-xr-xr-x 1 root root 255087 Aug 2 2010 nToken_Install_Guide.pdf
[root@server]# /opt/nfast/bin/enquiry | grep -i status connection status OK
/opt/nfast/bin/ksafe
[root@server]# /usr/sbin/getenforce Enforcing
[root@server]# /usr/sbin/sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 21 Policy from config file: targeted
[root@server]# grep pkiuser /etc/group pkiuser:x:17:
[root@server]# grep pkiuser /etc/passwd pkiuser:x:17:17:Red Hat Certificate System:/usr/share/pki:/sbin/nologin
[root@server]# rpm -q setup setup-2.5.58-7.el5 [root@server]# rpm -q shadow-utils shadow-utils-4.0.17-15.el5
[root@server]# /usr/sbin/groupadd -g 17 -r pkiuser [root@server]# /usr/sbin/useradd -g pkiuser -d /usr/share/pki -s /sbin/nologin -c "Red Hat Certificate System" -u 17 -r pkiuser
[root@server]# /usr/sbin/userdel pkiuser [root@server]# /usr/sbin/groupdel pkiuser [root@server]# /usr/sbin/groupadd -g 17 -r pkiuser [root@server]# /usr/sbin/useradd -g pkiuser -d /usr/share/pki -s /sbin/nologin -c "Red Hat Certificate System" -u 17 -r pkiuser
[root@server]# /usr/sbin/groupadd -r pkiadmin
[root@server]# /usr/sbin/groupadd -r pkiaudit
Note
[root@server]# /usr/sbin/useradd -g pkiadmin -d /home/jsmith -s /bin/bash -c "Red Hat Certificate System Administrator" -m jsmith
[root@server]# /usr/sbin/useradd -g pkiaudit -d /home/sjones -s /bin/bash -c "Red Hat Certificate System Auditor" -m sjones
[root@server]# /usr/sbin/usermod -a -G pkiadmin pkiuser
[root@server]# /usr/sbin/usermod -a -G pkiaudit pkiuser
Important
[root@server]# grep mnelson /etc/group mnelson:x:1099:
[root@server]# grep mnelson /etc/passwd mnelson:x:1099:1099:Mary Nelson:/home/mnelson:/bin/bash
[root@server]# /usr/sbin/usermod -a -G pkiadmin mnelson
[root@server]# grep blarson /etc/group blarson:x:1257: [root@server]# grep blarson /etc/passwd blarson:x:1257:1257:Bob Larson:/home/blarson:/bin/bash [root@server]# /usr/sbin/usermod -a -G pkiaudit blarson
[root@server]# /usr/sbin/usermod -a -G nfast pkiuser [root@server]# /usr/sbin/usermod -a -G nfast jsmith [root@server]# /usr/sbin/usermod -a -G nfast mnelson
[root@server]# groups pkiuser jsmith sjones mnelson blarson pkiuser : pkiuser pkiadmin pkiaudit nfast jsmith : pkiadmin nfast sjones : pkiaudit mnelson : mnelson pkiadmin nfast blarson : blarson pkiaudit
NOTE
[root@server]# yum install openldap-clients
[root@server]# yum install redhat-ds
NOTE
[root@server]# yum install pki-ca
[root@server]# yum install pki-kra
[root@server]# yum install pki-ocsp
[root@server]# yum install pki-console
[root@server]# yum -y update
[root@nontps]# restorecon -R /opt/nfast
[root@nontps]# restorecon -R /dev/nfast
[root@nontps]# /opt/nfast/sbin/init.d-ncipher restart
Important
Important
Note
[root@server]# pkicreate -pki_instance_root=/var/lib \
-pki_instance_name=pki-ca \
-subsystem_type=ca \
-agent_secure_port=9443 \
-ee_secure_port=9444 \
-ee_secure_client_auth_port=9446 \
-admin_secure_port=9445 \
-unsecure_port=9180 \
-tomcat_server_port=9701 \
-user=pkiuser \
-group=pkiuser \
-audit_group=pkiaudit \
-redirect conf=/etc/pki-ca \
-redirect logs=/var/log/pki-ca \
-verbose
Note
[root@server]# /sbin/service pki-ca stop Stopping pki-ca: .. [ OK ]
[root@server]# /sbin/service dirsrv stop
Shutting down dirsrv:
server... [ OK ]
[root@server]# cd /etc/dirsrv/slapd-server/
[root@server]# ls cert8.db dse.ldif dse.ldif.startOK key3.db secmod.db certmap.conf dse.ldif.bak dse_original.ldif schema slapd-collations.conf
[root@server]# tar -cf /tmp/db-backup.tar *
[root@server]# echo Secret123 > /tmp/pwdfile
[root@server]# /usr/bin/certutil -W -d . -f /tmp/pwdfile
[root@server]# /usr/bin/certutil -L -d /etc/dirsrv/slapd-server
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
NOTE
[root@server]# /usr/bin/certutil -S -n "LDAP Self Signed CA certificate" -s "cn=LDAPCA-cert,dc=example,dc=com" -2 -x -t "CT,," -m 1000 -v 120 -d . -k rsa -f /tmp/pwdfile A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard until this progress meter is full. DO NOT USE THE AUTOREPEAT FUNCTION ON YOUR KEYBOARD! Continue typing until the progress meter is full: |************************************************************| Finished. Press enter to continue: Generating key. This may take a few moments... Is this a CA certificate [y/N]? y Enter the path length constraint, enter to skip [<0 for unlimited path]: > -1 Is this a critical extension [y/N]? y
[root@server]# /usr/bin/certutil -L -d /etc/dirsrv/slapd-server
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
LDAP Self Signed CA certificate CTu,u,u
[root@server]# /usr/bin/certutil -S -n "Server-Cert-ldap" -s "cn=server.example.com" -c "LDAP Self Signed CA certificate" -t "u,u,u" -m 1001 -v 120 -d . -k rsa -f /tmp/pwdfile A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard until this progress meter is full. DO NOT USE THE AUTOREPEAT FUNCTION ON YOUR KEYBOARD! Continue typing until the progress meter is full: |************************************************************| Finished. Press enter to continue: Generating key. This may take a few moments...
[root@server]# /usr/bin/certutil -L -d /etc/dirsrv/slapd-server
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
Server-Cert-ldap u,u,u
LDAP Self Signed CA certificate CTu,u,u
[root@server]# /sbin/service dirsrv start
Starting dirsrv:
server... [ OK ]
NOTE
[root@server]# cat <<EOF > /tmp/example.ldif > dn: cn=config > changetype: modify > replace: nsslapd-security > nsslapd-security: on > - > replace: nsslapd-securePort > nsslapd-secureport: 636 > > dn: cn=encryption,cn=config > changetype: modify > replace: nsssl3 > nsssl3: on > - > replace: nsssl3ciphers > nsssl3ciphers: -rsa_null_md5,+rsa_rc4_128_md5,+rsa_rc4_40_md5,+rsa_rc2_40_md5,+rsa_des_sha,+rsa_fips_des_sha,+rsa_3des_sha,+rsa_fips_3des_sha,+fortezza,+fortezza_rc4_128_sha,+fortezza_null,+tls_rsa_export1024_with_rc4_56_sha,+tls_rsa_export1024_with_des_cbc_sha > - > replace: nssslclientauth > nssslclientauth: allowed > > dn: cn=RSA,cn=encryption,cn=config > changetype: add > objectclass: top > objectclass: nsEncryptionModule > cn: RSA > nsssltoken: internal (software) > nssslpersonalityssl: Server-Cert-ldap > nssslactivation: on > EOF
[root@server]# /usr/bin/ldapmodify -x -h server.example.com -p 389 -D "cn=Directory Manager" -w Secret123 -f /tmp/example.ldif modifying entry "cn=config" modifying entry "cn=encryption,cn=config" adding new entry "cn=RSA,cn=encryption,cn=config"
[root@server]# egrep -i 'nsslapd-security|nsssl3|nssslclientauth|nssslpersonalityssl|nsSSLActivation' /etc/dirsrv/slapd-server/dse.ldif nsslapd-security: on nsSSLClientAuth: allowed nsSSL3: on nsSSL3Ciphers: -rsa_null_md5,+rsa_rc4_128_md5,+rsa_rc4_40_md5,+rsa_rc2_40_md5, nsSSLPersonalitySSL: Server-Cert-ldap nsSSLActivation: on
NOTE
[root@server]# /sbin/service dirsrv restart
Shutting down dirsrv:
server... [ OK ]
Starting dirsrv:
server...Enter PIN for Internal (Software) Token:
[ OK ]
[root@server]# /usr/lib64/mozldap/ldapsearch -h server.example.com -p 636 -Z -P /etc/dirsrv/slapd-server/cert8.db -D "cn=Directory Manager" -w Secret123 -b "cn=config" objectclass=* dn version: 1 dn: cn=config dn: cn=encryption,cn=config dn: cn=features,cn=config dn: cn=mapping tree,cn=config . . .
[root@server]# /usr/bin/certutil -L -d /etc/dirsrv/slapd-server -n "LDAP Self Signed CA certificate" -a > ldap-ca.crt
[root@server]# /usr/bin/certutil -L -d /var/lib/pki-ca/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
Server-Cert cert-pki-ca CTu,Cu,Cu
[root@server]# /usr/bin/certutil -A -i ldap-ca.crt -t "CT,C,C" -d /var/lib/pki-ca/alias -n "LDAP Self Signed CA certificate"
Important
[root@server]# /usr/bin/certutil -L -d /var/lib/pki-ca/alias/
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
Server-Cert cert-pki-ca CTu,Cu,Cu
LDAP Self Signed CA certificate CT,C,C
[root@server]# /sbin/service pki-ca start
Starting pki-ca:
Using Java Security Manager
Constructing 'pki-ca.policy' Security Policy
Starting pki-ca: [ OK ]
pki-ca (pid 26728) is running ...
'pki-ca' must still be CONFIGURED!
(see /var/log/pki-ca-install.log)
- Move /tmp/db-backup.tar to a secure location, or delete it from the system:
[root@server]# rm -f /tmp/db-backup.tar
- Delete /tmp/example.ldif from the system:
[root@server]# rm -f /tmp/example.ldif
- Delete /tmp/pwdfile from the system:
[root@server]# rm -f /tmp/pwdfile
NOTE
[root@server]# tail /var/log/pki-ca-install.log [2011-03-27 01:40:59] [debug] Restorecon file context for /etc/pki-ca/tomcat5.conf [2011-03-27 01:40:59] [debug] Setting selinux context pki_ca_port_t for 9446 [2011-03-27 01:41:04] [debug] Setting 'pki-ca' runlevel to '-' [2011-03-27 01:41:04] [debug] Setting 'pki-ca' start priority to '81' [2011-03-27 01:41:04] [debug] Setting 'pki-ca' stop priority to '19' [2011-03-27 01:41:04] [debug] Registered 'pki-ca' with '/sbin/chkconfig'. [2011-03-27 01:41:14] [log] Configuration Wizard listening on https://server.example.com:9445/ca/admin/console/config/login?pin=rci6U5OFSeuT92X3HbhG [2011-03-27 01:41:14] [log] After configuration, the server can be operated by the command: /sbin/service pki-ca start | stop | restart
Important
[root@server]# /usr/bin/firefox -ProfileManager -no-remote
- Click Next>
- Enter new profile name: server
- Click Finish
- Welcome panel:
- Click Next>
- Key Store panel:
- Click on 'Login' for NHSM6000-OCS (nCipher's nFast Token Hardware Module)
- Provide the 'Security Module Token Password'
- Click Next>
- Back in the Key Store panel, select the 'NHSM6000-OCS' Token
- Click Next>
- Security Domain panel:
- Accept the defaults
- Click Next>
- Subsystem Type panel:
- Accept the defaults
- Click Next>
- PKI Hierarchy panel:
- Accept the defaults
- Click Next>
- Internal Database panel:
- 'Host' -- server.example.com
- 'Port' -- 636 (SSL port)
- Check the 'SSL' box
- Provide the 'Bind Password' of the 'Directory Manager' (value which you gave while creating a Red Hat Directory Server instance)
- Click Next>
- Key Pairs panel:
- Accept the defaults.
- Select the 'Use the default key size (2048 bits).' radio button
- Click Next>
- Subject Names panel:
- Accept the defaults
- Click Next>
- Requests and Certificates panel:
- Click on 'Apply'
- Once the screen redraws, click on Next>
NOTE
- Export Keys and Certificates panel:
- Accept the defaults.
- Click Next>
- Import CA's Certificate Chain panel:
- Click OK for the prompt 'You will now be asked to import and trust the Certificate Chain from the CA. Please do so.'
- Select the check-boxes for:
- Check 'Trust this CA to identify web sites'
- Check 'Trust this CA to identify email users'
- Check 'Trust this CA to identify software developers'
- Click OK to dismiss this dialog box
- Click Next>
- Administrator panel:
- UID: admin
- Name: CA Administrator of Instance pki-ca
- Email: pki-ca-admin@example.com
- Password:
- Password (Again):
- Click Next>
- Import Administrator's Certificate panel:
- Click OK on the alert which says'Your personal certificate has been installed. You should keep a backup copy of this certificate.'
- Click Next>
- Done panel:
- Restart the CA by running /sbin/service pki-ca restart
- Set up the HSM, as described in Section 8.1.2, “Using Hardware Security Modules with Subsystems” and the vendor documentation.
- Install and configure the CA instance.
- Stop the CA instance. The instance must be stopped to protect the information stored in its security databases.
service pki-ca stop
- Replace the SSL subsystem certificate. By default, the installation process puts the certificate on the hardware token, but it should be placed on the software FIPS token.
- Open the CA's security database directory.
cd /var/lib/pki-ca/alias
- Using
certutil, create a request for a new SSL server certificate.certutil -d . -R -s "CN=ca.example.com,OU=pki-ca,O=Example Domain pki-ca" -o sslfips.req -h "NSS Certificate DB" -a
- Restart the CA.
service pki-ca start
- Open the end entities pages for the CA (http
s://server.example.com:9444/ca/ee/ca), and use the SSL Server Cert Profile to submit the request. - Log into the agent pages (https://server.example.com:9443/ca/agent/ca), and approve the request.
- Copy the base 64-encoded certificate on the approval page and save it to a file, such as
sslfips.cert. - Stop the CA again.
service pki-ca stop
- Check the CA's certificate database to see if an SSL server certificate is already listed.
certutil -d /var/lib/pki-ca/alias -L
- If the certificate exists, then delete it.
certutil -d /var/lib/pki-ca/alias -D -n "ServerCert
nickname" - Import the new SSL server certificate.
certutil -d /var/lib/pki-ca/alias -A -t "u,u,u" -n "ServerCert ca.example.com - Example Domain pki-ca" -i sslfips.cert -a
- Edit the
/var/lib/pki-ca/conf/serverCertNick.conffile to contain the nickname of the new certificate, such as ServerCert ca.example.com - Example Domain pki-ca. - Edit the
CS.cfgfile to replace both references to the SSL server certificate nickname.vim /var/lib/pki-ca/conf/CS/cfg ca.cert.sslserver.nickname= ServerCert ca.example.com - Example Domain pki-ca ca.sslserver.nickname= ServerCert ca.example.com - Example Domain pki-ca
- In the
CS.cfgfile, add a line to verify signatures from the token. The value is the token name, which depends on the vendor and version of the HSM. For example, for a NetHSM token:ca.requestVerify.token=NHSM6000-OCS
- Edi the
server.xmlfile to enable FIPS mode for each SSL-enabled connector. SetstrictCiphtersto true and add or setssl3to false.vim /var/lib/pki-ca/conf/server.xml <Connector name="Agent" port="9443" maxHttpHeaderSize="8192" ... ... sslOptions="ssl2=false,ssl3=false,tls=true" strictCiphers="true" ... > - Enable FIPS mode in the NSS software database.
modutil -dbdir /var/lib/pki-ca/alias -fips true
- Verify that FIPS mode has been enabled. The command will return the current FIPS status.
modutil -dbdir /var/lib/pki-ca/alias modutil -dbdir . -chkfips true FIPS mode enabled. - Start the CA.
service pki-ca start
[root@server]# cd /etc/dirsrv/slapd-server/
[root@server]# /usr/bin/certutil -R -s "cn=server.example.com" -o Server-Cert-ldap.req -d . -n "Server-Cert-ldap" -a Enter Password or Pin for "NSS Certificate DB": A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard until this progress meter is full. DO NOT USE THE AUTOREPEAT FUNCTION ON YOUR KEYBOARD! Continue typing until the progress meter is full: |************************************************************| Finished. Press enter to continue: Generating key. This may take a few moments...
[root@server]# cat /etc/dirsrv/slapd-server/Server-Cert-ldap.req Certificate request generated by Netscape certutil Phone: (not specified) Common Name: server.example.com Email: (not specified) Organization: (not specified) State: (not specified) Country: (not specified) -----BEGIN NEW CERTIFICATE REQUEST----- MIIBZjCB0AIBADAnMSUwIwYDVQQDExxtZWF0cGllLmRzZGV2LnNqYy5yZWRoYXQu Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCiCR7kumfiUOzvkUYoD7w 1u0TFjwtCpc1CHaOUzGF7jqqHQ4v1asLbJlTMeFO6pqayQbIt0DhzmzhNcZueSP+ mEMgKq1pqo7rsGGt9JBaRYSJCE8sbCLih0oCOieeSrSplJIMuXY4a3mnZkKZrhiP kmEsRYO7ahtf61bvHM/rdwIDAQABoAAwDQYJKoZIhvcNAQEFBQADgYEAuUMC4r1Y 8qBmf9//4OtY4n8dQ16460BMcgn5yQqTJ0fN0zZC1gydZo6P4ibm8txMBVcW/sVw sUpGFmSc+APufeQUUUbG7c4I1Z2RD8YnhysBpMwasvU8W++D25YjfyGwHg8FYAgI OYRTGzapYwo3mvSPd9GJYQXTWtQzXS2SJU0= -----END NEW CERTIFICATE REQUEST-----
[root@server]# /usr/bin/firefox -ProfileManager -no-remote
Note
- Cut the certificate request contained in the file called /etc/dirsrv/slapd-server/Server-Cert-ldap.req and paste it into the area called 'Certificate Request' on the form:
-----BEGIN NEW CERTIFICATE REQUEST----- MIIBZjCB0AIBADAnMSUwIwYDVQQDExxtZWF0cGllLmRzZGV2LnNqYy5yZWRoYXQu Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCiCR7kumfiUOzvkUYoD7w 1u0TFjwtCpc1CHaOUzGF7jqqHQ4v1asLbJlTMeFO6pqayQbIt0DhzmzhNcZueSP+ mEMgKq1pqo7rsGGt9JBaRYSJCE8sbCLih0oCOieeSrSplJIMuXY4a3mnZkKZrhiP kmEsRYO7ahtf61bvHM/rdwIDAQABoAAwDQYJKoZIhvcNAQEFBQADgYEAuUMC4r1Y 8qBmf9//4OtY4n8dQ16460BMcgn5yQqTJ0fN0zZC1gydZo6P4ibm8txMBVcW/sVw sUpGFmSc+APufeQUUUbG7c4I1Z2RD8YnhysBpMwasvU8W++D25YjfyGwHg8FYAgI OYRTGzapYwo3mvSPd9GJYQXTWtQzXS2SJU0= -----END NEW CERTIFICATE REQUEST-----
Note
- Press the Submit button
- A page entitled Certificate Profile should appear noting a request ID.
Note
- Click on List Requests
- Click on Find
- Click on the request id # of the entry labeled CN=server.example.com
- Scroll to the bottom of this request, and click on the submit button to approve this request.
- Scroll to the bottom of the approved request and highlight the Base-64 Encoded Certificate:
-----BEGIN CERTIFICATE----- MIIDETCCAfmgAwIBAgIBBzANBgkqhkiG9w0BAQsFADBRMR4wHAYDVQQKExVEc2Rl dlNqY1JlZGhhdCBEb21haW4xDzANBgNVBAsTBnBraS1jYTEeMBwGA1UEAxMVQ2Vy dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTExMDQwNTE0NTYwNFoXDTEzMDMyNTE0NTYw NFowJzElMCMGA1UEAxMcbWVhdHBpZS5kc2Rldi5zamMucmVkaGF0LmNvbTCBnzAN BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwogke5Lpn4lDs75FGKA+8NbtExY8LQqX NQh2jlMxhe46qh0OL9WrC2yZUzHhTuqamskGyLdA4c5s4TXGbnkj/phDICqtaaqO 67BhrfSQWkWEiQhPLGwi4odKAjonnkq0qZSSDLl2OGt5p2ZCma4Yj5JhLEWDu2ob X+tW7xzP63cCAwEAAaOBoTCBnjAfBgNVHSMEGDAWgBSZf6S8So4MpJJ4y00tJUo2 2pPsuTBMBggrBgEFBQcBAQRAMD4wPAYIKwYBBQUHMAGGMGh0dHA6Ly9tZWF0cGll LmRzZGV2LnNqYy5yZWRoYXQuY29tOjkxODAvY2Evb2NzcDAOBgNVHQ8BAf8EBAMC BPAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUA A4IBAQBBw349t89Jny3L1/Txf49cGXzmNG0s2Fi8tW/1XTP4RmcJhnifAGAmlViQ ZgHzYZ4VoBw9a5m4WyiXo1JZ3SfyqsKSqEAa6vGhFNTgN0XPQKzIKWcbIWZqX+/B SqPYwl4HYpf+BWtIRjCtP6Mxaold8CEiYzRaEYqbVIgmNluQ7kmH2rTS+r0OSOyH qZeJ1GGU/u6+/a4jKmx3bHyFWkdmcwWgnkwCLO8/xnIqhsaPL8Z4Wlw7OTMXEghp iZKzhLAkcs232sMNbCjsXabUo5+uvJy4+bYXTLoJoOBpWcs8141+B3GtUlW3xIPr U0jjGCnKgczztRf+/5Ut3wWWKNGB -----END CERTIFICATE-----
Note
- Copy this highlighted 'Base-64 Encoded' certificate and paste it into a file called /etc/dirsrv/slapd-server/ldap-server-b64.crt.
- Obtain the CA's signing certificate into a base-64-encoded pem format:
[root@server]# /usr/bin/certutil -L -d /var/lib/pki-ca/alias/ -n "caSigningCert cert-pki-ca" -a > /etc/dirsrv/slapd-server/casigning-b64.crt
[root@server]# /sbin/service pki-ca stop Stopping pki-ca: .. [ OK ]
[root@server]# /sbin/service dirsrv stop
Shutting down dirsrv:
server... [ OK ]
[root@server]# /usr/bin/certutil -L -d /etc/dirsrv/slapd-server
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
Server-Cert-ldap u,u,u
LDAP Self Signed CA certificate CTu,u,u
[root@server]# /usr/bin/certutil -D -d /etc/dirsrv/slapd-server -n "Server-Cert-ldap"
[root@server]# /usr/bin/certutil -L -d /etc/dirsrv/slapd-server
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
LDAP Self Signed CA certificate CTu,u,u
[root@server]# /usr/bin/certutil -A -i ldap-server-b64.crt -d /etc/dirsrv/slapd-server -n "Server-Cert-ldap" -t "u,u,u"
[root@server]# /usr/bin/certutil -L -d /etc/dirsrv/slapd-server
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
Server-Cert-ldap u,u,u
LDAP Self Signed CA certificate CTu,u,u
[root@server]# /usr/bin/certutil -D -d /etc/dirsrv/slapd-server -n "LDAP Self Signed CA certificate"
[root@server]# /usr/bin/certutil -L -d /etc/dirsrv/slapd-server
ertificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
Server-Cert-ldap u,u,u
[root@server]# /usr/bin/certutil -A -i casigning-b64.crt -d /etc/dirsrv/slapd-server -n "caSigningCert cert-pki-ca" -t "CTu,Cu,Cu"
[root@server]# /usr/bin/certutil -L -d /etc/dirsrv/slapd-server
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
Server-Cert-ldap u,u,u
caSigningCert cert-pki-ca CT,C,C
[root@server]# /usr/bin/certutil -L -d /var/lib/pki-ca/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
caSigningCert cert-pki-ca CTu,Cu,Cu
Server-Cert cert-pki-ca u,u,u
auditSigningCert cert-pki-ca u,u,Pu
LDAP Self Signed CA certificate CT,C,C
ocspSigningCert cert-pki-ca u,u,u
subsystemCert cert-pki-ca u,u,u
[root@server]# /usr/bin/certutil -D -d /var/lib/pki-ca/alias -n "LDAP Self Signed CA certificate"
[root@server]# /usr/bin/certutil -L -d /var/lib/pki-ca/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
caSigningCert cert-pki-ca CTu,Cu,Cu
Server-Cert cert-pki-ca u,u,u
auditSigningCert cert-pki-ca u,u,Pu
ocspSigningCert cert-pki-ca u,u,u
subsystemCert cert-pki-ca u,u,u
NOTE
[root@server]# /sbin/service dirsrv start
Starting dirsrv:
server...Enter PIN for Internal (Software) Token:
[ OK ]
[root@server]# /sbin/service pki-ca start
Starting pki-ca:
Using Java Security Manager
Constructing 'pki-ca.policy' Security Policy
Please provide password for internal:
Please provide password for hardware-nethsm2k:
Please provide password for internaldb:
Please provide password for replicationdb:
Starting pki-ca: [ OK ]
pki-ca (pid 26828) is running ...
Unsecure Port = http://server.example.com:9180/ca/ee/ca
Secure Agent Port = https://server.example.com:9443/ca/agent/ca
Secure EE Port = https://server.example.com:9444/ca/ee/ca
Secure Admin Port = https://server.example.com:9445/ca/services
EE Client Auth Port = https://server.example.com:9446/ca/eeca/ca
PKI Console Port = pkiconsole https://server.example.com:9445/ca
Tomcat Port = 9701 (for shutdown)
PKI Instance Name: pki-ca
PKI Subsystem Type: Root CA (Security Domain)
Registered PKI Security Domain Information:
==========================================================================
Name: Example Domain
URL: https://server.example.com:9445
==========================================================================
Note
[root@server]# pkicreate -pki_instance_root=/var/lib \
-pki_instance_name=pki-kra \
-subsystem_type=kra \
-agent_secure_port=10443 \
-ee_secure_port=10444 \
-admin_secure_port=10445 \
-unsecure_port=10180 \
-tomcat_server_port=10701 \
-user=pkiuser \
-group=pkiuser \
-audit_group=pkiaudit \
-redirect conf=/etc/pki-kra \
-redirect logs=/var/log/pki-kra \
-verbose
/opt/nfast/bin/ksafe
NOTE
[root@server]# tail /var/log/pki-kra-install.log [2011-03-27 07:46:37] [debug] Restorecon /etc/pki-kra [2011-03-27 07:46:37] [debug] Restorecon file context for /etc/pki-kra/tomcat5.conf [2011-03-27 07:46:37] [debug] Setting 'pki-kra' runlevel to '-' [2011-03-27 07:46:37] [debug] Setting 'pki-kra' start priority to '82' [2011-03-27 07:46:37] [debug] Setting 'pki-kra' stop priority to '18' [2011-03-27 07:46:37] [debug] Registered 'pki-kra' with '/sbin/chkconfig'. [2011-03-27 07:46:47] [log] Configuration Wizard listening on https://server.example.com:10445/kra/admin/console/config/login?pin=QChOc9RPvMntinwq0YIV [2011-03-27 07:46:47] [log] After configuration, the server can be operated by the command: /sbin/service pki-kra start | stop | restart
[root@server]# /usr/bin/firefox -ProfileManager -no-remote
- Welcome panel:
- Click Next>
- Key Store panel:
- Click on 'Login' for NHSM6000-OCS (nCipher's nFast Token Hardware Module)
- Provide the 'Security Module Token Password'
- Click Next>
- Back in the Key Store panel, select the 'NHSM6000-OCS' Token
- Click Next>
- Security Domain panel:
- Select 'Join an Existing Security Domain' and enter the URL to an existing security domain. This URL can be identified by running /sbin/service pki-ca status.
- Click Next>
- Display Certificate Chain panel:
- Click Next>
- Security Domain Login panel:
- Supply the admin uid name and password for the CA so that it can be properly accessed.
- Click Login
- Subsystem Type panel:
- Accept the defaults.
- Click Next>
- Internal Database panel:
- 'Host' -- server.example.com
- 'Port' -- 636 (SSL port)
- Check the 'SSL' box
- Provide the 'Bind Password' of the 'Directory Manager' (value which you gave while creating a Red Hat Directory Server instance)
- Click Next>
- Key Pairs panel:
- Accept the defaults.
- Select the 'Use the default key size (2048 bits).' radio button
- Click Next>
- Subject Names panel:
- Accept the defaults
- Click Next>
- Requests and Certificates panel:
- Click on 'Apply'
- Once the screen redraws, click on Next>
NOTE
- Export Keys and Certificates panel:
- Accept the defaults.
- Click Next>
- Administrator panel:
- UID: admin
- Name: KRA Administrator of Instance pki-kra
- Email: pki-kra-admin@example.com
- Password:
- Password (Again):
- Click Next>
- Import Administrator's Certificate panel:
- Click OK on the alert which says'Your personal certificate has been installed. You should keep a backup copy of this certificate.'
- Click Next>
- Done panel:
- Stop the DRM by running /sbin/service pki-kra stop.
- Set up the HSM, as described in Section 8.1.2, “Using Hardware Security Modules with Subsystems” and the vendor documentation.
- Install and configure the instance.
- Stop the instance. The instance must be stopped to protect the information stored in its security databases.
service
instance_namestop - Replace the SSL subsystem certificate. By default, the installation process puts the certificate on the hardware token, but it should be placed on the software FIPS token.
- Open the instance's security database directory.
cd /var/lib/
instance_name/alias - Using
certutil, create a request for a new SSL server certificate.certutil -d . -R -s "CN=server.example.com,OU=
instance_name,O=Example Domaininstance_name" -o sslfips.req -h "NSS Certificate DB" -a - Open the end entities pages for the CA (http
s://server.example.com:9444/ca/ee/ca), and use the SSL Server Cert Profile to submit the request. - Log into the agent pages (https://server.example.com:9443/ca/agent/ca), and approve the request.
- Copy the base 64-encoded certificate on the approval page and save it to a file, such as
sslfips.cert. - Check the instance's certificate database to see if an SSL server certificate is already listed.
certutil -d /var/lib/
instance_name/alias -L - If the certificate exists, then delete it.
certutil -d /var/lib/
instance_name/alias -D -n "ServerCertnickname" - Import the new SSL server certificate.
certutil -d /var/lib/
instance_name/alias -A -t "u,u,u" -n "ServerCert server.example.com - Example Domaininstance_name" -i sslfips.cert -a - Edit the
/var/lib/file to contain the nickname of the new certificate, such as ServerCert server.example.com - Example Domaininstance_name/conf/serverCertNick.confinstance_name. - Edit the
CS.cfgfile to replace both references to the SSL server certificate nickname.vim /var/lib/
instance_name/conf/CS/cfgtype.cert.sslserver.nickname= ServerCert server.example.com - Example Domaininstance_nametype.sslserver.nickname= ServerCert server.example.com - Example Domaininstance_name - Edit the
server.xmlfile to enable FIPS mode for each SSL-enabled connector. SetstrictCiphtersto true and add or setssl3to false. For example:vim /var/lib/
instance_name/conf/server.xml <Connector name="Agent" port="10443" maxHttpHeaderSize="8192" ... ... sslOptions="ssl2=false,ssl3=false,tls=true" strictCiphers="true" ... > - Enable FIPS mode in the NSS software database.
modutil -dbdir /var/lib/
instance_name/alias -fips true - Verify that FIPS mode has been enabled. The command will return the current FIPS status.
modutil -dbdir /var/lib/
instance_name/alias modutil -dbdir . -chkfips true FIPS mode enabled. - Start the instance.
service
instance_namestart
Note
[root@server]# pkicreate -pki_instance_root=/var/lib \
-pki_instance_name=pki-ocsp \
-subsystem_type=ocsp \
-agent_secure_port=11443 \
-ee_secure_port=11444 \
-admin_secure_port=11445 \
-unsecure_port=11180 \
-tomcat_server_port=11701 \
-user=pkiuser \
-group=pkiuser \
-audit_group=pkiaudit \
-redirect conf=/etc/pki-ocsp \
-redirect logs=/var/log/pki-ocsp \
-verbose
NOTE
[root@server]# tail /var/log/pki-ocsp-install.log [2011-03-27 07:22:03] [debug] Restorecon /etc/pki-ocsp [2011-03-27 07:22:03] [debug] Restorecon file context for /etc/pki-ocsp/tomcat5.conf [2011-03-27 07:22:04] [debug] Setting 'pki-ocsp' runlevel to '-' [2011-03-27 07:22:04] [debug] Setting 'pki-ocsp' start priority to '83' [2011-03-27 07:22:04] [debug] Setting 'pki-ocsp' stop priority to '17' [2011-03-27 07:22:04] [debug] Registered 'pki-ocsp' with '/sbin/chkconfig'. [2011-03-27 07:22:13] [log] Configuration Wizard listening on https://server.example.com:11445/ocsp/admin/console/config/login?pin=xpjt2dv5zbjrdafGTaqT [2011-03-27 07:22:13] [log] After configuration, the server can be operated by the command: /sbin/service pki-ocsp start | stop | restart
[root@server]# /usr/bin/firefox -ProfileManager -no-remote
- Welcome panel:
- Click Next>
- Key Store panel:
- Click on 'Login' for NHSM6000-OCS (nCipher's nFast Token Hardware Module)
- Provide the 'Security Module Token Password'
- Click Next>
- Back in the Key Store panel, select the 'NHSM6000-OCS' Token
- Click Next>
- Security Domain panel:
- Select 'Join an Existing Security Domain' and enter the URL to an existing security domain. This URL can be identified by running /sbin/service pki-ca status.
- Click Next>
- Display Certificate Chain panel:
- Click Next>
- Security Domain Login panel:
- Supply the admin uid name and password for the CA so that it can be properly accessed.
- Click Login
- Subsystem Type panel:
- Accept the defaults.
- Click Next>
- Internal Database panel:
- 'Host' -- server.example.com
- 'Port' -- 636 (SSL port)
- Check the 'SSL' box
- Provide the 'Bind Password' of the 'Directory Manager' (value which you gave while creating a Red Hat Directory Server instance)
- Click Next>
- Key Pairs panel:
- Accept the defaults.
- Select the 'Use the default key size (2048 bits).' radio button
- Click Next>
- Subject Names panel:
- Accept the defaults
- Click Next>
- Requests and Certificates panel:
- Click on 'Apply'
- Once the screen redraws, click on Next>
NOTE
- Export Keys and Certificates panel:
- Accept the defaults.
- Click Next>
- Administrator panel:
- UID: admin
- Name: OCSP Administrator of Instance pki-ocsp
- Email: pki-ocsp-admin@example.com
- Password:
- Password (Again):
- Click Next>
- Import Administrator's Certificate panel:
- Click OK on the alert which says'Your personal certificate has been installed. You should keep a backup copy of this certificate.'
- Click Next>
- Done panel:
- Stop the OCSP Responder by running /sbin/service pki-ocsp stop.
- Set up the HSM, as described in Section 8.1.2, “Using Hardware Security Modules with Subsystems” and the vendor documentation.
- Install and configure the instance.
- Stop the instance. The instance must be stopped to protect the information stored in its security databases.
service
instance_namestop - Replace the SSL subsystem certificate. By default, the installation process puts the certificate on the hardware token, but it should be placed on the software FIPS token.
- Open the instance's security database directory.
cd /var/lib/
instance_name/alias - Using
certutil, create a request for a new SSL server certificate.certutil -d . -R -s "CN=server.example.com,OU=
instance_name,O=Example Domaininstance_name" -o sslfips.req -h "NSS Certificate DB" -a - Open the end entities pages for the CA (http
s://server.example.com:9444/ca/ee/ca), and use the SSL Server Cert Profile to submit the request. - Log into the agent pages (https://server.example.com:9443/ca/agent/ca), and approve the request.
- Copy the base 64-encoded certificate on the approval page and save it to a file, such as
sslfips.cert. - Check the instance's certificate database to see if an SSL server certificate is already listed.
certutil -d /var/lib/
instance_name/alias -L - If the certificate exists, then delete it.
certutil -d /var/lib/
instance_name/alias -D -n "ServerCertnickname" - Import the new SSL server certificate.
certutil -d /var/lib/
instance_name/alias -A -t "u,u,u" -n "ServerCert server.example.com - Example Domaininstance_name" -i sslfips.cert -a - Edit the
/var/lib/file to contain the nickname of the new certificate, such as ServerCert server.example.com - Example Domaininstance_name/conf/serverCertNick.confinstance_name. - Edit the
CS.cfgfile to replace both references to the SSL server certificate nickname.vim /var/lib/
instance_name/conf/CS/cfgtype.cert.sslserver.nickname= ServerCert server.example.com - Example Domaininstance_nametype.sslserver.nickname= ServerCert server.example.com - Example Domaininstance_name - Edit the
server.xmlfile to enable FIPS mode for each SSL-enabled connector. SetstrictCiphtersto true and add or setssl3to false. For example:vim /var/lib/
instance_name/conf/server.xml <Connector name="Agent" port="11443" maxHttpHeaderSize="8192" ... ... sslOptions="ssl2=false,ssl3=false,tls=true" strictCiphers="true" ... > - Enable FIPS mode in the NSS software database.
modutil -dbdir /var/lib/
instance_name/alias -fips true - Verify that FIPS mode has been enabled. The command will return the current FIPS status.
modutil -dbdir /var/lib/
instance_name/alias modutil -dbdir . -chkfips true FIPS mode enabled. - Start the instance.
service
instance_namestart
[root@server]# /usr/bin/pkiconsole https://server.example.com:9445/ca
- For Admin users:
- adminV (this user will have a valid certificate throughout testing)
- adminR (this user will have a revoked certificate)
- adminE (this user will have an expired certificate)
- adminTCA (this user's certificate will be signed by a trusted CA)
- adminC (initially this user will be assigned to the administrator group; during the testing process this user will be assigned to a different group)
- adminUTCA (this user's certificate will be issued by an untrusted CA) [Note: This requires a second CA setup!]
- For Agent users:
- agentV (this user will have a valid certificate throughout testing)
- agentR (the status of this user's certificate is Revoked)
- agentE (this user's certificate is in the expired state)
- adminTCA (this user's certificate will be signed by a trusted CA)
- agentTCA (this user's certificate will be issued by a trusted CA))
- agentUTCA (this user's certificate will be issued by an untrusted CA) [Note: This requires a second CA setup!]
- For Audit users:
- auditV (this user will have a valid certificate throughout testing)
- To Revoke Certificates
- To Achieve Expired Certificates
Expired Certificates
From CA EE pages, submit enrollment requests for all of these users.From the CA Agent port, approve these requests. When approving expired certs, remember to change 'notAfter' to point to 1-day.
Note
- Select the URL that points to the Secure End-Entity Port of the previously configured CA and open the browser to this URL.
Note
- Click on the tab labeled Retrieval
- Select the URL called Import CA Certificate Chain
- Select the radio button for Import the CA certificate chain into your browser
- Click on the submit button.
- Click OK for the prompt 'You will now be asked to import and trust the Certificate Chain from the CA. Please do so.'
- Select the check-boxes for:
- Check 'Trust this CA to identify web sites'
- Check 'Trust this CA to identify email users'
- Check 'Trust this CA to identify software developers'
- Click OK to dismiss this dialog box
[root@server]# /usr/sbin/visudo
# For Directory Server services %pkiadmin ALL = PASSWD: /sbin/service dirsrv * %pkiadmin ALL = PASSWD: /sbin/service dirsrv-admin * # For PKI instance management %pkiadmin ALL = PASSWD: /usr/bin/pkicreate * %pkiadmin ALL = PASSWD: /usr/bin/pkiremove * # For PKI instance services %pkiadmin ALL = PASSWD: /sbin/service pki-ca * %pkiadmin ALL = PASSWD: /sbin/service pki-kra * %pkiadmin ALL = PASSWD: /sbin/service pki-ocsp *
Note
Note
Note
Important
[root@server]# pwd
/var/lib/pki-ca/conf
[root@server]# rm -rf password.conf
[root@server]# /sbin/service pki-ca restart
Stopping pki-ca: .. [ OK ]
Starting pki-ca:
Using Java Security Manager
Constructing 'pki-ca.policy' Security Policy
Please provide password for internal:
Please provide password for hardware-nethsm2k:
Please provide password for internaldb:
Please provide password for replicationdb:
Starting pki-ca: [ OK ]
pki-ca (pid 26928) is running ...
Unsecure Port = http://server.example.com:9180/ca/ee/ca
Secure Agent Port = https://server.example.com:9443/ca/agent/ca
Secure EE Port = https://server.example.com:9444/ca/ee/ca
Secure Admin Port = https://server.example.com:9445/ca/services
EE Client Auth Port = https://server.example.com:9446/ca/eeca/ca
PKI Console Port = pkiconsole https://server.example.com:9445/ca
Tomcat Port = 9701 (for shutdown)
PKI Instance Name: pki-ca
PKI Subsystem Type: Root CA (Security Domain)
Registered PKI Security Domain Information:
==========================================================================
Name: Example Domain
URL: https://server.example.com:9445
==========================================================================
Note
[root@server]# wget http://www.cs.auckland.ac.nz/~pgut001/dumpasn1.c [root@server]# /usr/bin/gcc -o dumpasn1 dumpasn1.c [root@server]# cp dumpasn1 /usr/local/bin/
- Stop the server:
service pki-ca stop
- Open the
CS.cfgfile:vim /var/lib/pki-ca/conf/CS.cfg
- Modify the current setting of
multiroles.enable=trueand change it tomultiroles.enable=false. - Restart the server:
service pki-ca restart
- Log into the system as root.
- Stop all Certificate System subsystems.
service
instance_namestop # rpm -q acl acl-2.2.39-6.el5
- /
- /etc (including /etc/init.d and /etc/sysconfig)
- /usr (including /usr/bin and /usr/share)
- /var (including /var/lock and /var/run)
First, check to see where the filesystems are mounted and whether theacloption is used:# mount /dev/sda1 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sdb1 on /usr type ext2 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
In this example,/,/etc, and/varare mounted on/dev/sda1, while/usris mounted on/dev/sdb1.There are two ways to apply theacloption to the filesystems:- Using
tune2fs:# /sbin/tune2fs -o +acl /dev/sda1 # /sbin/tune2fs -o +acl /dev/sdb1
- Editing the
/etc/fstabfile:# vim /etc/fstab LABEL=/ / ext3 defaults
,acl1 1 LABEL=/usr /usr ext2 defaults,acl1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 LABEL=SWAP-sdb2 swap swap defaults 0 0 LABEL=SWAP-sda2 swap swap defaults 0 0
Then, remount the filesystems.# mount -o remount / # mount -o remount /usr
Confirm that theacloption has been applied to the filesystems:# /sbin/dumpe2fs /dev/sda1 | grep acl dumpe2fs 1.39 (29-May-2006) Default mount options: user_xattr acl # /sbin/dumpe2fs /dev/sdb1 | grep acl dumpe2fs 1.39 (29-May-2006) Default mount options: acl # mount | grep acl /dev/sda1 on / type ext3 (rw,acl) /dev/sdb1 on /usr type ext2 (rw,acl)
- Stop the instance.
service
instance_namestop - Set the group readability to the pkiadmin group for the instance's directories and files.
# setfacl -R -L -m g:pkiadmin:r,d:g:pkiadmin:r /var/lib/
instance_name - Apply execute (x) ACL permissions on all directories:
# find -L /var/lib/
instance_name-type d -exec setfacl -L -n -m g:pkiadmin:rx,d:g:pkiadmin:rx {} \; - Remove group readability for the pkiadmin group from the instance's signedAudit/ directory and its associated files:
# setfacl -R -L -x g:pkiadmin,d:g:pkiadmin /var/lib/
instance_name/logs/signedAudit - Set group readability for the pkiaudit group for the instance's signedAudit/ directory and its associated files:
# setfacl -R -L -m g:pkiaudit:r,d:g:pkiaudit:r /var/lib/
instance_name/logs/signedAudit - Re-apply execute (x) ACL permissions on the signedAudit/ directory and all of its subdirectories:
# find -L /var/lib/
instance_name/logs/signedAudit -type d -exec setfacl -L -n -m g:pkiaudit:rx,d:g:pkiaudit:rx {} \; - Start the instance.
service
instance_namestart - Confirm that the file access controls were properly applied by using the
getfaclcommand to show the current ACL settings:# getfacl /var/lib/
instance_name/var/log/pki-name/logs/signedAudit/ getfacl: Removing leading '/' from absolute path names # file: var/lib/instance_name# owner: pkiuser # group: pkiuser user::rwx group::rwx group:pkiadmin:r-x mask::rwx other::r-x default:user::rwx default:group::rwx default:group:pkiadmin:r-x default:mask::rwx default:other::r-x # file: var/lib/instance_name/logs/signedAudit # owner: pkiuser # group: pkiaudit user::rwx group::rwx group:pkiaudit:r-x mask::rwx other::--- default:user::rwx default:group::rwx default:group:pkiaudit:r-x default:mask::rwx default:other::---
NOTE
- Machine-1: Directory Server, Certificate Authority subsystem
- Machine-2: Data Recovery Management subsystem, Online Certificate Status Protocol Responder, Token Key Service subsystem
- Machine-3: Token Processing System subsystem
[root@server1]# yum -y update
NOTE
- Apache 2.2.3
- Tomcat 5.5.23
- Red Hat Directory Server 8.2
- Red Hat Certificate System subsystems:
- Certificate Authority (CA)
- Data Recovery Management (DRM) - also called a Key Recovery Authority (KRA)
- Token Key Service (TKS)
- Token Processing System (TPS)
- Enterprise Security Client (ESC)
- Online Certificate Status Protocol (OCSP) Responder
- Red Hat Certificate System Console
- Firefox 10 and later
- ESC (Enterprise Security Client)
- Open JDK/JRE 1.6
- JSS 4.6
- NSS 3.12
- nss-tools 3.12
- mozldap-tools
NOTE
[root@server1]# mkdir /mnt/iso
[root@server1]# cd /mnt/iso/document
[root@server1]# mount -o loop /tmp/nCSS_linux64_user_11_40.iso /mnt/iso/
[root@server1]# ls dr-xr-xr-x 2 root root 2048 Aug 2 2010 netHSM -r-xr-xr-x 1 root root 967656 Aug 2 2010 nShield_Connect_Physical_Security_Checklist.pdf -r-xr-xr-x 1 root root 310693 Aug 2 2010 nShield_Connect_Quick_Start_Guide.pdf -r-xr-xr-x 1 root root 2409806 Aug 2 2010 nShield_Connect_User_Guide.pdf -r-xr-xr-x 1 root root 610234 Aug 2 2010 nShield_Hardware_Installation.pdf -r-xr-xr-x 1 root root 278386 Aug 2 2010 nShield_Quick_Start_Guide.pdf -r-xr-xr-x 1 root root 2449190 Aug 2 2010 nShield_User_Guide.pdf -r-xr-xr-x 1 root root 255087 Aug 2 2010 nToken_Install_Guide.pdf
[root@server1]# /opt/nfast/bin/enquiry | grep -i status connection status OK
/opt/nfast/bin/ksafe
NOTE
[root@server1]# /usr/sbin/getenforce Enforcing
[root@server1]# /usr/sbin/sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 21 Policy from config file: targeted
NOTE
[root@server1]# grep pkiuser /etc/group pkiuser:x:17:
[root@server1]# grep pkiuser /etc/passwd pkiuser:x:17:17:Red Hat Certificate System:/usr/share/pki:/sbin/nologin
[root@server1]# rpm -q setup setup-2.5.58-7.el5
[root@server1]# rpm -q shadow-utils shadow-utils-4.0.17-15.el5
[root@server1]# /usr/sbin/groupadd -g 17 -r pkiuser
[root@server1]# /usr/sbin/useradd -g pkiuser -d /usr/share/pki -s /sbin/nologin -c "Red Hat Certificate System" -u 17 -r pkiuser
[root@server1]# /usr/sbin/userdel pkiuser
[root@server1]# /usr/sbin/groupdel pkiuser
[root@server1]# /usr/sbin/groupadd -g 17 -r pkiuser
[root@server1]# /usr/sbin/useradd -g pkiuser -d /usr/share/pki -s /sbin/nologin -c "Red Hat Certificate System" -u 17 -r pkiuser
[root@server1]# /usr/sbin/groupadd -r pkiadmin
[root@server1]# /usr/sbin/groupadd -r pkiaudit
Note
[root@server1]# /usr/sbin/useradd -g pkiadmin -d /home/jsmith -s /bin/bash -c "Red Hat Certificate System Administrator" -m jsmith
[root@server1]# /usr/sbin/useradd -g pkiaudit -d /home/sjones -s /bin/bash -c "Red Hat Certificate System Auditor" -m sjones
NOTE
[root@server1]# /usr/sbin/usermod -a -G pkiadmin pkiuser
[root@server1]# /usr/sbin/usermod -a -G pkiaudit pkiuser
Important
[root@server1]# grep mnelson /etc/group mnelson:x:1099:
[root@server1]# grep mnelson /etc/passwd mnelson:x:1099:1099:Mary Nelson:/home/mnelson:/bin/bash
[root@server1]# /usr/sbin/usermod -a -G pkiadmin mnelson
[root@server1]# grep blarson /etc/group blarson:x:1257:
[root@server1]# grep blarson /etc/passwd blarson:x:1257:1257:Bob Larson:/home/blarson:/bin/bash
[root@server1]# /usr/sbin/usermod -a -G pkiaudit blarson
[root@server1]# /usr/sbin/usermod -a -G nfast pkiuser
[root@server1]# /usr/sbin/usermod -a -G nfast jsmith
[root@server1]# /usr/sbin/usermod -a -G nfast mnelson
[root@server1]# groups pkiuser jsmith sjones mnelson blarson pkiuser : pkiuser pkiadmin pkiaudit nfast jsmith : pkiadmin nfast sjones : pkiaudit mnelson : mnelson pkiadmin nfast blarson : blarson pkiaudit
NOTE
NOTE
[root@server1]# yum install openldap-clients
[root@server1]# yum install redhat-ds
NOTE
[root@server1]# yum install pki-ca
[root@server1]# yum install pki-console
[root@server1]# yum -y update
[root@server2]# yum install pki-kra
[root@server2]# yum install pki-ocsp
[root@server2]# yum install pki-tks
[root@server2]# yum install pki-console
[root@server2]# yum -y update
[root@server3]# yum install pki-tps
[root@server3]# yum -y update
NOTE
[root@server1]# restorecon -R /opt/nfast
[root@server1]# restorecon -R /dev/nfast
[root@server1]# /opt/nfast/sbin/init.d-ncipher restart
Important
NOTE
Important
NOTE
Note
[root@server1]# pkicreate -pki_instance_root=/var/lib \
-pki_instance_name=pki-ca \
-subsystem_type=ca \
-agent_secure_port=9443 \
-ee_secure_port=9444 \
-ee_secure_client_auth_port=9446 \
-admin_secure_port=9445 \
-unsecure_port=9180 \
-tomcat_server_port=9701 \
-user=pkiuser \
-group=pkiuser \
-audit_group=pkiaudit \
-redirect conf=/etc/pki-ca \
-redirect logs=/var/log/pki-ca \
-verbose
Note
[root@server1]# /sbin/service pki-ca stop Stopping pki-ca: .. [ OK ]
[root@server1]# /sbin/service dirsrv stop Shutting down dirsrv: server1... [ OK ]
[root@server1]# cd /etc/dirsrv/slapd-server1/
[root@server1]# ls cert8.db dse.ldif dse.ldif.startOK key3.db secmod.db certmap.conf dse.ldif.bak dse_original.ldif schema slapd-collations.conf
[root@server1]# tar -cf /tmp/db-backup.tar *
[root@server1]# echo Secret123 > /tmp/pwdfile
[root@server1]# /usr/bin/certutil -W -d . -f /tmp/pwdfile
NOTE
[root@server1]# /usr/bin/certutil -S -n "LDAP self-signed CA certificate" -s "cn=LDAPCA-cert,dc=example,dc=com" -2 -x -t "CT,," -m 1000 -v 120 -d . -k rsa -f /tmp/pwdfile A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard until this progress meter is full. DO not USE THE AUTorEPEAT FUNCTION ON YOUR KEYBOARD! Continue typing until the progress meter is full: |************************************************************| Finished. Press enter to continue: Generating key. This may take a few moments... Is this a CA certificate [y/N]? y Enter the path length constraint, enter to skip [<0 for unlimited path]: > -1 Is this a critical extension [y/N]? y
[root@server1]# /usr/bin/certutil -S -n "Server-Cert-ldap" -s "cn=server1.example.com" -c "LDAP self-signed CA certificate" -t "u,u,u" -m 1001 -v 120 -d . -k rsa -f /tmp/pwdfile A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard until this progress meter is full. DO not USE THE AUTorEPEAT FUNCTION ON YOUR KEYBOARD! Continue typing until the progress meter is full: |************************************************************| Finished. Press enter to continue: Generating key. This may take a few moments...
[root@server1]# /usr/bin/certutil -L -d /etc/dirsrv/slapd-server1
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
Server-Cert-ldap u,u,u
LDAP self-signed CA certificate CTu,u,u
[root@server1]# /sbin/service dirsrv start
Starting dirsrv:
server1... [ OK ]
NOTE
[root@server1]# cat <<EOF > /tmp/example.ldif > dn: cn=config > changetype: modify > replace: nsslapd-security > nsslapd-security: on > - > replace: nsslapd-securePort > nsslapd-secureport: 636 > > dn: cn=encryption,cn=config > changetype: modify > replace: nsssl3 > nsssl3: on > - > replace: nsssl3ciphers > nsssl3ciphers: -rsa_null_md5,+rsa_rc4_128_md5,+rsa_rc4_40_md5,+rsa_rc2_40_md5,+rsa_des_sha,+rsa_fips_des_sha,+rsa_3des_sha,+rsa_fips_3des_sha,+fortezza,+fortezza_rc4_128_sha,+fortezza_null,+tls_rsa_export1024_with_rc4_56_sha,+tls_rsa_export1024_with_des_cbc_sha > - > replace: nssslclientauth > nssslclientauth: allowed > > dn: cn=RSA,cn=encryption,cn=config > changetype: add > objectclass: top > objectclass: nsEncryptionModule > cn: RSA > nsssltoken: internal (software) > nssslpersonalityssl: Server-Cert-ldap > nssslactivation: on > EOF
[root@server1]# /usr/bin/ldapmodify -x -h server1.example.com -p 389 -D "cn=Directory Manager" -w Secret123 -f /tmp/example.ldif modifying entry "cn=config" modifying entry "cn=encryption,cn=config" adding new entry "cn=RSA,cn=encryption,cn=config"
[root@server1]# egrep -i 'nsslapd-security|nsssl3|nssslclientauth|nssslpersonalityssl|nsSSLActivation' /etc/dirsrv/slapd-server1/dse.ldif nsslapd-security: on nsSSLClientAuth: allowed nsSSL3: on nsSSL3Ciphers: -rsa_null_md5,+rsa_rc4_128_md5,+rsa_rc4_40_md5,+rsa_rc2_40_md5, nsSSLPersonalitySSL: Server-Cert-ldap nsSSLActivation: on
NOTE
[root@server1]# /sbin/service dirsrv restart
Shutting down dirsrv:
server1... [ OK ]
Starting dirsrv:
server1...Enter PIN for Internal (Software) Token:
[ OK ]
[root@server1]# /usr/lib64/mozldap/ldapsearch -h server1.example.com -p 636 -Z -P /etc/dirsrv/slapd-server1/cert8.db -D "cn=directory manager" -w Secret123 -b "cn=config" objectclass=* dn version: 1 dn: cn=config dn: cn=encryption,cn=config dn: cn=features,cn=config dn: cn=mapping tree,cn=config . . .
[root@server1]# /usr/bin/certutil -L -d /etc/dirsrv/slapd-server1 -n "LDAP self-signed CA certificate" -a > ldap-ca.crt
[root@server1]# /usr/bin/certutil -A -i ldap-ca.crt -t "CT,C,C" -d /var/lib/pki-ca/alias -n "LDAP self-signed CA certificate"
Important
[root@server1]# /usr/bin/certutil -L -d /var/lib/pki-ca/alias/
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
LDAP self-signed CA certificate CT,C,C
Server-Cert cert-pki-ca CTu,Cu,Cu
[root@server1]# /sbin/service pki-ca start
Starting pki-ca:
Using Java Security Manager
Constructing 'pki-ca.policy' Security Policy
Starting pki-ca: [ OK ]
pki-ca (pid 26728) is running ...
'pki-ca' must still be CONFIGURED!
(see /var/log/pki-ca-install.log)
[root@server1]# tail /var/log/pki-ca-install.log [2011-03-27 01:40:59] [debug] Restorecon file context for /etc/pki-ca/tomcat5.conf [2011-03-27 01:40:59] [debug] Setting selinux context pki_ca_port_t for 9446 [2011-03-27 01:41:04] [debug] Setting 'pki-ca' runlevel to '-' [2011-03-27 01:41:04] [debug] Setting 'pki-ca' start priority to '81' [2011-03-27 01:41:04] [debug] Setting 'pki-ca' stop priority to '19' [2011-03-27 01:41:04] [debug] Registered 'pki-ca' with '/sbin/chkconfig. [2011-03-27 01:41:14] [log] Configuration Wizard listening on https://server1.example.com:9445/ca/admin/console/config/login?pin=rci6U5OFSeuT92X3HbhG [2011-03-27 01:41:14] [log] After configuration, the server can be operated by the command: /sbin/service pki-ca start | stop | restart
Important
[root@server1]# /usr/bin/firefox -ProfileManager -no-remote
- Click Next>
- Enter new profile name: server
- Click Finish
- Welcome panel:
- Click Next>
- Key Store panel:
- Click Login for NHSM6000-OCS (nCipher's nFast Token Hardware Module)
- Provide the security module token password.
- Click Next>.
- Back in the Key Store panel, select the NHSM6000-OCS Token.
- Click Next>.
- Security Domain panel:
- Accept the defaults.
- Click Next>.
- Subsystem Type panel:
- Accept the defaults.
- Click Next>.
- PKI Hierarchy panel:
- Accept the defaults.
- Click Next>.
- Internal Database panel:
- Host -- server1.example.com
- Port -- 636 (SSL port)
- Check the SSL box.
- Provide the bind password of the Directory Manager (value which you gave while creating a Red Hat Directory Server instance).
- Click Next>.
- Key Pairs panel:
- Accept the defaults.
- Select the Use the default key size (2048 bits). radio button.
- Click Next>.
- Subject Names panel:
- Accept the defaults.
- Click Next>.
- Requests and Certificates panel:
- Click Apply.
- Once the screen redraws, click Next>.
NOTE
- Export Keys and Certificates panel:
- Accept the defaults.
- Click Next>.
- Import CA's Certificate Chain panel:
- Click OK for the prompt 'You will now be asked to import and trust the Certificate Chain from the CA. Please do so.'
- Select the checkboxes for:
- Check 'Trust this CA to identify web sites'.
- Check 'Trust this CA to identify email users'.
- Check 'Trust this CA to identify software developers'.
- Click OK to dismiss this dialog box.
- Click Next>.
- Administrator panel:
- UID: admin.
- Name: CA Administrator of Instance pki-ca.
- Email: pki-ca-admin@example.com.
- Password:
- Password (Again):
- Click Next>.
- Import Administrator's Certificate panel:
- Click OK on the alert which says 'Your personal certificate has been installed. You should keep a backup copy of this certificate.'
- Click Next>.
- Done panel:
- Restart the CA by running /sbin/service pki-ca restart.
- Set up the HSM, as described in Section 8.1.2, “Using Hardware Security Modules with Subsystems” and the vendor documentation.
- Install and configure the CA instance.
- Stop the CA instance. The instance must be stopped to protect the information stored in its security databases.
service pki-ca stop
- Replace the SSL subsystem certificate. By default, the installation process puts the certificate on the hardware token, but it should be placed on the software FIPS token.
- Open the CA's security database directory.
cd /var/lib/pki-ca/alias
- Using
certutil, create a request for a new SSL server certificate.certutil -d . -R -s "CN=server1.example.com,OU=pki-ca,O=Example Domain pki-ca" -o sslfips.req -h "NSS Certificate DB" -a
- Restart the CA.
service pki-ca start
- Open the end entities pages for the CA (http
s://server.example.com:9444/ca/ee/ca), and use the SSL Server Cert Profile to submit the request. - Log into the agent pages (https://server.example.com:9443/ca/agent/ca), and approve the request.
- Copy the base 64-encoded certificate on the approval page and save it to a file, such as
sslfips.cert. - Stop the CA again.
service pki-ca stop
- Check the CA's certificate database to see if an SSL server certificate is already listed.
certutil -d /var/lib/pki-ca/alias -L
- If the certificate exists, then delete it.
certutil -d /var/lib/pki-ca/alias -D -n "ServerCert
nickname" - Import the new SSL server certificate.
certutil -d /var/lib/pki-ca/alias -A -t "u,u,u" -n "ServerCert server1.example.com - Example Domain pki-ca" -i sslfips.cert -a
- Edit the
/var/lib/pki-ca/conf/serverCertNick.conffile to contain the nickname of the new certificate, such as ServerCert ca.example.com - Example Domain pki-ca. - Edit the
CS.cfgfile to replace both references to the SSL server certificate nickname.vim /var/lib/pki-ca/conf/CS/cfg ca.cert.sslserver.nickname= ServerCert ca.example.com - Example Domain pki-ca ca.sslserver.nickname= ServerCert ca.example.com - Example Domain pki-ca
- In the
CS.cfgfile, add a line to verify signatures from the token. The value is the token name, which depends on the vendor and version of the HSM. For example, for a NetHSM token:ca.requestVerify.token=NHSM6000-OCS
- Edi the
server.xmlfile to enable FIPS mode for each SSL-enabled connector. SetstrictCiphtersto true and add or setssl3to false.vim /var/lib/pki-ca/conf/server.xml <Connector name="Agent" port="9443" maxHttpHeaderSize="8192" ... ... sslOptions="ssl2=false,ssl3=false,tls=true" strictCiphers="true" ... > - Enable FIPS mode in the NSS software database.
modutil -dbdir /var/lib/pki-ca/alias -fips true
- Verify that FIPS mode has been enabled. The command will return the current FIPS status.
modutil -dbdir /var/lib/pki-ca/alias modutil -dbdir . -chkfips true FIPS mode enabled. - Start the CA.
service pki-ca start
[root@server1]# cd /etc/dirsrv/slapd-server1/
[root@server1]# /usr/bin/certutil -R -s "cn=server1.example.com" -o Server-Cert-ldap.req -d . -n "Server-Cert-ldap" -a Enter Password or Pin for "NSS Certificate DB": A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard until this progress meter is full. DO not USE THE AUTorEPEAT FUNCTION ON YOUR KEYBOARD! Continue typing until the progress meter is full: |************************************************************| Finished. Press enter to continue: Generating key. This may take a few moments...
[root@server1]# cat /etc/dirsrv/slapd-server1/Server-Cert-ldap.req Certificate request generated by Netscape certutil Phone: (not specified) Common Name: server1.example.com Email: (not specified) Organization: (not specified) State: (not specified) Country: (not specified) -----BEGIN NEW CERTIFICATE REQUEST----- MIIBZjCB0AIBADAnMSUwIwYDVQQDExxtZWF0cGllLmRzZGV2LnNqYy5yZWRoYXQu Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCiCR7kumfiUOzvkUYoD7w 1u0TFjwtCpc1CHaOUzGF7jqqHQ4v1asLbJlTMeFO6pqayQbIt0DhzmzhNcZueSP+ mEMgKq1pqo7rsGGt9JBaRYSJCE8sbCLih0oCOieeSrSplJIMuXY4a3mnZkKZrhiP kmEsRYO7ahtf61bvHM/rdwIDAQABoAAwDQYJKoZIhvcNAQEFBQADgYEAuUMC4r1Y 8qBmf9//4OtY4n8dQ16460BMcgn5yQqTJ0fN0zZC1gydZo6P4ibm8txMBVcW/sVw sUpGFmSc+APufeQUUUbG7c4I1Z2RD8YnhysBpMwasvU8W++D25YjfyGwHg8FYAgI OYRTGzapYwo3mvSPd9GJYQXTWtQzXS2SJU0= -----END NEW CERTIFICATE REQUEST-----
[root@server1]# /usr/bin/firefox -ProfileManager -no-remote
Note
- Cut the certificate request contained in the file called /etc/dirsrv/slapd-server1/Server-Cert-ldap.req and paste it into the area called Certificate Request on the form:
-----BEGIN NEW CERTIFICATE REQUEST----- MIIBZjCB0AIBADAnMSUwIwYDVQQDExxtZWF0cGllLmRzZGV2LnNqYy5yZWRoYXQu Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCiCR7kumfiUOzvkUYoD7w 1u0TFjwtCpc1CHaOUzGF7jqqHQ4v1asLbJlTMeFO6pqayQbIt0DhzmzhNcZueSP+ mEMgKq1pqo7rsGGt9JBaRYSJCE8sbCLih0oCOieeSrSplJIMuXY4a3mnZkKZrhiP kmEsRYO7ahtf61bvHM/rdwIDAQABoAAwDQYJKoZIhvcNAQEFBQADgYEAuUMC4r1Y 8qBmf9//4OtY4n8dQ16460BMcgn5yQqTJ0fN0zZC1gydZo6P4ibm8txMBVcW/sVw sUpGFmSc+APufeQUUUbG7c4I1Z2RD8YnhysBpMwasvU8W++D25YjfyGwHg8FYAgI OYRTGzapYwo3mvSPd9GJYQXTWtQzXS2SJU0= -----END NEW CERTIFICATE REQUEST-----
- Press the Submit button
- A page entitled Certificate Profile should appear noting a request ID.
Note
- Click List Requests
- Click Find
- Click the request id labeled CN=server1.example.com
- Scroll to the bottom of this request, and click the submit button to approve this request.
- Scroll to the bottom of the approved request and highlight the Base-64 Encoded Certificate:
-----BEGIN CERTIFICATE----- MIIDETCCAfmgAwIBAgIBBzANBgkqhkiG9w0BAQsFADBRMR4wHAYDVQQKExVEc2Rl dlNqY1JlZGhhdCBEb21haW4xDzANBgNVBAsTBnBraS1jYTEeMBwGA1UEAxMVQ2Vy dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTExMDQwNTE0NTYwNFoXDTEzMDMyNTE0NTYw NFowJzElMCMGA1UEAxMcbWVhdHBpZS5kc2Rldi5zamMucmVkaGF0LmNvbTCBnzAN BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwogke5Lpn4lDs75FGKA+8NbtExY8LQqX NQh2jlMxhe46qh0OL9WrC2yZUzHhTuqamskGyLdA4c5s4TXGbnkj/phDICqtaaqO 67BhrfSQWkWEiQhPLGwi4odKAjonnkq0qZSSDLl2OGt5p2ZCma4Yj5JhLEWDu2ob X+tW7xzP63cCAwEAAaOBoTCBnjAfBgNVHSMEGDAWgBSZf6S8So4MpJJ4y00tJUo2 2pPsuTBMBggrBgEFBQcBAQRAMD4wPAYIKwYBBQUHMAGGMGh0dHA6Ly9tZWF0cGll LmRzZGV2LnNqYy5yZWRoYXQuY29tOjkxODAvY2Evb2NzcDAOBgNVHQ8BAf8EBAMC BPAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUA A4IBAQBBw349t89Jny3L1/Txf49cGXzmNG0s2Fi8tW/1XTP4RmcJhnifAGAmlViQ ZgHzYZ4VoBw9a5m4WyiXo1JZ3SfyqsKSqEAa6vGhFNTgN0XPQKzIKWcbIWZqX+/B SqPYwl4HYpf+BWtIRjCtP6Mxaold8CEiYzRaEYqbVIgmNluQ7kmH2rTS+r0OSOyH qZeJ1GGU/u6+/a4jKmx3bHyFWkdmcwWgnkwCLO8/xnIqhsaPL8Z4Wlw7OTMXEghp iZKzhLAkcs232sMNbCjsXabUo5+uvJy4+bYXTLoJoOBpWcs8141+B3GtUlW3xIPr U0jjGCnKgczztRf+/5Ut3wWWKNGB -----END CERTIFICATE-----
- Copy this highlighted Base-64 Encoded certificate and paste it into a file called /etc/dirsrv/slapd-server1/ldap-server-b64.crt.
- Obtain the CA's signing certificate into a base-64-encoded pem format:
[root@server1]# /usr/bin/certutil -L -d /var/lib/pki-ca/alias/ -n "caSigningCert cert-pki-ca" -a > /etc/dirsrv/slapd-server1/casigning-b64.crt
[root@server1]# /sbin/service pki-ca stop Stopping pki-ca: .. [ OK ]
[root@server1]# /sbin/service dirsrv stop
Shutting down dirsrv:
server1... [ OK ]
[root@server1]# /usr/bin/certutil -D -d . -n "Server-Cert-ldap"
[root@server1]# /usr/bin/certutil -A -i ldap-server-b64.crt -d . -n "Server-Cert-ldap" -t "u,u,u"
[root@server1]# /usr/bin/certutil -A -i casigning-b64.crt -d /etc/dirsrv/slapd-server1 -n "caSigningCert cert-pki-ca" -t "CTu,Cu,Cu"
[root@server1]# /usr/bin/certutil -D -d /var/lib/pki-ca/alias -n "LDAP self-signed CA certificate"
NOTE
[root@server1]# /sbin/service dirsrv start
Starting dirsrv:
server1...Enter PIN for Internal (Software) Token:
[ OK ]
[root@server1]# /sbin/service pki-ca start
Starting pki-ca:
Using Java Security Manager
Constructing 'pki-ca.policy' Security Policy
Please provide password for internal:
Please provide password for hardware-nethsm2k:
Please provide password for internaldb:
Please provide password for replicationdb:
Starting pki-ca: [ OK ]
pki-ca (pid 26828) is running ...
Unsecure Port = http://server1.example.com:9180/ca/ee/ca
Secure Agent Port = https://server1.example.com:9443/ca/agent/ca
Secure EE Port = https://server1.example.com:9444/ca/ee/ca
Secure Admin Port = https://server1.example.com:9445/ca/services
EE Client Auth Port = https://server1.example.com:9446/ca/eeca/ca
PKI Console Port = pkiconsole https://server1.example.com:9445/ca
Tomcat Port = 9701 (for shutdown)
PKI Instance Name: pki-ca
PKI Subsystem Type: Root CA (Security Domain)
Registered PKI Security Domain Information:
==========================================================================
Name: Example Domain
URL: https://server1.example.com:9445
==========================================================================
- Log into the system as root.
- Make sure that the acl package is installed on the system.
# rpm -q acl acl-2.2.39-6.el5
- Four filesystem paths must be configured to use the acl package:
- /
- /etc (including /etc/init.d and /etc/sysconfig)
- /usr (including /usr/bin and /usr/share)
- /var (including /var/lock and /var/run)
First, check to see where the filesystems are mounted and whether theacloption is used:# mount /dev/sda1 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sdb1 on /usr type ext2 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
In this example,/,/etc, and/varare mounted on/dev/sda1, while/usris mounted on/dev/sdb1.There are two ways to apply theacloption to the filesystems:- Using
tune2fs:# /sbin/tune2fs -o +acl /dev/sda1 # /sbin/tune2fs -o +acl /dev/sdb1
- Editing the
/etc/fstabfile:# vim /etc/fstab LABEL=/ / ext3 defaults
,acl1 1 LABEL=/usr /usr ext2 defaults,acl1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 LABEL=SWAP-sdb2 swap swap defaults 0 0 LABEL=SWAP-sda2 swap swap defaults 0 0
Then, remount the filesystems.# mount -o remount / # mount -o remount /usr
Confirm that theacloption has been applied to the filesystems:# /sbin/dumpe2fs /dev/sda1 | grep acl dumpe2fs 1.39 (29-May-2006) Default mount options: user_xattr acl # /sbin/dumpe2fs /dev/sdb1 | grep acl dumpe2fs 1.39 (29-May-2006) Default mount options: acl # mount | grep acl /dev/sda1 on / type ext3 (rw,acl) /dev/sdb1 on /usr type ext2 (rw,acl)
- Stop the CA instance.
service pki-ca stop
- Set the group readability to the pkiadmin group for the instance's directories and files.
# setfacl -R -L -m g:pkiadmin:r,d:g:pkiadmin:r /var/lib/pki-ca
- Apply execute (x) ACL permissions on all directories:
# find -L /var/lib/pki-ca -type d -exec setfacl -L -n -m g:pkiadmin:rx,d:g:pkiadmin:rx {} \; - Remove group readability for the pkiadmin group from the instance's signedAudit/ directory and its associated files:
# setfacl -R -L -x g:pkiadmin,d:g:pkiadmin /var/lib/pki-ca/logs/signedAudit
- Set group readability for the pkiaudit group for the instance's signedAudit/ directory and its associated files:
# setfacl -R -L -m g:pkiaudit:r,d:g:pkiaudit:r /var/lib/pki-ca/logs/signedAudit
- Re-apply execute (x) ACL permissions on the signedAudit/ directory and all of its subdirectories:
# find -L /var/lib/pki-ca/logs/signedAudit -type d -exec setfacl -L -n -m g:pkiaudit:rx,d:g:pkiaudit:rx {} \; - Start the CA.
service pki-ca start
- Confirm that the file access controls were properly applied by using the
getfaclcommand to show the current ACL settings:# getfacl /var/lib/pki-ca /var/log/pki-ca/logs/signedAudit/ getfacl: Removing leading '/' from absolute path names # file: var/lib/pki-ca # owner: pkiuser # group: pkiuser user::rwx group::rwx group:pkiadmin:r-x mask::rwx other::r-x default:user::rwx default:group::rwx default:group:pkiadmin:r-x default:mask::rwx default:other::r-x # file: var/lib/pki-ca/logs/signedAudit # owner: pkiuser # group: pkiaudit user::rwx group::rwx group:pkiaudit:r-x mask::rwx other::--- default:user::rwx default:group::rwx default:group:pkiaudit:r-x default:mask::rwx default:other::---
NOTE
Note
[root@server2]# pkicreate -pki_instance_root=/var/lib \
-pki_instance_name=pki-kra \
-subsystem_type=kra \
-agent_secure_port=10443 \
-ee_secure_port=10444 \
-admin_secure_port=10445 \
-unsecure_port=10180 \
-tomcat_server_port=10701 \
-user=pkiuser \
-group=pkiuser \
-audit_group=pkiaudit \
-redirect conf=/etc/pki-kra \
-redirect logs=/var/log/pki-kra \
-verbose
NOTE
[root@server2]# tail /var/log/pki-kra-install.log [2011-03-14 04:54:53] [debug] Setting 'pki-kra' runlevel to '-' [2011-03-14 04:54:53] [debug] Setting 'pki-kra' start priority to '82' [2011-03-14 04:54:53] [debug] Setting 'pki-kra' stop priority to '18' [2011-03-14 04:54:53] [debug] Registered 'pki-kra' with '/sbin/chkconfig. [2011-03-14 04:55:02] [log] Configuration Wizard listening on https://server2.example.com:19245/kra/admin/console/config/login?pin=OID1d0JTQ5GgMhK8j0DK [2011-03-14 04:55:02] [log] After configuration, the server can be operated by the command: /sbin/service pki-kra start | stop | restart
Important
[root@server1]# /usr/bin/firefox -ProfileManager -no-remote
- Welcome panel:
- Click Next>
- Key Store panel:
- Click Login for NHSM6000-OCS (nCipher's nFast Token Hardware Module).
- Provide the security module token password.
- Click Next>.
- Back in the Key Store panel, select the NHSM6000-OCS Token.
- Click Next>.
- Security Domain panel:
- Select 'Join an Existing Security Domain and enter the URL to an existing security domain. This URL can be identified by running /sbin/service pki-ca status on Machine-1 where CA subsystem is configured.
- Click Next>.
- Display Certificate Chain panel:
- Click Next>.
- Security Domain Login panel:
- Supply the admin UID name and password for the CA so that it can be properly accessed.
- Click Login
- Subsystem Type panel:
- Accept the defaults.
- Click Next>.
- Internal Database panel:
- Host -- server1.example.com
- Port -- 636 (SSL port)
- Check the SSL box.
- Provide the bind password of the Directory Manager (value which you gave while creating a Red Hat Directory Server instance).
- Click Next>.
- Key Pairs panel:
- Accept the defaults.
- Select the Use the default key size (2048 bits). radio button.
- Click Next>.
- Subject Names panel:
- Accept the defaults.
- Click Next>.
- Requests and Certificates panel:
- Click Apply.
- Once the screen redraws, click Next>.
NOTE
- Export Keys and Certificates panel:
- Accept the defaults.
- Click Next>.
- Administrator panel:
- UID: admin
- Name: KRA Administrator of Instance pki-kra
- Email: pki-kra-admin@example.com
- Password:
- Password (Again):
- Click Next>.
- Import Administrator's Certificate panel:
- Click OK on the alert which says'Your personal certificate has been installed. You should keep a backup copy of this certificate.'
- Click Next>.
- Done panel:
- Stop the DRM Subsystem by running /sbin/service pki-kra stop.
- Set up the HSM, as described in Section 8.1.2, “Using Hardware Security Modules with Subsystems” and the vendor documentation.
- Install and configure the instance.
- Stop the instance. The instance must be stopped to protect the information stored in its security databases.
service
instance_namestop - Replace the SSL subsystem certificate. By default, the installation process puts the certificate on the hardware token, but it should be placed on the software FIPS token.
- Open the instance's security database directory.
cd /var/lib/
instance_name/alias - Using
certutil, create a request for a new SSL server certificate.certutil -d . -R -s "CN=server1.example.com,OU=
instance_name,O=Example Domaininstance_name" -o sslfips.req -h "NSS Certificate DB" -a - Open the end entities pages for the CA (http
s://server.example.com:9444/ca/ee/ca), and use the SSL Server Cert Profile to submit the request. - Log into the agent pages (https://server.example.com:9443/ca/agent/ca), and approve the request.
- Copy the base 64-encoded certificate on the approval page and save it to a file, such as
sslfips.cert. - Check the instance's certificate database to see if an SSL server certificate is already listed.
certutil -d /var/lib/
instance_name/alias -L - If the certificate exists, then delete it.
certutil -d /var/lib/
instance_name/alias -D -n "ServerCertnickname" - Import the new SSL server certificate.
certutil -d /var/lib/
instance_name/alias -A -t "u,u,u" -n "ServerCert server2.example.com - Example Domaininstance_name" -i sslfips.cert -a - Edit the
/var/lib/file to contain the nickname of the new certificate, such as ServerCert server2.example.com - Example Domaininstance_name/conf/serverCertNick.confinstance_name. - Edit the
CS.cfgfile to replace both references to the SSL server certificate nickname.vim /var/lib/
instance_name/conf/CS/cfgtype.cert.sslserver.nickname= ServerCert server2.example.com - Example Domaininstance_nametype.sslserver.nickname= ServerCert server2.example.com - Example Domaininstance_name - Edit the
server.xmlfile to enable FIPS mode for each SSL-enabled connector. SetstrictCiphtersto true and add or setssl3to false. For example:vim /var/lib/
instance_name/conf/server.xml <Connector name="Agent" port="10443" maxHttpHeaderSize="8192" ... ... sslOptions="ssl2=false,ssl3=false,tls=true" strictCiphers="true" ... > - Enable FIPS mode in the NSS software database.
modutil -dbdir /var/lib/
instance_name/alias -fips true - Verify that FIPS mode has been enabled. The command will return the current FIPS status.
modutil -dbdir /var/lib/
instance_name/alias modutil -dbdir . -chkfips true FIPS mode enabled. - Start the instance.
service
instance_namestart
- Log into the system as root.
- Make sure that the acl package is installed on the system.
# rpm -q acl acl-2.2.39-6.el5
- Four filesystem paths must be configured to use the acl package:
- /
- /etc (including /etc/init.d and /etc/sysconfig)
- /usr (including /usr/bin and /usr/share)
- /var (including /var/lock and /var/run)
First, check to see where the filesystems are mounted and whether theacloption is used:# mount /dev/sda1 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sdb1 on /usr type ext2 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
In this example,/,/etc, and/varare mounted on/dev/sda1, while/usris mounted on/dev/sdb1.There are two ways to apply theacloption to the filesystems:- Using
tune2fs:# /sbin/tune2fs -o +acl /dev/sda1 # /sbin/tune2fs -o +acl /dev/sdb1
- Editing the
/etc/fstabfile:# vim /etc/fstab LABEL=/ / ext3 defaults
,acl1 1 LABEL=/usr /usr ext2 defaults,acl1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 LABEL=SWAP-sdb2 swap swap defaults 0 0 LABEL=SWAP-sda2 swap swap defaults 0 0
Then, remount the filesystems.# mount -o remount / # mount -o remount /usr
Confirm that theacloption has been applied to the filesystems:# /sbin/dumpe2fs /dev/sda1 | grep acl dumpe2fs 1.39 (29-May-2006) Default mount options: user_xattr acl # /sbin/dumpe2fs /dev/sdb1 | grep acl dumpe2fs 1.39 (29-May-2006) Default mount options: acl # mount | grep acl /dev/sda1 on / type ext3 (rw,acl) /dev/sdb1 on /usr type ext2 (rw,acl)
- Stop the DRM instance.
service pki-kra stop
- Set the group readability to the pkiadmin group for the instance's directories and files.
# setfacl -R -L -m g:pkiadmin:r,d:g:pkiadmin:r /var/lib/pki-kra
- Apply execute (x) ACL permissions on all directories:
# find -L /var/lib/pki-kra -type d -exec setfacl -L -n -m g:pkiadmin:rx,d:g:pkiadmin:rx {} \; - Remove group readability for the pkiadmin group from the instance's signedAudit/ directory and its associated files:
# setfacl -R -L -x g:pkiadmin,d:g:pkiadmin /var/lib/pki-kra/logs/signedAudit
- Set group readability for the pkiaudit group for the instance's signedAudit/ directory and its associated files:
# setfacl -R -L -m g:pkiaudit:r,d:g:pkiaudit:r /var/lib/pki-kra/logs/signedAudit
- Re-apply execute (x) ACL permissions on the signedAudit/ directory and all of its subdirectories:
# find -L /var/lib/pki-kra/logs/signedAudit -type d -exec setfacl -L -n -m g:pkiaudit:rx,d:g:pkiaudit:rx {} \; - Start the CA.
service pki-kra start
- Confirm that the file access controls were properly applied by using the
getfaclcommand to show the current ACL settings:# getfacl /var/lib/pki-kra /var/log/pki-kra/logs/signedAudit/ getfacl: Removing leading '/' from absolute path names # file: var/lib/pki-kra # owner: pkiuser # group: pkiuser user::rwx group::rwx group:pkiadmin:r-x mask::rwx other::r-x default:user::rwx default:group::rwx default:group:pkiadmin:r-x default:mask::rwx default:other::r-x # file: var/lib/pki-kra/logs/signedAudit # owner: pkiuser # group: pkiaudit user::rwx group::rwx group:pkiaudit:r-x mask::rwx other::--- default:user::rwx default:group::rwx default:group:pkiaudit:r-x default:mask::rwx default:other::---
NOTE
Note
[root@server2]# pkicreate -pki_instance_root=/var/lib \
-pki_instance_name=pki-ocsp \
-subsystem_type=ocsp \
-agent_secure_port=11443 \
-ee_secure_port=11444 \
-admin_secure_port=11445 \
-unsecure_port=11180 \
-tomcat_server_port=11701 \
-user=pkiuser \
-group=pkiuser \
-audit_group=pkiaudit \
-redirect conf=/etc/pki-ocsp \
-redirect logs=/var/log/pki-ocsp \
-verbose
NOTE
[root@server2]# tail /var/log/pki-ocsp-install.log [2011-03-14 07:23:28] [debug] Setting 'pki-ocsp' runlevel to '-' [2011-03-14 07:23:28] [debug] Setting 'pki-ocsp' start priority to '83' [2011-03-14 07:23:28] [debug] Setting 'pki-ocsp' stop priority to '17' [2011-03-14 07:23:28] [debug] Registered 'pki-ocsp' with '/sbin/chkconfig. [2011-03-14 07:23:37] [log] Configuration Wizard listening on https://server2.example.com:11445/ocsp/admin/console/config/login?pin=QiR94Mwz5MPnNZlj7cnW [2011-03-14 07:23:37] [log] After configuration, the server can be operated by the command: /sbin/service pki-ocsp start | stop | restart
Important
[root@server1]# /usr/bin/firefox -ProfileManager -no-remote
- Welcome panel:
- Click Next>
- Key Store panel:
- Click Login for NHSM6000-OCS (nCipher's nFast Token Hardware Module)
- Provide the 'Security Module Token Password'
- Click Next>
- Back in the Key Store panel, select the NHSM6000-OCS Token
- Click Next>
- Security Domain panel:
- Select 'Join an Existing Security Domain and enter the URL to an existing security domain. This URL can be identified by running /sbin/service pki-ca status on Machine-1 where CA subsystem is configured.
- Click Next>.
- Display Certificate Chain panel:
- Click Next>.
- Security Domain Login panel:
- Supply the admin UID name and password for the CA so that it can be properly accessed.
- Click Login.
- Subsystem Type panel:
- Accept the defaults.
- Click Next>.
- Internal Database panel:
- Host -- server1.example.com
- Port -- 636 (SSL port)
- Check the SSL box.
- Provide the bind password of the Directory Manager (value which you gave while creating a Red Hat Directory Server instance).
- Click Next>.
- Key Pairs panel:
- Accept the defaults.
- Select the Use the default key size (2048 bits). radio button.
- Click Next>.
- Subject Names panel:
- Accept the defaults.
- Click Next>.
- Requests and Certificates panel:
- Click Apply.
- Once the screen redraws, click Next>.
NOTE
- Export Keys and Certificates panel:
- Accept the defaults.
- Click Next>.
- Administrator panel:
- UID: admin
- Name: OCSP Administrator of Instance pki-ocsp
- Email: pki-ocsp-admin@example.com
- Password:
- Password (Again):
- Click Next>.
- Import Administrator's Certificate panel:
- Click OK on the alert which says 'Your personal certificate has been installed. You should keep a backup copy of this certificate.'
- Click Next>.
- Done panel:
- Restart the OCSP Responder by running /sbin/service pki-ocsp restart.
- Set up the HSM, as described in Section 8.1.2, “Using Hardware Security Modules with Subsystems” and the vendor documentation.
- Install and configure the instance.
- Stop the instance. The instance must be stopped to protect the information stored in its security databases.
service
instance_namestop - Replace the SSL subsystem certificate. By default, the installation process puts the certificate on the hardware token, but it should be placed on the software FIPS token.
- Open the instance's security database directory.
cd /var/lib/
instance_name/alias - Using
certutil, create a request for a new SSL server certificate.certutil -d . -R -s "CN=server2.example.com,OU=
instance_name,O=Example Domaininstance_name" -o sslfips.req -h "NSS Certificate DB" -a - Open the end entities pages for the CA (http
s://server.example.com:9444/ca/ee/ca), and use the SSL Server Cert Profile to submit the request. - Log into the agent pages (https://server.example.com:9443/ca/agent/ca), and approve the request.
- Copy the base 64-encoded certificate on the approval page and save it to a file, such as
sslfips.cert. - Check the instance's certificate database to see if an SSL server certificate is already listed.
certutil -d /var/lib/
instance_name/alias -L - If the certificate exists, then delete it.
certutil -d /var/lib/
instance_name/alias -D -n "ServerCertnickname" - Import the new SSL server certificate.
certutil -d /var/lib/
instance_name/alias -A -t "u,u,u" -n "ServerCert server2.example.com - Example Domaininstance_name" -i sslfips.cert -a - Edit the
/var/lib/file to contain the nickname of the new certificate, such as ServerCert server2.example.com - Example Domaininstance_name/conf/serverCertNick.confinstance_name. - Edit the
CS.cfgfile to replace both references to the SSL server certificate nickname.vim /var/lib/
instance_name/conf/CS/cfgtype.cert.sslserver.nickname= ServerCert server2.example.com - Example Domaininstance_nametype.sslserver.nickname= ServerCert server2.example.com - Example Domaininstance_name - Edit the
server.xmlfile to enable FIPS mode for each SSL-enabled connector. SetstrictCiphtersto true and add or setssl3to false. For example:vim /var/lib/
instance_name/conf/server.xml <Connector name="Agent" port="11443" maxHttpHeaderSize="8192" ... ... sslOptions="ssl2=false,ssl3=false,tls=true" strictCiphers="true" ... > - Enable FIPS mode in the NSS software database.
modutil -dbdir /var/lib/
instance_name/alias -fips true - Verify that FIPS mode has been enabled. The command will return the current FIPS status.
modutil -dbdir /var/lib/
instance_name/alias modutil -dbdir . -chkfips true FIPS mode enabled. - Start the instance.
service
instance_namestart
NOTE
acl option and remount the filesystem because that was done for the DRM, and the DRM, OCSP, and TKS are on the same machine.
- Log into the system as root.
- Stop the OCSP instance.
service pki-ocsp stop
- Set a group readability of pkiadmin for the instance's directories and files.
# setfacl -R -L -m g:pkiadmin:r,d:g:pkiadmin:r /var/lib/pki-ocsp
- Apply execute (x) ACL permissions on all directories:
# find -L /var/lib/pki-ocsp -type d -exec setfacl -L -n -m g:pkiadmin:rx,d:g:pkiadmin:rx {} \; - Remove group readability for the pkiadmin group from the instance's signedAudit/ directory and its associated files:
# setfacl -R -L -x g:pkiadmin,d:g:pkiadmin /var/lib/pki-ocsp/logs/signedAudit
- Set group readability for the pkiaudit group for the instance's signedAudit/ directory and its associated files:
# setfacl -R -L -m g:pkiaudit:r,d:g:pkiaudit:r /var/lib/pki-ocsp/logs/signedAudit
- Re-apply execute (x) ACL permissions on the signedAudit/ directory and all of its subdirectories:
# find -L /var/lib/pki-ocsp/logs/signedAudit -type d -exec setfacl -L -n -m g:pkiaudit:rx,d:g:pkiaudit:rx {} \; - Start the OCSP.
service pki-ocsp start
- Confirm that the file access controls were properly applied by using the
getfaclcommand to show the current ACL settings:# getfacl /var/lib/pki-ocsp /var/log/pki-ocsp/logs/signedAudit/ getfacl: Removing leading '/' from absolute path names # file: var/lib/pki-ocsp # owner: pkiuser # group: pkiuser user::rwx group::rwx group:pkiadmin:r-x mask::rwx other::r-x default:user::rwx default:group::rwx default:group:pkiadmin:r-x default:mask::rwx default:other::r-x # file: var/lib/pki-ocsp/logs/signedAudit # owner: pkiuser # group: pkiaudit user::rwx group::rwx group:pkiaudit:r-x mask::rwx other::--- default:user::rwx default:group::rwx default:group:pkiaudit:r-x default:mask::rwx default:other::---
NOTE
Note
[root@server2]# pkicreate -pki_instance_root=/var/lib \
-pki_instance_name=pki-tks \
-subsystem_type=tks \
-agent_secure_port=13443 \
-ee_secure_port=13444 \
-admin_secure_port=13445 \
-unsecure_port=13180 \
-tomcat_server_port=13701 \
-user=pkiuser \
-group=pkiuser \
-audit_group=pkiaudit \
-redirect conf=/etc/pki-tks \
-redirect logs=/var/log/pki-tks \
-verbose
NOTE
[root@server2]# tail /var/log/pki-tks-install.log [2011-03-14 07:47:32] [debug] Setting 'pki-tks' runlevel to '-' [2011-03-14 07:47:32] [debug] Setting 'pki-tks' start priority to '84' [2011-03-14 07:47:32] [debug] Setting 'pki-tks' stop priority to '16' [2011-03-14 07:47:32] [debug] Registered 'pki-tks' with '/sbin/chkconfig. [2011-03-14 07:47:42] [log] Configuration Wizard listening on https://server2.example.com:13445/tks/admin/console/config/login?pin=CGEfq8Du1OEvWjbaTbGh [2011-03-14 07:47:42] [log] After configuration, the server can be operated by the command: /sbin/service pki-tks start | stop | restart
Important
[root@server1]# /usr/bin/firefox -ProfileManager -no-remote
- Welcome panel:
- Click Next>
- Key Store panel:
- Click Login for NHSM6000-OCS (nCipher's nFast Token Hardware Module)
- Provide the 'Security Module Token Password'
- Click Next>
- Back in the Key Store panel, select the NHSM6000-OCS Token
- Click Next>
- Security Domain panel:
- Select 'Join an Existing Security Domain and enter the URL to an existing security domain. This URL can be identified by running /sbin/service pki-ca status on Machine-1 where CA subsystem is configured.
- Click Next>
- Display Certificate Chain panel:
- Click Next>
- Security Domain Login panel:
- Supply the admin UID name and password for the CA so that it can be properly accessed.
- Click Login
- Subsystem Type panel:
- Accept the defaults.
- Click Next>.
- Internal Database panel:
- Host -- server1.example.com
- Port -- 636 (SSL port)
- Check the SSL box.
- Provide the bind password of the Directory Manager (value which you gave while creating a Red Hat Directory Server instance).
- Click Next>.
- Key Pairs panel:
- Accept the defaults.
- Select the Use the default key size (2048 bits). radio button.
- Click Next>.
- Subject Names panel:
- Accept the defaults.
- Click Next>.
- Requests and Certificates panel:
- Click Apply.
- Once the screen redraws, click Next>.
NOTE
- Export Keys and Certificates panel:
- Accept the defaults.
- Click Next>.
- Administrator panel:
- UID: admin
- Name: TKS Administrator of Instance pki-tks
- Email: pki-tks-admin@example.com
- Password:
- Password (Again):
- Click Next>.
- Import Administrator's Certificate panel:
- Click OK on the alert which says'Your personal certificate has been installed. You should keep a backup copy of this certificate.'
- Click Next>.
- Done panel:
- Stop the TKS Subsystem by running /sbin/service pki-tks stop.
NOTE
tkstool script could return an error requiring you to set environment variables before running the tool. Set the environment variables as directed, and then re-run the tool.
- On the TKS instance, create the shared secret key which will be used to communicate with the TPS.The
tkstoolscript prints information about the shared secret key as it creates the key. These session key shares are required to import the shared key onto the TPS, so record this information.NOTE
Creating shared keys for the TKS and TPS is covered in the Administrator's Guide.tkstool -T -d /var/lib/pki-tks/alias -n sharedSecret Generating the first session key share . . . first session key share: 792F AB89 8989 D902 9429 6137 8632 7CC4 first session key share KCV: D1B6 14FD Generating the second session key share . . . second session key share: 4CDF C8E0 B385 68EC 380B 6D5E 1C19 3E5D second session key share KCV: 1EC7 8D4B Generating the third session key share . . . third session key share: CD32 3140 25B3 C789 B54F 2C94 26C4 9752 third session key share KCV: 73D6 8633 Generating first symmetric key . . . Generating second symmetric key . . . Generating third symmetric key . . . Extracting transport key from operational token . . . transport key KCV: A8D0 97A2 Storing transport key on final specified token . . . Naming transport key "sharedSecret" . . . Successfully generated, stored, and named the transport key! - List the shared key in the TKS database to make sure it was successfully created.
tkstool -d /var/lib/pki-tks/alias -L slot: NSS User Private Key and Certificate Services token: NSS Certificate DB Enter Password or Pin for "NSS Certificate DB": xxxxxxx <0> sharedSecret
The default key name issharedSecret. The TKS can be configured to have a different name by changing thetks.tksSharedSymKeyNamevalue in theCS.cfg. The name given in the TKS settings must be the same as the name of the key that is intalled in the TKS database or the TKS cannot locate the key.
- Set up the HSM, as described in Section 8.1.2, “Using Hardware Security Modules with Subsystems” and the vendor documentation.
- Install and configure the instance.
- Stop the instance. The instance must be stopped to protect the information stored in its security databases.
service
instance_namestop - Replace the SSL subsystem certificate. By default, the installation process puts the certificate on the hardware token, but it should be placed on the software FIPS token.
- Open the instance's security database directory.
cd /var/lib/
instance_name/alias - Using
certutil, create a request for a new SSL server certificate.certutil -d . -R -s "CN=server2.example.com,OU=
instance_name,O=Example Domaininstance_name" -o sslfips.req -h "NSS Certificate DB" -a - Open the end entities pages for the CA (http
s://server.example.com:9444/ca/ee/ca), and use the SSL Server Cert Profile to submit the request. - Log into the agent pages (https://server.example.com:9443/ca/agent/ca), and approve the request.
- Copy the base 64-encoded certificate on the approval page and save it to a file, such as
sslfips.cert. - Check the instance's certificate database to see if an SSL server certificate is already listed.
certutil -d /var/lib/
instance_name/alias -L - If the certificate exists, then delete it.
certutil -d /var/lib/
instance_name/alias -D -n "ServerCertnickname" - Import the new SSL server certificate.
certutil -d /var/lib/
instance_name/alias -A -t "u,u,u" -n "ServerCert server2.example.com - Example Domaininstance_name" -i sslfips.cert -a - Edit the
/var/lib/file to contain the nickname of the new certificate, such as ServerCert server2.example.com - Example Domaininstance_name/conf/serverCertNick.confinstance_name. - Edit the
CS.cfgfile to replace both references to the SSL server certificate nickname.vim /var/lib/
instance_name/conf/CS/cfgtype.cert.sslserver.nickname= ServerCert server2.example.com - Example Domaininstance_nametype.sslserver.nickname= ServerCert server2.example.com - Example Domaininstance_name - Edit the
server.xmlfile to enable FIPS mode for each SSL-enabled connector. SetstrictCiphtersto true and add or setssl3to false. For example:vim /var/lib/
instance_name/conf/server.xml <Connector name="Agent" port="12443" maxHttpHeaderSize="8192" ... ... sslOptions="ssl2=false,ssl3=false,tls=true" strictCiphers="true" ... > - Enable FIPS mode in the NSS software database.
modutil -dbdir /var/lib/
instance_name/alias -fips true - Verify that FIPS mode has been enabled. The command will return the current FIPS status.
modutil -dbdir /var/lib/
instance_name/alias modutil -dbdir . -chkfips true FIPS mode enabled. - Start the instance.
service
instance_namestart
NOTE
acl option and remount the filesystem because that was done for the DRM, and the DRM, OCSP, and TKS are on the same machine.
- Log into the system as root.
- Stop the TKS instance.
service pki-tks stop
- Set a group readability of pkiadmin for the instance's directories and files.
# setfacl -R -L -m g:pkiadmin:r,d:g:pkiadmin:r /var/lib/pki-tks
- Apply execute (x) ACL permissions on all directories:
# find -L /var/lib/pki-tks -type d -exec setfacl -L -n -m g:pkiadmin:rx,d:g:pkiadmin:rx {} \; - Remove group readability for the pkiadmin group from the instance's signedAudit/ directory and its associated files:
# setfacl -R -L -x g:pkiadmin,d:g:pkiadmin /var/lib/pki-tks/logs/signedAudit
- Set group readability for the pkiaudit group for the instance's signedAudit/ directory and its associated files:
# setfacl -R -L -m g:pkiaudit:r,d:g:pkiaudit:r /var/lib/pki-tks/logs/signedAudit
- Re-apply execute (x) ACL permissions on the signedAudit/ directory and all of its subdirectories:
# find -L /var/lib/pki-tks/logs/signedAudit -type d -exec setfacl -L -n -m g:pkiaudit:rx,d:g:pkiaudit:rx {} \; - Start the TKS.
service pki-tks start
- Confirm that the file access controls were properly applied by using the
getfaclcommand to show the current ACL settings:# getfacl /var/lib/pki-tks /var/log/pki-tks/logs/signedAudit/ getfacl: Removing leading '/' from absolute path names # file: var/lib/pki-tks # owner: pkiuser # group: pkiuser user::rwx group::rwx group:pkiadmin:r-x mask::rwx other::r-x default:user::rwx default:group::rwx default:group:pkiadmin:r-x default:mask::rwx default:other::r-x # file: var/lib/pki-tks/logs/signedAudit # owner: pkiuser # group: pkiaudit user::rwx group::rwx group:pkiaudit:r-x mask::rwx other::--- default:user::rwx default:group::rwx default:group:pkiaudit:r-x default:mask::rwx default:other::---
NOTE
Note
[rootserver3]# pkicreate -pki_instance_root=/var/lib \
-pki_instance_name=pki-tps \
-subsystem_type=tps \
-secure_port=7889 \
-non_clientauth_secure_port=7890 \
-unsecure_port=7888 \
-user=pkiuser \
-group=pkiuser \
-audit_group=pkiaudit \
-redirect conf=/etc/pki-tps \
-redirect logs=/var/log/pki-tps \
-verbose
[root@server3 alias]# /sbin/service pki-tps stop
[root@server1 alias]# /usr/bin/certutil -L -d /var/lib/pki-ca/alias -n "caSigningCert cert-pki-ca" -a > pki-casigningcert.crt
[root@server3 alias]# /usr/bin/certutil -A -d /var/lib/pki-tps/alias -i pki-casigningcert.crt -n "caSigningCert cert-pki-ca" -t "CT,C,C"
[root@server3 alias]# /sbin/service pki-tps start
[root@server3 alias]# tail /var/log/pki-tps-install.log [2011-04-06 23:31:48] [debug] Setting 'pki-tps' runlevel to '-' [2011-04-06 23:31:48] [debug] Setting 'pki-tps' start priority to '87' [2011-04-06 23:31:48] [debug] Setting 'pki-tps' stop priority to '13' [2011-04-06 23:31:48] [debug] Registered 'pki-tps' with '/sbin/chkconfig. [2011-04-06 23:32:02] [log] Configuration Wizard listening on https://server3.example.com:7890/tps/admin/console/config/login?pin=dvQUnhL5e7gFoP9zkCiy [2011-04-06 23:32:02] [log] After configuration, the server can be operated by the command: /sbin/service pki-tps start | stop | restart [root@server3 alias]#
Important
[rootserver3]# /usr/bin/firefox -ProfileManager -no-remote
- Welcome panel:
- Click Next>
- Security Modules panel:
- Click Login for NHSM6000-OCS (nCipher's nFast Token Hardware Module)
- Provide the Security Module Token Password'
- Click Next>
- Back in the Security Modules panel, select the NHSM6000-OCS Token
- Click Next>
- Security Domain panel:
- Select 'Join an Existing Security Domain and enter the URL to an existing security domain. This URL can be identified by running /sbin/service pki-ca status on Machine-1 where CA subsystem is configured.
- Click Next>
- Display Certificate Chain panel:
- Click Next>
- Security Domain Login panel:
- Supply the admin name and password for the CA so that it can be properly accessed.
- Click Login
- Subsystem Type panel:
- Accept the defaults.
- Click Next>
- CA Information panel:
- Accept the defaults.
- Click Next>
- TKS Information panel:
- Accept the defaults.
- Click Next>
- DRM Information panel:
- Accept the defaults.
- Click Next>
- Authentication Directory panel:
- 'Host -- server1.example.com.
- 'Port -- 636 (SSL port).
- Check the SSL box.
- Accept the default for Base DN.
- Click Next>.
- Internal Database panel:
- 'Host -- server1.example.com.
- 'Port -- 636 (SSL port).
- Check the SSL box.
- Provide the bind password of the Directory Manager (value which you gave while creating a Red Hat Directory Server instance).
- Click Next>.
- Key Pairs panel:
- Accept the defaults.
- Select the Use the default key size (2048 bits). radio button.
- Click Next>.
- Subject Names panel:
- Accept the defaults.
- Click Next>.
- Certificate Requests panel:
- Click Apply.
- Once the screen redraws, click Next>.
- Administrator panel:
- UID: admin
- Name: TPS Administrator of Instance pki-tps
- Email: pki-tps-admin@example.com
- Password:
- Password (Again):
- Click Next>
- Import Administrator's Certificate panel:
- Click OK on the alert which says 'Your personal certificate has been installed. You should keep a backup copy of this certificate.'
- Click Next>.
- Done panel:
- Restart the TPS by running /sbin/service pki-tps restart.
NOTE
tkstool script could return an error requiring you to set environment variables before running the tool. Set the environment variables as directed, and then re-run the tool.
- Stop the TPS.
service pki-tps stop
- Use the
tkstoolscript to import the shared key into the NSS software token.tkstool -I -d /var/lib/pki-tps/alias -n sharedSecret
The script will prompts for the session key shares that were printed when the key was created in the TKS. Enter the information from the TKS. - List the keys to make sure the shared key was properly imported.
tkstool -I -d /var/lib/pki-tps/alias -L slot: NSS User Private Key and Certificate Services token: NSS Certificate DB Enter Password or Pin for "NSS Certificate DB": xxxxx <0> sharedSecretThe shared key issharedSecret, which is the default name. The TPS can be configured to set a different name for the shared key by changing the value of theconn.tks1.tksSharedSymKeyNamevalue in theCS.cfg. This value must be the same as the nickname for the key imported into the token, or the TPS cannot locate the key.
- Set up the HSM, as described in Section 8.1.2, “Using Hardware Security Modules with Subsystems” and the vendor documentation.
- Install and configure the TPS.
- Stop the TPS. The instance must be stopped to protect the information stored in its security databases.
service pki-tps stop
- Replace the SSL subsystem certificate. By default, the installation process puts the certificate on the hardware token, but it should be placed on the software FIPS token.
- Open the instance's security database directory.
cd /var/lib/pki-tps/alias
- Using
certutil, create a request for a new SSL server certificate.certutil -d . -R -s "CN=tps.example.com,OU=pki-tps,O=Example Domain pki-tps" -o sslfips.req -h "NSS Certificate DB" -a
- Open the end entities pages for the CA (http
s://server.example.com:9444/ca/ee/ca), and use the SSL Server Cert Profile to submit the request. - Log into the agent pages (https://server.example.com:9443/ca/agent/ca), and approve the request.
- Copy the base 64-encoded certificate on the approval page and save it to a file, such as
sslfips.cert. - Check the instance's certificate database to see if an SSL server certificate is already listed.
certutil -d /var/lib/pki-tps/alias -L
- If the certificate exists, then delete it.
certutil -d /var/lib/pki-tps/alias -D -n "ServerCert
nickname" - Import the new SSL server certificate.
certutil -d /var/lib/pki-tps/alias -A -t "u,u,u" -n "ServerCert tps.example.com - Example Domain pki-tps" -i sslfips.cert -a
- Edit the
/var/lib/pki-tps/conf/serverCertNick.conffile to contain the nickname of the new certificate, such as ServerCert tps.example.com - Example Domain pki-tps. - Edit the
CS.cfgfile to replace both references to the SSL server certificate nickname.vim /var/lib/pki-tps/conf/CS/cfg tps.cert.sslserver.nickname= ServerCert server3.example.com - Example Domain pki-tps tps.sslserver.nickname= ServerCert server3.example.com - Example Domain pki-tps
- The
nss.conffile for the TPS contains a list of virtual servers for the different SSL listening ports for the TPS. Every SSL port must be configured to run under FIPS:- Turn on FIPS.
# FIPS Switch: # Enable/Disable FIPS mode NSSFIPS on
- Change the
NSSNicknameto reflect the new TPS server certificate. For example:# SSL Certificate Nickname: # The nickname of the server certificate you are going to use. NSSNickname "ServerCert server3.example.com - Example Domain pki-tps"
- Uncomment the FIPS cipher suite directive and comment out the standard directive.
# SSL Cipher Suite: # List the ciphers that the client is permitted to negotiate. # See the mod_nss documentation for a complete list. #NSSCipherSuite -des,-desede3,-rc2,-rc2export,-rc4,-rc4export,+rsa_3des_sha,-rsa_des_56_sha,+rsa_des_sha,-rsa_null_md5,-rsa_null_sha,-rsa_rc2_40_md5,+rsa_rc4_128_md5,-rsa_rc4_128_sha,-rsa_rc4_40_md5,-rsa_rc4_56_sha,-fortezza,-fortezza_rc4_128_sha,-fortezza_null,-fips_des_sha,+fips_3des_sha,-rsa_aes_128_sha,-rsa_aes_256_sha,+ecdhe_ecdsa_aes_256_sha # SSL cipher suite in FIPS mode: NSSCipherSuite +rsa_3des_sha,-rsa_des_sha,-rsa_rc4_40_md5,-rsa_rc2_40_md5,-rsa_null_md5,-rsa_null_sha,+fips_3des_sha,-fips_des_sha,-fortezza,-fortezza_rc4_128_sha,-fortezza_null,-rsa_des_56_sha,-rsa_rc4_56_sha,+rsa_aes_128_sha,+rsa_aes_256_sha
- Turn SSLv3 off for every SSL port, so that only TLSv1 is enabled.
NSSProtocol TLSv1
- For each SSL virtual host, turn off the setting to enforce valid certificates:
NSSEnforceValidCerts off
- Add or edit the line for the NSS FIPS database to the TPS's
password.conffile.vim /var/lib/pki-tps/conf/password.conf NSS FIPS 140-2 Certificate DB:mypassword
- Enable FIPS mode in the NSS software database.
modutil -dbdir /var/lib/pki-tps/alias -fips true
- Verify that FIPS mode has been enabled. The command will return the current FIPS status.
modutil -dbdir /var/lib/pki-tps/alias modutil -dbdir . -chkfips true FIPS mode enabled. - Start the TPS.
service pki-tps start
NOTE
Hit the enter key to complete the startup process or the TPS will not start.
- Log into the system as root.
- Stop all Certificate System subsystems.
service
instance_namestop - Make sure that the acl package is installed on the system.
# rpm -q acl acl-2.2.39-6.el5
- Four filesystem paths must be configured to use the acl package:
- /
- /etc (including /etc/init.d and /etc/sysconfig)
- /usr (including /usr/bin and /usr/share)
- /var (including /var/lock and /var/run)
First, check to see where the filesystems are mounted and whether theacloption is used:# mount /dev/sda1 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sdb1 on /usr type ext2 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
In this example,/,/etc, and/varare mounted on/dev/sda1, while/usris mounted on/dev/sdb1.There are two ways to apply theacloption to the filesystems:- Using
tune2fs:# /sbin/tune2fs -o +acl /dev/sda1 # /sbin/tune2fs -o +acl /dev/sdb1
- Editing the
/etc/fstabfile:# vim /etc/fstab LABEL=/ / ext3 defaults
,acl1 1 LABEL=/usr /usr ext2 defaults,acl1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 LABEL=SWAP-sdb2 swap swap defaults 0 0 LABEL=SWAP-sda2 swap swap defaults 0 0
Then, remount the filesystems.# mount -o remount / # mount -o remount /usr
Confirm that theacloption has been applied to the filesystems:# /sbin/dumpe2fs /dev/sda1 | grep acl dumpe2fs 1.39 (29-May-2006) Default mount options: user_xattr acl # /sbin/dumpe2fs /dev/sdb1 | grep acl dumpe2fs 1.39 (29-May-2006) Default mount options: acl # mount | grep acl /dev/sda1 on / type ext3 (rw,acl) /dev/sdb1 on /usr type ext2 (rw,acl)
- Stop the TPS instance.
service pki-tps stop
- Set the group readability to the pkiadmin group for the instance's directories and files.
# setfacl -R -L -m g:pkiadmin:r,d:g:pkiadmin:r /var/lib/pki-tps
- Apply execute (x) ACL permissions on all directories:
# find -L /var/lib/pki-tps -type d -exec setfacl -L -n -m g:pkiadmin:rx,d:g:pkiadmin:rx {} \; - Remove group readability for the pkiadmin group from the instance's signedAudit/ directory and its associated files:
# setfacl -R -L -x g:pkiadmin,d:g:pkiadmin /var/lib/pki-tps/logs/signedAudit
- Set group readability for the pkiaudit group for the instance's signedAudit/ directory and its associated files:
# setfacl -R -L -m g:pkiaudit:r,d:g:pkiaudit:r /var/lib/pki-tps/logs/signedAudit
- Re-apply execute (x) ACL permissions on the signedAudit/ directory and all of its subdirectories:
# find -L /var/lib/pki-tps/logs/signedAudit -type d -exec setfacl -L -n -m g:pkiaudit:rx,d:g:pkiaudit:rx {} \; - Start the TPS.
service pki-tps start
- Confirm that the file access controls were properly applied by using the
getfaclcommand to show the current ACL settings:# getfacl /var/lib/pki-tps /var/log/pki-tps/logs/signedAudit/ getfacl: Removing leading '/' from absolute path names # file: var/lib/pki-tps # owner: pkiuser # group: pkiuser user::rwx group::rwx group:pkiadmin:r-x mask::rwx other::r-x default:user::rwx default:group::rwx default:group:pkiadmin:r-x default:mask::rwx default:other::r-x # file: var/lib/pki-tps/logs/signedAudit # owner: pkiuser # group: pkiaudit user::rwx group::rwx group:pkiaudit:r-x mask::rwx other::--- default:user::rwx default:group::rwx default:group:pkiaudit:r-x default:mask::rwx default:other::---
[root@server1]# /usr/bin/pkiconsole https://server1.example.com:9445/ca
- For Admin users for CA, TKS, OCSP, and DRM:
- adminV (this user will have a valid certificate throughout testing)
- adminR (this user will have a revoked certificate)
- adminE (this user will have an expired certificate)
- adminTCA (this user's certificate will be signed by a trusted CA)
- adminC (initially this user will be assigned to the administrator group; during the testing process this user will be assigned to a different group)
- adminUTCA (this user's certificate will be issued by an untrusted CA) [Note: This requires a second CA setup!]
General procedure for 'admin' certificates: (Example for user adminV)- For CA, TKS, DRM and OCSP:
- Create users and add them to the Administrator group
- Create a user certificate
- ADD_CERTIFICATE to ~/.redhat-idm-console
# Backup the role user certificate from the browser in adminV.p12 file [root@server1]# cd ~/.redhat-idm-console [root@server1]# /usr/bin/pk12util -d ~/.redhat-idm-console -i adminV.p12
- For TPS:
- Create users with an Admin role
- ADD_CERTIFICATE to TPS users:
- Copy the base 64 encoded blob (without the header and footer) of the role user certificate
Visit TPS UI Admin tab with TPS admin credential. List users and select user-name. Paste the certificate base 64 blob. Click update.
- Add profile access to TPS users:
Visit TPS UI Admin tab with TPS admin credential. List users and select user-name. Add new profile, select "All Profiles". Click Add profile.
- For Agent users:
- agentV (this user will have a valid certificate throughout testing)
- agentR (the status of this user's certificate is Revoked)
- agentE (this user's certificate is in the expired state)
- adminTCA (this user's certificate will be signed by a trusted CA)
- agentTCA (this user's certificate will be issued by a trusted CA))
- agentUTCA (this user's certificate will be issued by an untrusted CA) [Note: This requires a second CA setup!]
General procedure for agent certificates:- For CA, TKS, DRM, and OCSP:
- Add a user to the Certificate Manager Agents group
- Create a user certificate
- ADD_CERTIFICATE to ~/.redhat-idm-console
# Backup the role user certificate from the browser in agentV.p12 file [root@server1]# cd ~/.redhat-idm-console [root@server1]# /usr/bin/pk12util -d ~/.redhat-idm-console -i agentV.p12
- For TPS:
- Create a user and assign the Agent role
- ADD_CERTIFICATE to TPS users:
- Copy the base 64 encoded blob (without the header and footer) of the role user certificate
Visit TPS UI Admin tab with TPS admin credential. List users and select user-name. Paste the certificate base 64 blob. Click update.
- Add profile access to TPS users:
Visit TPS UI Admin tab with TPS admin credential. List users and select user-name. Add new profile, select "All Profiles". Click Add profile.
- For Audit users:
- auditV (this user will have a valid certificate throughout testing)
General procedure for 'audit' certificates: (Example for user auditV) for CA, TKS, DRM and OCSP do the following steps:- ADD_CERTIFICATE to ~/.redhat-idm-console
# Backup the role user certificate from the browser in auditV.p12 file [root@server1]# cd ~/.redhat-idm-console [root@server1]# /usr/bin/pk12util -d ~/.redhat-idm-console -i auditV.p12
- For TPS Operator users:
- operatorV (this user will have a valid certificate throughout testing)
General procedure for 'operator' certificates: (Example for user operatorV)- Create a user with the Operator role
- ADD_CERTIFICATE to TPS users:
- Copy the base 64 encoded blob (without the header and footer) of the role user certificate
Visit TPS UI Admin tab with TPS admin credential. List users and select user-name. Paste the certificate base 64 blob. Click update.
- Add profile access to TPS users:
Visit TPS UI Admin tab with TPS admin credential. List users and select user-name. Add new profile, select "All Profiles". Click Add profile.
- To Revoke Certificates
- To Achieve Expired Certificates
Expired Certificates
From CA EE pages, submit enrollment requests for all of these users.From the CA Agent port, approve these requests. When approving expired certs, remember to change notAfter to point to 1-day.
Note
- Select the URL that points to the Secure End-Entity Port of the previously configured CA and open the browser to this URL.
Note
- Click the tab labeled Retrieval
- Select the URL called Import CA Certificate Chain
- Select the radio button for Import the CA certificate chain into your browser
- Click the submit button.
- Click OK for the prompt 'You will now be asked to import and trust the Certificate Chain from the CA. Please do so.'
- Select the checkboxes for:
- Check 'Trust this CA to identify web sites'
- Check 'Trust this CA to identify email users'
- Check 'Trust this CA to identify software developers'
- Click OK to dismiss this dialog box
[root@server1]# /usr/sbin/visudo
# For Directory Server services %pkiadmin ALL = PASSWD: /sbin/service dirsrv * %pkiadmin ALL = PASSWD: /sbin/service dirsrv-admin * # For PKI instance management %pkiadmin ALL = PASSWD: /usr/bin/pkicreate * %pkiadmin ALL = PASSWD: /usr/bin/pkiremove * # For PKI instance services %pkiadmin ALL = PASSWD: /sbin/service pki-ca * %pkiadmin ALL = PASSWD: /sbin/service pki-kra * %pkiadmin ALL = PASSWD: /sbin/service pki-ocsp * %pkiadmin ALL = PASSWD: /sbin/service pki-tks * %pkiadmin ALL = PASSWD: /sbin/service pki-tps *
Note
Note
Note
Important
[root@server1]# pwd
/var/lib/pki-ca/conf
[root@server1]# rm -rf password.conf
[root@server1]# /sbin/service pki-ca restart
Stopping pki-ca: .. [ OK ]
Starting pki-ca:
Using Java Security Manager
Constructing 'pki-ca.policy' Security Policy
Please provide password for internal:
Please provide password for hardware-nethsm2k:
Please provide password for internaldb:
Please provide password for replicationdb:
Starting pki-ca: [ OK ]
pki-ca (pid 26928) is running ...
Unsecure Port = http://server1.example.com:9180/ca/ee/ca
Secure Agent Port = https://server1.example.com:9443/ca/agent/ca
Secure EE Port = https://server1.example.com:9444/ca/ee/ca
Secure Admin Port = https://server1.example.com:9445/ca/services
EE Client Auth Port = https://server1.example.com:9446/ca/eeca/ca
PKI Console Port = pkiconsole https://server1.example.com:9445/ca
Tomcat Port = 9701 (for shutdown)
PKI Instance Name: pki-ca
PKI Subsystem Type: Root CA (Security Domain)
Registered PKI Security Domain Information:
==========================================================================
Name: Example Domain
URL: https://server1.example.com:9445
==========================================================================
Note
- Edit the file (/var/lib/pki-tps/conf/nss.conf).
- Make the following changes to related settings as follows:
# Pass Phrase Dialog: # Configure the pass phrase gathering process. # The filtering dialog program (`builtin' is a internal # terminal dialog) has to provide the pass phrase on stdout. NSSPassPhraseDialog builtin #NSSPassPhraseDialog defer:/var/lib/pki-tps/conf/password.conf # Pass Phrase Helper: # This helper program stores the token password pins between # restarts of Apache. #NSSPassPhraseHelper /usr/share/pki/tps/scripts/nss_pcache
Enabling the password dialog means the server not longer references the password.conf file. The system prompts the operator to manually type in the needed passwords.
Note
[root@server1]# wget http://www.cs.auckland.ac.nz/~pgut001/dumpasn1.c [root@server1]# /usr/bin/gcc -o dumpasn1 dumpasn1.c [root@server1]# cp dumpasn1 /usr/local/bin/
- Stop the server:
service pki-ca stop
- Open the
CS.cfgfile:vim /var/lib/pki-ca/conf/CS.cfg
- Modify the current setting of
multiroles.enable=trueand change it tomultiroles.enable=false. - Restart the server:
service pki-ca restart
- Secure usage assumptions
- Threats
- Organizational security policies
Table B.2. CIMC Target of Evaluation Functional Security Requirements
| Security Functional Class | Security Functional Components | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Security Audit (FAU) |
| ||||||||||||
| Communication (FCO) |
| ||||||||||||
| Cryptographic support (FCS) |
| ||||||||||||
| User Data Protection (FDP) |
| ||||||||||||
| Identification and authentication (FIA) |
| ||||||||||||
| Security management (FMT) |
| ||||||||||||
| Protection of the target security functions (FPT) |
|
- FAU_GEN.1.1
- The target security functions shall be able to generate an audit record of the following auditable events:
- Startup and shutdown of the audit functions
- All auditable events for the [minimum] level of audit logging
- [The events listed in Table B.3, “Auditable Events and Audit Data”]
- FAU_GEN.1.2
- The target security functions shall record within each audit record at least the following information:
- Date and time of the event, type of event, subject identity (if applicable), and the outcome (success or failure) of the event
- For each audit event type, based on the auditable event definitions of the functional components included in the PP/ST, [the information specified in the "Additional Details" column in Table B.3, “Auditable Events and Audit Data”]. Additionally, the audit shall not include plaintext private or secret keys or other critical security parameters.
Table B.3. Auditable Events and Audit Data
| Section/Function | Component | Event | Additional Details | ||
|---|---|---|---|---|---|
| Security Audit | FAU_GEN.1 Audit data generation (iteration 2) | Any changes to the audit parameters, such as audit frequency, type of event audited, or an attempt to delete the audit log | |||
| FPT_CIMC_TSP.1 | Audit log signing event | Digital signature, keyed hash, or authentication code shall be included in the audit log. | |||
| Local Data Entry | All security-relevant data that is entered in the system | The identity of the data entry individual if the entered data is linked to any other data, such as clicking an accept button. This shall be included with the accepted data. | |||
| Remote Data Entry | All security-relevant messages that are received by the system | ||||
| Data Export and Output | All successful and unsuccessful requests for confidential and security-relevant information | ||||
| Key Generation | FCS_CKM.1 Cryptographic Key Generation | Whenever the target security functions requests generation of a cryptographic key. (Not mandatory for single session or one-time use symmetric keys.) | The public component of any asymmetric key pair generated | ||
| Private Key Load | The loading of Component private keys | ||||
| Private Key Storage | All access to certificate subject private keys retained within the target of evaluation for key recovery purposes | ||||
| Trusted Public Key Entry, Deletion and Storage | All changes to the trusted public keys, including additions and deletions | The public key and all information associated with the key | |||
| Secret Key Storage | The manual entry of secret keys used for authentication | ||||
| Private and Secret Key Export |
| The export of private and secret keys (keys used for a single session or message are excluded) | |||
| Certificate Registration | FDP_CIMC_CER.1 Certificate Generation | All certificate requests | If accepted, a copy of the certificate. If rejected, the reason for rejection, such as invalid data or the request was rejected by an officer. | ||
| Certificate Status Change Approval | All requests to change the status of a certificate | Whether the request was accepted or rejected. | |||
| CIMC Configuration | Any security-relevant changes to the configuration of the target security functions. | ||||
| Certificate Profile Management | FMT_MOF_CIMC.3 Extended certificate profile management | All changes to the certificate Profile | The changes made to the Profile | ||
| Revocation Profile Management | All changes to the revocation profile | The changes made to the Profile | |||
| Certificate Revocation List Profile Management | FMT_MOF_CIMC.5 Extended certificate revocation list profile management | All changes to the certificate revocation list profile | The changes made to the profile | ||
| Online Certificate Status Protocol (OCSP) Profile Management | FMT_MOF_CIMC.6 OCSP Profile Management | All changes to the OCSP profile | The changes made to the Profile |
- FAU_GEN.2.1
- For audit events resulting from actions of identified users, the target security functions shall be able to associate each auditable event with the identity of the user that caused the event.
- FAU_SEL.1.1
- The target security functions shall be able to select the set of audited events from the set of all auditable events based on the following attributes:
- [event type]
- [no additional attributes]
- FAU_STG.1.1
- The target security functions shall protect the stored audit records in the audit trail from unauthorized deletion.
- FAU_STG.1.2
- The target security functions shall be able to [detect] unauthorized modifications to the stored audit records in the audit trail.
- FAU_STG.4.1
- The target security functions shall [prevent audited events, except those taken by the auditor,] and [no other action], if the audit trail is full.
- FCO_NRO_CIMC.3.1
- The target security functions shall enforce the generation of evidence of origin for certificate status information and all other security-relevant information at all times.
- FCO_NRO_CIMC.3.2
- The target security functions shall be able to relate the identity and [the identity of the certificate issuer] of the originator of the information, and the security-relevant portions of the information to which the evidence applies.
- FCO_NRO_CIMC.3.3
- The target security functions shall verify the evidence of origin of information for all security-relevant information.Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by existing Common Criteria requirements. It supports the security objective O.Non-repudiation and O.Control unknown source communication traffic.
- FCO_NRO_CIMC.4.1
- The target security functions shall, for initial certificate registration messages sent by the certificate subject, only accept messages protected using an authentication code, keyed hash, or digital signature algorithm.
- FCO_NRO_CIMC.4.2
- The target security functions shall, for all other security-relevant information, only accept the information if it was signed using a digital signature algorithm.Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by existing Common Criteria requirements. It supports the security objective O.Non-repudiation.
- FCS_CKM_CIMC.5.1
- The target security functions shall provide the capability to zeroize plaintext secret and private keys within the FIPS 140-2 validated cryptographic module.Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by Common Criteria.
- FCS_SOF_CIMC.1.1
- The target security functions shall provide cryptographic mechanisms that fulfill the specific Strength of Function requirements.Rationale: This component is necessary to require specific Strength of Function metrics for cryptographic mechanisms of the target security functions.
- FDP_ACC.1.1
- The target security functions shall enforce the [CIMC target of evaluation access control policy] on [users, services, and access to services].
- FDP_ACF.1.1
- The target security functions shall enforce the [CIMC target of evaluation access control policy] to objects based on [the identity of the subject and the set of roles that the subject is authorized to assume].
- FDP_ACF.1.2
- The target security functions shall enforce the rules [in Table B.4, “Access Controls”] to determine if an operation among controlled subjects and controlled objects is allowed.
- FDP_ACF.1.3
- The target security functions shall explicitly authorize access of subjects to objects based on [no additional rules].
- FDP_ACF.1.4
- The target security functions shall explicitly deny access of subjects to objects based on [no additional rules].
Table B.4. Access Controls
|
Section/Function
|
Event
|
|---|---|
| Certificate Request Remote and Local Data Entry |
The entry of certificate request data shall be restricted to officers and the subject of the requested certificate.
|
| Certificate Revocation Request Remote and Local Data Entry |
The entry of certificate revocation request data shall be restricted to officers and the subject of the certificate to be revoked.
|
| Data Export and Output |
The export or output of confidential and security-relevant data shall only be at the request of authorized users.
|
| Key Generation |
The capability to request the generation of Component keys (used to protect data in more than a single session or message) shall be restricted to administrators.
|
| Private Key Load |
The capability to request the loading of Component private keys into cryptographic modules shall be restricted to administrators.
|
| Private Key Storage |
The capability to request the decryption of certificate subject private keys shall be restricted to officers.
The target security functions shall not provide a capability to decrypt certificate subject private keys that may be used to generate digital signatures.
At least two officers or one officer and an administrator, auditor, or operator shall be required to request the decryption of a certificate subject private key.
|
| Trusted Public Key Entry, Deletion, and Storage |
The capability to change (add, revise, delete) the trusted public keys shall be restricted to administrators.
|
| Secret Key Storage |
The capability to request the loading of CIMC secret keys into cryptographic modules shall be restricted to administrators.
|
| Private and Secret Key Destruction |
The capability to zeroize CIMC plaintext private and secret keys shall be restricted to administrators, auditors, officers, and operators.
|
| Private and Secret Key Export |
The capability to export a component private key shall be restricted to administrators.
The capability to export certificate subject private keys shall be restricted to officers.
The export of a certificate subject private key shall require the authorization of at least two officers or one officer and an administrator, auditor, or operator.
|
| Certificate Status Change Approval |
Only officers and the subject of the certificate shall be capable of requesting that a certificate be placed on hold.
Only officers shall be capable of removing a certificate from on hold status.
Only officers shall be capable of approving the placing of a certificate on hold.
Only officers and the subject of the certificate shall be capable of requesting the revocation of a certificate.
Only officers shall be capable of approving the revocation of a certificate and all information about the revocation of a certificate.
|
- FDP_ACF_CIMC.2.1
- CIMS personnel private keys shall be stored in a FIPS 140-2 validated cryptographic module or stored in encrypted form. If CIMS personnel private keys are stored in encrypted form, the encryption shall be performed by the FIPS 140-2 validated cryptographic module.
- FDP_ACF_CIMC.2.2
- If certificate subject private keys are stored in the target of evaluation, they shall be encrypted using a Long Term Private Key Protection Key. The encryption shall be performed by the FIPS 140-2 validated cryptographic module.Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by Common Criteria.
- FDP_ACF_CIMC.3.1
- User secret keys stored within the CIMC, but not within a FIPS 140-2 validated cryptographic module, shall be stored in encrypted form. The encryption shall be performed by the FIPS 140-2 validated cryptographic module.Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by Common Criteria.
- FDP_CIMC_BKP.2.1
- The backup data shall be protected against modification through the use of digital signatures, keyed hashes, or authentication codes.
- FDP_CIMC_BKP.2.2
- Critical security parameters and other confidential information shall be stored in encrypted form only.Rationale: This component is necessary to specify a unique requirement of certificate issuing and management components that is not addressed by Common Criteria. It supports the security objectives O.Object and data recovery free from malicious code and O.Preservation/trusted recovery of secure state.
- FDP_CIMC_CER.1.1
- The target security functions shall only generate certificates whose format complies with [the X.509 standard for public key certificates].
- FDP_CIMC_CER.1.2
- The target security functions shall only generate certificates that are consistent with the currently defined certificate profile.
- FDP_CIMC_CER.1.3
- The target security functions shall verify that the prospective certificate subject possesses the private key that corresponds to the public key in the certificate request before issuing a certificate, unless the public/private key pair was generated by the target security functions, whenever the private key may be used to generate digital signatures.
- FDP_CIMC_CER.1.4
- If the target security functions generates X.509 public key certificates, it shall only generate certificates that comply with requirements for certificates as specified in ITU-T Recommendation X.509. At a minimum, the target security functions shall ensure that:
- The version field shall contain the integer 0, 1, or 2.
- If the certificate contains an issuerUniqueID or subjectUniqueID then the version field shall contain the integer 1 or 2.
- If the certificate contains extensions then the version field shall contain the integer 2.
- The serialNumber shall be unique with respect to the issuing Certification Authority.
- The validity field shall specify a notBefore value that does not precede the current time and a notAfter value that does not precede the value specified in notBefore.
- If the issuer field contains a null name, such as a sequence of zero relative distinguished names, then the certificate shall contain a critical issuerAltName extension.
- If the subject field contains a null name, such as a sequence of zero relative distinguished names, then the certificate shall contain a critical subjectAltName extension.
- The signature field and the algorithm in the subjectPublicKeyInfo field shall contain the OID for a FIPS-approved or recommended algorithm.
Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by Common Criteria.
- FDP_CIMC_CRL.1.1
- A target security functions that issues CRLs shall verify that all mandatory fields in any CRL issued contain values in accordance with ITU-T Recommendation X.509. At a minimum, the following items shall be validated:
- If the version field is present, then it shall contain a 1.
- If the CRL contains any critical extensions, then the version field shall be present and contain the integer 1.
- If the issuer field contains a null name, such as a sequence of zero relative distinguished names, then the CRL shall contain a critical issuerAltName extension.
- The signature and signatureAlgorithm fields shall contain the OID for a FIPS-approved digital signature algorithm.
- The thisUpdate field shall indicate the issue date of the CRL.
- The time specified in the nextUpdate field (if populated) shall not precede the time specified in the thisUpdate field.
Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by Common Criteria.
- FDP_CIMC_CSE.1.1
- Certificate status information shall be exported from the target of evaluation in messages whose format complies with [the X.509 standard for CRLs (RFC2459) and, the OCSP standard as defined by RFC 2560].Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by Common Criteria.
- FDP_CIMC_OCSP.1.1
- If a target security function is configured to allow OCSP responses of the basic response type, the target security functions shall verify that all mandatory fields in the OCSP basic response contain values in accordance with IETF RFC 2560. At a minimum, the following items shall be validated:
- The version field shall contain a zero (0).
- If the issuer field contains a null name, such as a sequence of zero relative distinguished names, then the response shall contain a critical issuerAltName extension.
- The signatureAlgorithm field shall contain the OID for a FIPS-approved digital signature algorithm.
- The thisUpdate field shall indicate the time at which the status being indicated is known to be correct.
- The producedAt field shall indicate the time at which the OCSP responder signed the response.
- The time specified in the nextUpdate field (if populated) shall not precede the time specified in the thisUpdate field.
Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by Common Criteria.
- FDP_ETC_CIMC.5.1
- Private and secret keys shall only be exported from the target of evaluation in encrypted form or using split knowledge procedures. Electronically distributed secret and private keys shall only be exported from the target of evaluation in encrypted form.Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by Common Criteria.
- FDP_ITT.1.1
- The target security functions shall enforce the [CIMC target of evaluation access control policy] to prevent the [modification] of user data when it is transmitted between physically-separated parts of the target of evaluation.
- FDP_ITT.1.1
- The target security functions shall enforce the [CIMC target of evaluation access control policy] to prevent the [disclosure] of user data when it is transmitted between physically separated parts of the target of evaluation.
- FDP_SDI_CIMC.3.1
- Public keys stored within the CIMC, but not within a FIPS 140-2 validated cryptographic module, shall be protected against undetected modification through the use of digital signatures, keyed hashes, or authentication codes.
- FDP_SDI_CIMC.3.2
- The digital signature, keyed hash, or authentication code used to protect a public key shall be verified upon each access to the key. If verification fails, the target security functions shall [audit the failure].Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by Common Criteria.
- FDP_UCT.1.1
- The target security functions shall enforce the [CIMC target of evaluation access control policy] to be able to [transmit] objects in a manner protected from unauthorized disclosure.
- FIA_UAU.1.1
- FIA_UAU.1.2
- The target security functions shall require each user to be successfully authenticated before allowing any other target security functions-mediated actions on behalf of that user.
- FIA_UID.1.1
- The target security functions shall allow [certificate enrollment requests and certificate retrieval] on behalf of the user to be performed before the user is identified.
- FIA_UID.1.2
- The target security functions shall require each user to be successfully identified before allowing any other target security functions-mediated actions on behalf of that user.
- FIA_USB.1.1
- The target security functions shall associate the [authentication token] user security attributes with subjects acting on the behalf of that user.
- FIA_USB.1.2
- The target security functions shall enforce the rules that [the authentication token that is assigned to the user after a successful authentication] on the initial association of user security attributes with subjects acting on the behalf of users.
- FIA_USB.1.3
- The target security functions shall associate the user security attributes that [the authentication token of a subject cannot change] with subjects acting on the behalf of that user.
- FMT_MOF.1.1
- The target security functions shall restrict the ability to [modify the behavior of] the functions [listed in Table B.5, “Authorized Roles for Management of Security Functions Behavior”] to [the authorized roles as specified in Table B.5, “Authorized Roles for Management of Security Functions Behavior”].
Table B.5. Authorized Roles for Management of Security Functions Behavior
| Section/Function | Component Function | Authorized Role | ||
|---|---|---|---|---|
| Security Audit |
| |||
| Certificate Registration |
| |||
| Data Export and Output | The export of CIMC private keys shall require the authorization of at least two administrators or one administrator and one officer, auditor, or operator. | |||
| Certificate Status Change Approval |
| |||
| CIMC Configuration | The capability to configure any target security functions functionality shall be restricted to administrators. (This requirement applies to all configuration parameters unless the ability to configure that aspect of the target security functions functionality has been explicitly assigned to a different role.) | |||
| Certificate Profile Management | FMT_MOF_CIMC.3 Extended certificate profile management | The capability to modify the certificate profile shall be restricted to administrators. | ||
| Revocation Profile Management | The capability to modify the revocation profile shall be restricted to administrators. | |||
| Certificate Revocation List Profile Management | FMT_MOF_CIMC.5 Extended certificate revocation list profile management | The capability to modify the certificate revocation list profile shall be restricted to administrators. | ||
| Online Certificate Status Protocol (OCSP) Profile Management | FMT_MOF_CIMC.6 OCSP profile management | The capability to modify the OCSP profile shall be restricted to administrators. |
- FMT_MOF_CIMC.3.1
- The target security functions shall implement a certificate profile and shall ensure that issued certificates are consistent with that profile.
- FMT_MOF_CIMC.3.2
- The target security functions shall require the administrator to specify the set of acceptable values for the following fields and extensions:
- The key owner's identifier
- The algorithm identifier for the subject’s public/private key pair
- The identifier of the certificate issuer
- The length of time for which the certificate is valid
- FMT_MOF_CIMC.3.3
- If the certificates generated are X.509 public key certificates, the target security functions shall require the administrator to specify the set of acceptable values for the following fields and extensions:
- keyUsage
- basicConstraints
- certificatePolicies
- FMT_MOF_CIMC.3.4
- The administrator shall specify the acceptable set of certificate extensions.Rationale: This component is necessary to specify a unique requirement of certificate issuing and management components that is not addressed by Common Criteria. It supports the security objective O.Configuration management.
- FMT_MOF_CIMC.5.1
- If the target security function issues CRLs, the target security functions must implement a certificate revocation list profile and ensure that issued CRLs are consistent with the certificate revocation list profile.
- FMT_MOF_CIMC.5.2
- If the target security function issues CRLs, the target security functions shall require the administrator to specify the set of acceptable values for the following fields and extensions:
- issuer
- issuerAltName[4]
- nextUpdate (that is, the lifetime of a CRL)
- FMT_MOF_CIMC.5.3
- If the target security function issues CRLs, the administrator shall specify the acceptable set of CRL and CRL entry extensions.Rationale: This component is necessary to specify a unique requirement of certificate issuing and management components that is not addressed by Common Criteria. It supports the security objective O.Configuration management.
- FMT_MOF_CIMC.6.1
- If the target security function issues OCSP responses, the target security functions shall implement an OCSP profile and ensure that issued OCSP responses are consistent with the OCSP profile.
- FMT_MOF_CIMC.6.2
- If the target security functions issues OCSP responses, the target security functions shall require the administrator to specify the set of acceptable values for the responsetype field (unless the CIMC can only issue responses of the basic response type).
- FMT_MOF_CIMC.6.3
- If the target security function is configured to allow OCSP responses of the basic response type, the target security functions shall require the administrator to specify the set of acceptable values for the ResponderID field within the basic response type.Rationale: This component is necessary to specify a unique requirement of certificate issuing and management components that is not addressed by Common Criteria. It supports the security objective O.Configuration management.
- FMT_MTD_CIMC.4.1
- CIMC private keys shall be stored in a FIPS 140-2 validated cryptographic module or stored in encrypted form. If CIMC private keys are stored in encrypted form, the encryption shall be performed by the FIPS 140-2 validated cryptographic module.Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by Common Criteria.
- FMT_MTD_CIMC.5.1
- Target security function secret keys stored within the target of evaluation, but not within a FIPS 140-2 validated cryptographic module, shall be stored in encrypted form. The encryption shall be performed by the FIPS 140-2 validated cryptographic module.Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by Common Criteria.
- FMT_MTD_CIMC.7.1
- Private and secret keys shall only be exported from the target of evaluation in encrypted form or using split knowledge procedures. Electronically distributed secret and private keys shall only be exported from the target of evaluation in encrypted form.Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by Common Criteria.
- FPT_CIMC_TSP.1.1
- The target security functions shall periodically create an audit log signing event in which it computes a digital signature, keyed hash, or authentication code over the entries in the audit log.
- FPT_CIMC_TSP.1.2
- The digital signature, keyed hash, or authentication code shall be computed over, at least, every entry that has been added to the audit log since the previous audit log signing event and the digital signature, keyed hash, or authentication code from the previous audit log signed event.
- FPT_CIMC_TSP.1.3
- The specified frequency at which the audit log signing event occurs shall be configurable.
- FPT_CIMC_TSP.1.4
- The digital signature, keyed hash, or authentication code from the audit log signing event shall be included in the audit log.Rationale: This component is necessary to specify a unique requirement for certificate issuing and management components that is not addressed by existing Common Criteria requirements. It supports the security objective O.Protect stored audit records, by providing additional protection for stored audit records at Security Levels 2 and 3.
- FPT_ITC.1.1
- The target security functions shall protect all target security functions data transmitted from the target security functions to another trusted IT product from unauthorized disclosure during transmission.
- FPT_ITT.1.1
- The target security functions shall protect target security functions data from [modification] when it is transmitted between separate parts of the target of evaluation.
- FPT_ITT.1.1
- The target security functions shall protect target security functions data from [disclosure] when it is transmitted between separate parts of the target of evaluation.
- FPT_STM.1.1
- The target security functions shall be able to provide reliable time stamps.
Table B.6. Assurance Requirements (EAL 4 augmented)
| Requirement Class | Requirement Component | |||||||
|---|---|---|---|---|---|---|---|---|
| ADV: Development |
| |||||||
| AGD: Guidance documents |
| |||||||
| ALC: Life-cycle support |
| |||||||
| ATE: Tests |
| |||||||
| AVA: Vulnerability assessment | AVA_VAN.3: Focused vulnerability analysis |
- ADV_ARC.1.1c
- The security architecture description shall be at a level of detail commensurate with the description of the SFR-enforcing abstractions described in the target of evaluation design document.
- ADV_ARC.1.1d
- The developer shall design and implement the target of evaluation so that the security features of the target security functions cannot be bypassed.
- ADV_ARC.1.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ADV_ARC.1.2c
- The security architecture description shall describe the security domains maintained by the target security functions consistently with the SFRs.
- ADV_ARC.1.2d
- The developer shall design and implement the target security functions so that it is able to protect itself from tampering by untrusted active entities.
- ADV_ARC.1.3c
- The security architecture description shall describe how the target security functions initialization process is secure.
- ADV_ARC.1.3d
- The developer shall provide a security architecture description of the target security functions.
- ADV_ARC.1.4c
- The security architecture description shall demonstrate that the target security functions protects itself from tampering.
- ADV_ARC.1.5c
- The security architecture description shall demonstrate that the target security functions prevents bypass of the SFR-enforcing functionality.
- ADV_FSP.4.1c
- The functional specification shall completely represent the target security functions.
- ADV_FSP.4.1d
- The developer shall provide a functional specification.
- ADV_FSP.4.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ADV_FSP.4.2c
- The functional specification shall describe the purpose and method of use for all target security function instructions.
- ADV_FSP.4.2d
- The developer shall provide a tracing from the functional specification to the SFRs.
- ADV_FSP.4.2e
- The evaluator shall determine that the functional specification is an accurate and complete instantiation of the SFRs.
- ADV_FSP.4.3c
- The functional specification shall identify and describe all parameters associated with each target security function instructions.
- ADV_FSP.4.4c
- The functional specification shall describe all actions associated with each target security function instructions.
- ADV_FSP.4.5c
- The functional specification shall describe all direct error messages that may result from security enforcing effects and exceptions associated with an invocation of each target security function instructions.
- ADV_FSP.4.6c
- The tracing shall demonstrate that the SFRs trace to target security function instructions in the functional specification.
- ADV_IMP.1.1c
- The implementation representation shall define the target security functions to a level of detail such that the target security functions can be generated without further design decisions.
- ADV_IMP.1.1d
- The developer shall make available the implementation representation for the entire target security functions.
- ADV_IMP.1.1e
- The evaluator shall confirm that, for the selected sample of the implementation representation, the information provided meets all requirements for content and presentation of evidence.
- ADV_IMP.1.2c
- The implementation representation shall be in the form used by the development personnel.
- ADV_IMP.1.2d
- The developer shall provide a mapping between the target of evaluation design description and the sample of the implementation representation.
- ADV_IMP.1.3c
- The mapping between the target of evaluation design description and the sample of the implementation representation shall demonstrate their correspondence.
- ADV_TDS.3.10c
- The mapping shall demonstrate that all behavior described in the target of evaluation design is mapped to the target security function instructions that invoke it.
- ADV_TDS.3.1c
- The design shall describe the structure of the target of evaluation in terms of subsystems.
- ADV_TDS.3.1d
- The developer shall provide the design of the target of evaluation.
- ADV_TDS.3.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ADV_TDS.3.2c
- The design shall describe the target security functions in terms of modules.
- ADV_TDS.3.2d
- The developer shall provide a mapping from the target security function instructions of the functional specification to the lowest level of decomposition available in the target of evaluation design.
- ADV_TDS.3.2e
- The evaluator shall determine that the design is an accurate and complete instantiation of all security functional requirements.
- ADV_TDS.3.3c
- The design shall identify all subsystems of the target security functions.
- ADV_TDS.3.4c
- The design shall provide a description of each subsystem of the target security functions.
- ADV_TDS.3.5c
- The design shall provide a description of the interactions among all subsystems of the target security functions.
- ADV_TDS.3.6c
- The design shall provide a mapping from the subsystems of the target security functions to the modules of the target security functions.
- ADV_TDS.3.7c
- The design shall describe each SFR-enforcing module in terms of its purpose.
- ADV_TDS.3.8c
- The design shall describe each SFR-enforcing module in terms of its SFR-related interfaces, return values from those interfaces, and called interfaces to other modules.
- ADV_TDS.3.9c
- The design shall describe each SFR-supporting or SFR-non-interfering module in terms of its purpose and interaction with other modules.
- AGD_OPE.1.1c
- The operational user guidance shall describe, for each user role, the user-accessible functions and privileges that should be controlled in a secure processing environment, including appropriate warnings.
- AGD_OPE.1.1d
- The developer shall provide operational user guidance.
- AGD_OPE.1.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- AGD_OPE.1.2c
- The operational user guidance shall describe, for each user role, how to use the available interfaces provided by the target of evaluation in a secure manner.
- AGD_OPE.1.3c
- The operational user guidance shall describe, for each user role, the available functions and interfaces, in particular all security parameters under the control of the user, indicating secure values as appropriate.
- AGD_OPE.1.4c
- The operational user guidance shall, for each user role, clearly present each type of security-relevant event relative to the user-accessible functions that need to be performed, including changing the security characteristics of entities under the control of the target security functions.
- AGD_OPE.1.5c
- The operational user guidance shall identify all possible modes of operation of the target of evaluation (including operation following failure or operational error), their consequences and implications for maintaining secure operation.
- AGD_OPE.1.6c
- The operational user guidance shall, for each user role, describe the security measures to be followed in order to fulfill the security objectives for the operational environment as described in the security target.
- AGD_OPE.1.7c
- The operational user guidance shall be clear and reasonable.
- AGD_PRE.1.1c
- The preparative procedures shall describe all the steps necessary for secure acceptance of the delivered target of evaluation in accordance with the developer's delivery procedures.
- AGD_PRE.1.1d
- The developer shall provide the target of evaluation including its preparative procedures.
- AGD_PRE.1.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- AGD_PRE.1.2c
- The preparative procedures shall describe all the steps necessary for secure installation of the target of evaluation and for the secure preparation of the operational environment in accordance with the security objectives for the operational environment as described in the security target.
- AGD_PRE.1.2e
- The evaluator shall apply the preparative procedures to confirm that the target of evaluation can be prepared securely for operation.
- ALC_CMC.4.10c
- The evidence shall demonstrate that the CM system is being operated in accordance with the CM plan.
- ALC_CMC.4.1c
- The target of evaluation shall be labeled with its unique reference.
- ALC_CMC.4.1d
- The developer shall provide the target of evaluation and a reference for the target of evaluation.
- ALC_CMC.4.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ALC_CMC.4.2c
- The CM documentation shall describe the method used to uniquely identify the configuration items.
- ALC_CMC.4.2d
- The developer shall provide the CM documentation.
- ALC_CMC.4.3c
- The CM system shall uniquely identify all configuration items.
- ALC_CMC.4.4c
- The CM system shall provide automated measures such that only authorized changes are made to the configuration items.
- ALC_CMC.4.5c
- The CM system shall support the production of the target of evaluation by automated means.
- ALC_CMC.4.6c
- The CM documentation shall include a CM plan.
- ALC_CMC.4.7c
- The CM plan shall describe how the CM system is used for the development of the target of evaluation.
- ALC_CMC.4.8c
- The CM plan shall describe the procedures used to accept modified or newly created configuration items as part of the target of evaluation.
- ALC_CMC.4.9c
- The evidence shall demonstrate that all configuration items are being maintained under the CM system.
- ALC_CMS.4.1c
- The configuration list shall include the following: the target of evaluation itself; the evaluation evidence required by the SARs; the parts that comprise the target of evaluation; the implementation representation; and security flaw reports and resolution status.
- ALC_CMS.4.1d
- The developer shall provide a configuration list for the target of evaluation.
- ALC_CMS.4.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ALC_CMS.4.2c
- The configuration list shall uniquely identify the configuration items.
- ALC_CMS.4.3c
- For each target security functions relevant configuration item, the configuration list shall indicate the developer of the item.
- ALC_DEL.1.1c
- The delivery documentation shall describe all procedures that are necessary to maintain security when distributing versions of the target of evaluation to the consumer.
- ALC_DEL.1.1d
- The developer shall document procedures for delivery of the target of evaluation or parts of it to the consumer.
- ALC_DEL.1.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ALC_DEL.1.2d
- The developer shall use the delivery procedures.
- ALC_DVS.1.1c
- The development security documentation shall describe all the physical, procedural, personnel, and other security measures that are necessary to protect the confidentiality and integrity of the target of evaluation design and implementation in its development environment.
- ALC_DVS.1.1d
- The developer shall produce development security documentation.
- ALC_DVS.1.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ALC_DVS.1.2e
- The evaluator shall confirm that the security measures are being applied.
- ALC_FLR.2.1c
- The flaw remediation procedures documentation shall describe the procedures used to track all reported security flaws in each release of the target of evaluation.
- ALC_FLR.2.1d
- The developer shall document flaw remediation procedures addressed to target of evaluation developers.
- ALC_FLR.2.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ALC_FLR.2.2c
- The flaw remediation procedures shall require that a description of the nature and effect of each security flaw be provided, as well as the status of finding a correction to that flaw.
- ALC_FLR.2.2d
- The developer shall establish a procedure for accepting and acting upon all reports of security flaws and requests for corrections to those flaws.
- ALC_FLR.2.3c
- The flaw remediation procedures shall require that corrective actions be identified for each of the security flaws.
- ALC_FLR.2.4c
- The flaw remediation procedures documentation shall describe the methods used to provide flaw information, corrections and guidance on corrective actions to target of evaluation users.
- ALC_FLR.2.5c
- The flaw remediation procedures shall describe a means by which the developer receives from target of evaluation users reports and inquiries of suspected security flaws in the target of evaluation.
- ALC_FLR.2.6c
- The procedures for processing reported security flaws shall ensure that any reported flaws are remediated and the remediation procedures issued to target of evaluation users.
- ALC_FLR.2.7c
- The procedures for processing reported security flaws shall provide safeguards that any corrections to these security flaws do not introduce any new flaws.
- ALC_FLR.2.8c
- The flaw remediation guidance shall describe a means by which target of evaluation users report to the developer any suspected security flaws in the target of evaluation.
- ALC_LCD.1.1c
- The life-cycle definition documentation shall describe the model used to develop and maintain the target of evaluation.
- ALC_LCD.1.1d
- The developer shall establish a life-cycle model to be used in the development and maintenance of the target of evaluation.
- ALC_LCD.1.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ALC_LCD.1.2c
- The life-cycle model shall provide for the necessary control over the development and maintenance of the target of evaluation.
- ALC_LCD.1.2d
- The developer shall provide life-cycle definition documentation.
- ALC_TAT.1.1c
- Each development tool used for implementation shall be well-defined.
- ALC_TAT.1.1d
- The developer shall identify each development tool being used for the target of evaluation.
- ALC_TAT.1.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ALC_TAT.1.2c
- The documentation of each development tool shall unambiguously define the meaning of all statements as well as all conventions and directives used in the implementation.
- ALC_TAT.1.2d
- The developer shall document the selected implementation-dependent options of each development tool.
- ALC_TAT.1.3c
- The documentation of each development tool shall unambiguously define the meaning of all implementation-dependent options.
- ATE_COV.2.1c
- The analysis of the test coverage shall demonstrate the correspondence between the tests in the test documentation and the target security function instructions in the functional specification.
- ATE_COV.2.1d
- The developer shall provide an analysis of the test coverage.
- ATE_COV.2.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ATE_COV.2.2c
- The analysis of the test coverage shall demonstrate that all target security function instructions in the functional specification have been tested.
- ATE_DPT.2.1c
- The analysis of the depth of testing shall demonstrate the correspondence between the tests in the test documentation and the target security functions subsystems and modules in the target of evaluation design.
- ATE_DPT.2.1d
- The developer shall provide the analysis of the depth of testing.
- ATE_DPT.2.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ATE_DPT.2.2c
- The analysis of the depth of testing shall demonstrate that all target security functions subsystems in the target of evaluation design have been tested.
- ATE_DPT.2.3c
- The analysis of the depth of testing shall demonstrate that the SFR-enforcing modules in the target of evaluation design have been tested.
- ATE_FUN.1.1c
- The test documentation shall consist of test plans, expected test results and actual test results.
- ATE_FUN.1.1d
- The developer shall test the target security functions and document the results.
- ATE_FUN.1.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ATE_FUN.1.2c
- The test plans shall identify the tests to be performed and describe the scenarios for performing each test.
- ATE_FUN.1.2d
- The developer shall provide test documentation.
- ATE_FUN.1.3c
- The expected test results shall show the anticipated outputs from a successful execution of the tests.
- ATE_FUN.1.4c
- The actual test results shall be consistent with the expected test results.
- ATE_IND.2.1c
- The target of evaluation shall be suitable for testing.
- ATE_IND.2.1d
- The developer shall provide the target of evaluation for testing.
- ATE_IND.2.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- ATE_IND.2.2c
- The developer shall provide an equivalent set of resources to those that were used in the developer's functional testing of the target security functions.
- ATE_IND.2.2e
- The evaluator shall execute a sample of tests in the test documentation to verify the developer test results.
- ATE_IND.2.3e
- The evaluator shall test a subset of the target security functions interfaces to confirm that the target security functions operates as specified.
- AVA_VAN.3.1c
- The target of evaluation shall be suitable for testing.
- AVA_VAN.3.1d
- The developer shall provide the target of evaluation for testing.
- AVA_VAN.3.1e
- The evaluator shall confirm that the information provided meets all requirements for content and presentation of evidence.
- AVA_VAN.3.2e
- The evaluator shall perform a search of public domain sources to identify potential vulnerabilities in the target of evaluation.
- AVA_VAN.3.3e
- The evaluator shall perform an independent vulnerability analysis of the target of evaluation using the guidance documentation, functional specification, target of evaluation design, security architecture description and implementation representation to identify potential vulnerabilities in the target of evaluation.
- AVA_VAN.3.4e
- The evaluator shall conduct penetration testing, based on the identified potential vulnerabilities, to determine that the target of evaluation is resistant to attacks performed by an attacker possessing Enhanced-Basic attack potential.
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, Data Recovery Manager 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
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 http://www.ietf.org/internet-drafts/draft-ietf-pkix-cmmf-02.txt.
- 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 http://www.ietf.org/internet-drafts/draft-ietf-pkix-cmc-02.txt.
- 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 ftp://ftp.isi.edu/in-notes/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, Data Recovery Manager, 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
- Common Criteria
- A certification standard that evaluates computer security, both for software and hardware components. The software or hardware vendor defines the operating environment and specified configuration, identifies any threats, and outlines both the development and deployment processes for the target of evaluation (the thing being evaluated). The Common Criteria certification laboratory then tests the implementation design to look for any vulnerabilities.
- 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
- Data Recovery Manager
- 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 Data Recovery Manager before issuing new certificates. The Data Recovery Manager 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.
- Data Recovery Manager agent
- A user who belongs to a group authorized to manage agent services for a Data Recovery Manager, including managing the request queue and authorizing recovery operation using HTML-based administration pages.
- Data Recovery Manager recovery agent
- One of the m of n people who own portions of the storage key for the Data Recovery Manager.
- Data Recovery Manager storage key
- Special key used by the Data Recovery Manager to encrypt the end entity's encryption key after it has been decrypted with the Data Recovery Manager's private transport key. The storage key never leaves the Data Recovery Manager.
- Data Recovery Manager transport certificate
- Certifies the public key used by an end entity to encrypt the entity's encryption key for transport to the Data Recovery Manager. The Data Recovery Manager uses the private key corresponding to the certified public key to decrypt the end entity's key before encrypting it with the storage key.
- 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.
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 http://ietfreport.isoc.org/idref/draft-ietf-tls-ecc/.
- 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, DRM, OCSP, and RA) 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's 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 Data Recovery Manager transport key that contains information about an archived end-entity key, including key serial number, name of the Data Recovery Manager, subject name of the corresponding certificate, and date of archival. The signed proof-of-archival data are the response returned by the Data Recovery Manager to the Certificate Manager after a successful key archival operation. See also Data Recovery Manager 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, Data Recovery Manager, 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's public key corresponds to a private key used to create digital signatures. For example, a Certificate Manager must have a signing certificate that's 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's 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 DRM — 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.
A
- accelerators, Tokens for Storing Certificate System Subsystem Keys and Certificates, Hardware Cryptographic Accelerators
- administrators
- tools provided
- Certificate System console, The Java Administrative Console for CA, OCSP, DRM, 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
- DRM and, Planning for Lost Keys: Key Archival and Recovery
- Certificate System
- Elliptic Curve Cryptography (ECC), Using ECC
- starting and stopping, Starting, Stopping, and Restarting an Instance
- 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, Issuing Certificates
- renewing, Renewing and Revoking Certificates
- revoking, Renewing and Revoking Certificates
- 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 client certificates defined, Types of Certificates
- cloning, CA Cloning
- Common Criteria
- configuring SSL client authentication, Installing and Configuring a CA, Installing and Configuring a DRM, Installing and Configuring an OCSP Responder, Installing and Configuring a TKS, Installing and Configuring a TPS
- Configuration tab, The Java Administrative Console for CA, OCSP, DRM, 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, Working with Smart Cards (TMS)
- digital signatures
- defined, Digital Signatures
- distinguished name (DN)
- DRM
- Certificate Manager and, Planning for Lost Keys: Key Archival and Recovery
E
- Elliptic Curve Cryptography (ECC), Using ECC
- 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
F
H
- hardware accelerators, Tokens for Storing Certificate System Subsystem Keys and Certificates, Hardware Cryptographic Accelerators
- hardware tokens, Tokens for Storing Certificate System Subsystem Keys and Certificates, Setting up HSMs for Storing Certificate System Subsystem Keys and Certificates
- See external tokens, Tokens for Storing Certificate System Subsystem Keys and Certificates, External Tokens
- how to search for keys, Archiving Keys
I
- installation, Installing and Configuring Certificate System
- installing external hardware tokens, Installing External Tokens and Unsupported HSM
- internal tokens, Tokens for Storing Certificate System Subsystem Keys and Certificates, Internal Tokens
K
- key archival, Archiving Keys
- how it works, Archiving Keys
- how keys are stored, Archiving Keys
- PKI setup required, Archiving and Recovering 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
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, Setting up HSMs for Storing Certificate System Subsystem Keys and Certificates, External Tokens
- 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
- client certificates, Types of Certificates
- SSL client authentication, Installing and Configuring a CA, Installing and Configuring a DRM, Installing and Configuring an OCSP Responder, Installing and Configuring a TKS, Installing and Configuring a TPS
- SSL client certificate, SSL Server and Client Certificates
- SSL server certificate, SSL Server and Client Certificates
- Status tab, The Java Administrative Console for CA, OCSP, DRM, and TKS Subsystems
- subordinate CA, Subordination to a Certificate System CA
T
- Token Key Service, Working with Smart Cards (TMS)
- Token Processing System and, Working with Smart Cards (TMS)
- Token Key Service (TKS), The TKS and Secure Channels
- Token Management System
- Enterprise Security Client, Enterprise Security Client
- TKS, The TKS and Secure Channels
- Token Processing System, Working with Smart Cards (TMS)
- scalability, Using Smart Cards
- Token Key Service and, Working with Smart Cards (TMS)
- tokens
- defined, Tokens for Storing Certificate System Subsystem Keys and Certificates, Setting up HSMs for Storing Certificate System Subsystem Keys and Certificates, Types of Hardware Tokens
- external, Tokens for Storing Certificate System Subsystem Keys and Certificates, Setting up HSMs for Storing Certificate System Subsystem Keys and Certificates, External Tokens
- internal, Tokens for Storing Certificate System Subsystem Keys and Certificates, Internal Tokens
- viewing which tokens are installed, Viewing Tokens
- topology decisions, for deployment, Working with Smart Cards (TMS)
- transport certificate
- when used, Archiving Keys
- trusted CA, defined, How CA Certificates Establish Trust
U
- user certificate, User Certificates

























