Create a file that contains the settings that you want to apply to the Certificate Enrollment for ChromeOS extension for users. Start with this sample file and change the policies to suit your organization’s or users’ needs. You can edit the JavaScript Object Notation (JSON) file using a text editor.
Note: Policies that contain default values in user-facing strings are translated and appear on devices according to the user’s locale. You can change strings to suit your organization’s needs, but they won’t be translated.
You can set the following policies:
Policy name |
What it does |
allow_machine_cert_enrollment
|
Allows users to install a system certificate.
If set to true, users can choose to request a system or user certificate. Otherwise, they can only request a user certificate.
The default is false.
|
cep_proxy_url
|
Specifies the https endpoint for the CEP.
To get the endpoint:
- In IIS Manager, go to the CEP website.
The name usually contains CEP.
- Open Application Settings.
The https endpoint for the CEP is listed there under URI.
Only values that start with https are valid. If you enter a value that starts with https but does not match the Uniform Resource Identifier (URI) in IIS Manager, it will still be considered to be valid and will be used, but will most likely fail.
This policy is mandatory.
|
company_info
|
Specifies your organization’s branding information, such as name and logo.
- Set help_url to direct users to a webpage where they can get information or support.
- If the webpage that you specify is blocked for users without a certificate, such as on first request, use help_text to provide some helpful text to them.
- If you set help_url and help_text, the webpage you specified appears below the help text on users’ devices.
|
device_cert_request_values
|
Specifies the values to be used in the certificate signing request (CSR) for a device certificate.
Instead of using the requester’s properties, you can define subject values based on user and device attributes. To use custom CSR, you should also configure the certificate template on the certificate authority (CA) to expect and generate a certificate with the subject values defined in the request itself. At minimum, you need to provide a value for the subject's CommonName .
You can use the following placeholders. All values are optional.
For ChromeOS devices running version 66 and later, you can use:
${DEVICE_DIRECTORY_ID} —Device’s directory ID
${USER_EMAIL} —Signed-in user’s email address
${USER_DOMAIN} —Signed-in user’s domain name
${DEVICE_SERIAL_NUMBER} —Device's serial number
${DEVICE_ASSET_ID} —Asset ID assigned to device by administrator
${DEVICE_ANNOTATED_LOCATION} —Location assigned to device by administrator
If a placeholder value isn’t available, it’s replaced with an empty string.
You can chain placeholders. For example, ${DEVICE_ASSET_ID:DEVICE_SERIAL_NUMBER} is replaced by the device’s serial number if the asset ID isn’t available.
|
device_enrollment_templates
|
List of matching certificate template names in order of priority for user-enrollment flows. The extension searches the list to find a matching certificate template. The first matching certificate template is used. If there’s an error, the extension doesn’t retry with other certificate templates.
This policy is mandatory. It must have at least one value in the list.
From the CA Microsoft Management Console (MMC), use the Template name and not the Template display name.
The default is ChromeOSWirelessUser.
|
enable_auto_enrollment
|
Controls whether the extension automatically initiates enrollment. If set to false, the extension waits for the user to attempt to connect to the EAP-TLS network.
The default is false.
|
log_level |
Specifies the level of detail in the extension’s logs that are sent to the JavaScript console in Chrome.
NONE (default)—Nothing is logged to the console.
ERROR—Only distinct errors are logged to the console.
WARNING—Distinct errors and warnings are logged to the console.
INFO—Distinct errors and warnings along with relevant action information are logged to the console.
DEBUG—Everything is logged to the console. For the initial version, this setting is recommended to troubleshoot potential issues. In More Options, you can automatically copy all logs to the clipboard.
There are 2 ways that users can open the web developer console in Chrome to access the Chrome logs on their device:
- Press Ctrl+Shift+i.
- Click More tools
Developer tools.
This policy is mandatory.
|
placeholder_values |
Specifies the username, password, URI, request ID, and header placeholders. This information helps guide users when they’re signing in.
- The Username, Password, URI, and RequestID fields are displayed over the input fields to show what each input field does.
- The Header field is used for the page’s title.
- There are special values for the Username, Password, and Header fields that allow customers to use internationalized default names.
- managed_username_placeholder—Username
- managed_password_placeholder—Password
- managed_login_header—Certificate enrollment
- If your organization uses other terminology, such as passphrase instead of password, you can change the values. However, the new value isn’t translated.
|
renew_hours_before_expiry |
Specifies the length of time, in hours, prior to certificate expiration to notify users of an expiration.
The default is 120.
|
renew_reminder_interval |
Controls how often, in hours, prior to certificate expiration that users are notified.
After the initial notification, if the user does not renew the certificate and does not choose to ignore reminders, they’ll see further notifications after the amount of hours set.
For example, if you set renew_hours_before_expiry to 120 and renew_reminder_interval to 24 and a user always chooses to receive further reminders, then the user receives 5 renewal notifications, one each day, until the certificate expires.
The default is 24.
|
request_timeout_seconds
|
The length of time, in seconds, before a call to CEP or CES times out.
The default is 20.
|
signature_algo
|
Controls what signature algorithm the extension uses to sign certificate requests. Options are:
- SHA1 (not recommended)—Weak algorithm that can compromise the security of your users
- SHA256
- SHA512 (default)
|
user_cert_request_values
|
Specifies the values used in the certificate signing request (CSR) for a user certificate.
Instead of using the requester’s properties, you can define subject values based on user and device attributes. To use custom CSR, you should also configure the certificate template on the CA to expect and generate a certificate with the subject values defined in the request itself. At minimum, you need to provide a value for the subject's CommonName .
You can use the following placeholders. All values are optional.
-
${DEVICE_DIRECTORY_ID} —Device’s directory ID
-
${USER_EMAIL} —Signed-in user’s email address
-
${USER_DOMAIN} —Signed-in user’s domain name
-
${DEVICE_SERIAL_NUMBER} —Device's serial number
-
${DEVICE_ASSET_ID} —Asset ID assigned to device by administrator
-
${DEVICE_ANNOTATED_LOCATION} —Location assigned to device by administrator
-
${USER_ID} —First part (part before @) of signed-in user’s email address
If a placeholder value isn’t available, it’s replaced with an empty string.
You can chain placeholders. For example, ${DEVICE_ASSET_ID:DEVICE_SERIAL_NUMBER} is replaced by the device’s serial number if the asset ID isn’t available.
|
user_enrollment_templates
|
List of matching certificate template names in order of priority for user-enrollment flows. The extension searches the list to find a matching certificate template. The first matching certificate template is used. If there’s an error, the extension doesn’t retry with other certificate templates.
This policy is mandatory. It must have at least one value in the list.
From the CA MMC, use the Template name and not the Template display name.
The default is ChromeOSWirelessUser.
|
Configure certificate provisioning with or without user-entered credentials
By default, the certificate enrollment extension is set up to let users manually provision a certificate by providing their credentials when trying to get a certificate.
You can ensure users can automatically provision or renew a certificate without having to manually enter their credentials by using the ChromeOS extension. The extension can request both user and device certificates using Kerberos authentication if a user Kerberos ticket is available on the device. It can also request device certificates only using a service account.
Kerberos authentication
Before you begin
- The ChromeOS user must have a Kerberos ticket on the device.
- The Active Directory user account associated with the Kerberos ticket must have permission to request certificates using the configured Certificate Template.
- The enrollment endpoint must be listed in the Integrated authentication servers ChromeOS policy. For details see the policy in the Chrome Policy list.
Configure the extension
Set the extension policy value `client_authentication`
to `kerberos`
.
Hosted service account authentication
You can set the extension to request a device certificate using a service account. The credentials for the service account are hosted on a web server on your local network.
Warning: If an attacker gains access to the web server hosting the credentials and the extension policy on the device, there is the possibility that they can extract the service account credentials.
We recommend restricting access to the web server that hosts the service account credentials to a provisioning network that is only used for initial ChromeOS device provisioning.
Before you begin
- You must have a web server on the local network that can handle HTTPS requests.
- ChromeOS must trust the certificate of that web server. If the web server uses a certificate issued by a self-signed CA, you can configure the CA’s certificate to be trusted in the Admin console.
Step1: Generate the masked password
- Open the extension.
- Select More
Password Mask Tool.
- Enter the service account password.
- Select Mask.
- Copy the mask and the masked password into a text file.
Step 2: Store credentials on the internal web server
- Configure the web server to serve a JSON file that contains the following:
{
‘username’: ‘<service account username>’,
‘maskedPassword’: ‘<copy and pasted masked password>’
}
- Copy the URL that the web server is using to host the credentials into a text file.
Step 3: Configure the extension policy
- Set the extension policy variable
‘service_account_host’
to the URL you copied above.
- Set the extension policy variable
‘service_account_host_password_mask’
to the mask you copied above.
Automated certificate renewal
You can set the extension to renew existing certificates without additional authentication using key-based renewal.
Before you begin
An ADCS Certificate Enrollment Service (CES) endpoint that supports key-based renewal for the configured Certificate Template must be available. For details, see Configuring Certificate Enrollment Web Service for certificate key-based renewal on a custom port.
Configure the extension
- Set the extension policy value
`use_key_based_renewal`
to true.
- Set the extension policy value
‘ces_renewal_url’
to the URL of the Certificate Enrollment Service (CES) endpoint that supports key-based renewal.