Certificate Autoenrollment
Certificate Autoenrollment
Certificate Autoenrollment is a feature of Safeguard Authentication Services based on Microsoft Open Specifications. Certificate Autoenrollment allows macOS, UNIX, and Linux clients to take advantage of existing Microsoft infrastructure to automatically enroll for and install certificates. Certificate policy controls which certificates are enrolled and what properties those certificates will have.
With Certificate Autoenrollment, a public/private key pair is automatically generated according to certificate template parameters defined in Group Policy. The public key is sent to the Certification Authority (CA), and the CA responds with a new certificate corresponding to the public key, which is installed along with the private key into the appropriate system or user keychain on the Mac, UNIX, or Linux client.
You can use Group Policy to automatically configure which certificate enrollment policy servers to use for Certificate Autoenrollment and to periodically run Certificate Autoenrollment.
By following the instructions presented in this section, a system administrator will be able to configure new or existing systems to download certificate enrollment policy from a certificate enrollment policy server. Additionally, the systems will automatically enroll and renew certificates based on the certificate enrollment policy.
Certificate Autoenrollment is an optional package distributed with One Identity Safeguard Authentication Services. For instructions on installing this package, see the One Identity Safeguard Authentication Services Installation Guide.
Certificate Autoenrollment on UNIX and Linux
Most of the Certificate Autoenrollment code is implemented in Java. After this code has successfully requested a certificate from a CA, it invokes platform-specific code to store the private key and certificate in a suitable way for the operating system or for particular applications. This platform-specific code is implemented as a shell script, certstore.sh, in the /var/opt/quest/vascert/script directory.
The certstore.sh script is a platform-agnostic front end that chooses and loads a platform-specific back end script:
-
For macOS, the backend script is certstore-mac.sh. This script provides a fully functional implementation that uses the /usr/bin/security tool to integrate with macOS keychains.
-
For UNIX/Linux, the backend script is certstore-DEV.sh. This script provides a skeletal implementation that is convenient for initial experimentation and may be used as the basis for implementation; the script itself does not provide a fully functional implementation:
-
Some of the shell functions in certstore-DEV.sh simply print "UNIMPLEMENTED" and return a non-zero exit status to indicate failure.
-
The following shell functions in certstore-DEV.sh are mock implementations designed to facilitate simple experimentation with the "vascert pulse" command for a user:
-
importIdentity()
-
exportUserCerts()
-
These mock implementations assume that the openssl command is installed and available on the default PATH.
-
The mock implementations also make some platform-specific assumptions (for example, they invoke the mv command with the --backup option), but these are not critical and can be removed.
As a consequence, on UNIX/Linux some important Certificate Autoenrollment commands, such as "vascert pulse" for the superuser will NOT work until the necessary platform-specific functionality has been implemented in certstore-DEV.sh or a similar script.
See the Examples and further explanation for modifying certstore-DEV.sh on Linux and UNIX (284711) KB article for more information on modifying certstore-DEV.sh and a simple example script.
Certificate Autoenrollment requirements and setup
Prior to installing One Identity Certificate Autoenrollment, ensure your system meets the following minimum hardware and software requirements.
Table 18: Certificate Autoenrollment: Minimum requirements
Operating system |
macOS 10.13 (or later)
Red Hat® Enterprise Linux® 6 (or later)
Oracle Solaris® 11 (or later)
SUSE® Linux Enterprise Server 11 (or later)
Ubuntu® 14.04 LTS (or later) |
Java unlimited strength policy files |
For more information, see For more information, see Java requirement: Unlimited Strength Jurisdiction Policy Files.. |
Safeguard Authentication Services |
One Identity Safeguard Authentication Services version 4.1.2 (or later). |
Additional software |
Certificate Autoenrollment depends on services provided by a Microsoft Enterprise Certificate Authority (CA) in your environment.
In addition to Active Directory and an Enterprise CA, you must install the following software in your environment:
In order for Certificate Autoenrollment to function on client computers, you must configure the following policies:
Additionally, you must configure Java 1.6 (or later) as the default JVM for your system.
NOTE: Install JRE (Java Runtime Environment) on all platforms other than macOS. macOS requires JDK (Java Development Kit). Typing java on the command line provides instructions.
-
For Linux/UNIX operating systems, install JRE 1.6 (or later).
-
For Mac OS X (that is, your operating system tells you to get it from Apple), install what Apple provides (JRE).
-
For macOS (that is, your operating system tells you to get it from Oracle), install the JDK. |
Rights |
Enterprise Administrator rights to install software and configure Group Policy and Certificate Template policy (only if Certificate Autoenrollment is not already configured for Windows hosts in your environment.) |
Java requirement: Unlimited Strength Jurisdiction Policy Files
By default, most JRE and JDK implementations enforce limits on cryptographic key strengths that satisfy US export regulations. These limits are often insufficient for Certificate Autoenrollment and may lead to "java.security.InvalidKeyException: Illegal key size" failures. The "Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files" can be installed to remove these limits and enable Certificate Autoenrollment to function properly.
Do I need the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files?
In general the answer is: Yes, these files are needed.
Java 9 and above do not require these files, but Java 6, 7, and 8 rely on these files.
Obtaining and installing the policy files
For Java implementations from IBM, the policy files are usually bundled with the JDK but not the JRE, so it may be more convenient to install the JDK rather than just the JRE. Once the JDK is installed its demo/jce/policy-files/unrestricted directory should contain two JAR files:
-
local_policy.jar
-
US_export_policy.jar
Use these files to replace the corresponding JAR files in the jre/lib/security directory of the JDK. Alternatively, the "Unrestricted SDK JCE policy files" can be downloaded from ibm.com.
For Java implementations from Sun, Oracle and Apple and for OpenJDK implementations, the policy files must be downloaded from Oracle. Each major Java version requires its own policy files:
Each of these downloads is a zip file that includes a README.txt and two JAR files, local_policy.jar and US_export_policy.jar. Use these JAR files to replace the corresponding files in the JRE or JDK: