Secure Socket Layers and Public Key infrastructure | EPM-UL
Secure Socket Layers (SSL) enables the use of digital certificates, certificate authorities, extensive network encryption, and checksums for all network packets.
Starting with v3.0, EPM supports Public Key Infrastructure (PKI) through SSL. This feature enables the use of Privacy Enhanced Mail (PEM) format certificates, private keys, and certificate authority files. The SSL features are controlled through the ssloptions setting, and the client and server settings.
Starting with v22.3.0, ssl is always enabled. Starting with v26.1.0, default installations of EPM do not install self-signed certificates for communication. Rather, EPM installs a default public key infrastructure (PKI) whereby EPM communications are secure by default. Note that this new PKI is only used in cases where the customer doesn't use their own certificates for secure communication.
Many of the SSL settings enable token expansion for some useful strings. These are summarized in the following table.
SSL parameter substitutions
| Symbol | Replacement |
|---|---|
| %% | A % character. |
| %g | User’s group ID. |
| %G | User’s group ID number. |
| %h | Local host name. The unqualified name of the current machine. |
| %H | Remote host name of the current machine in Fully Qualified Domain Name (FQDN) format (if available from uname). |
| %I | Unqualified local host name as determined by the network interface. |
| %L | Local host interface name. The local host name, as determined by the network interface, in FQDN format (if available). |
| %n | Program name with neither a prefix of suffix. |
| %N | Program name with a prefix and suffix. |
| %p | Program prefix. |
| %r | Unqualified host name, as determined by the network interface. |
| %R | Remote host interface name. The remote host name, as determined by the network interface, in FQDN format. |
| %s | Program suffix. |
| %u | User’s login ID. |
| %U | User’s UID. |
ssl
The ssl setting is always set to yes, and enables the use of EPM-UL SSL features.
Example
ssl yes
Version 22.3 deprecates ssl, but ssl can still be set to no. In v23.1, the keyword ssl is no longer supported.
Important informationFor a new EPM-UL v23.1.0 install , the ssl keyword is not present in /etc/pb.settings. For an upgrade, the keyword is ignored.
Default
ssl yes
Used on
- Log hosts
- Policy server hosts
- Submit hosts
- Run hosts
restssloptions
- Version 10.1.0 and earlier: restssloptions setting not available.
- Version 10.2.0 and later: restssloptions setting available.
The current restssloptions include:
- TLSMinV1, TLSMinV1.0, TLSMinV1.1, TLSMinV1.2, and TLSMinV1.3
- TLSMaxV1, TLSMaxV1.0, TLSMaxV1.1, TLSMaxV1.2 and TLSMaxV1.3
- MinHMACMD5 and MinHMACSHA512
For FIPS compliance, all EPM-UL hosts must add MinHMACSHA512 to the restssloptions setting.
ssloptions
- Version 4.0.0 and later: ssloptions setting available.
The ssloptions setting controls the following system-wide options.
| Option | Description |
|---|---|
| AllowCachedNonSSL | To allow a cached client to not use SSL when interacting with other components (for example: pbcached, pblocald) on the cached client machine. |
| AllowLegacySSLCerts | Allows connecting to systems not yet updated to the more secure TLS connections. Enable only while you are in the process of upgrading machines from older versions of EPM-UL that do not support this feature. |
| AllowNonSSL | To communicate with older, non-SSL versions of EPM-UL, add AllowNonSSL to your ssloptions line. Doing so allows SSL-enabled versions to communicate with non-SSL versions. If an EPM-UL client is SSL-enabled and the policy server host specifies AllowNonSSL, but not ClientCertificates, then the communications do not use SSL. |
| AllowSNI | If specified, use the new TLS Server Name Indication feature to indicate a specific hostname to which to connect. This is typically used when a destination address supports multiple hostnames or when required by a proxy in use in the network. By default, it is not enabled. |
| ClientCertificates | To require certificates on the client side, add ClientCertificates to the ssloptions line only after all client/submit hosts have been configured with a client certificate and key (for example, using sslpbruncertfile/sslpbruncertdir and sslpbrunkeyfile/sslpbrunkeydir in pb.settings). Clients without certificates will not be able to connect. |
| TLSMinV1.0, TLSMinV1.1, TLSMinV1.2, TLSMinV1.3 | When SSL is enabled, this option allows you to set the minimum SSL/TLS value to use in the protocol. |
| TLSMaxV1.0, TLSMaxV1.1, TLSMaxV1.2, TLSMaxV1.3 | When SSL is enabled, this option allows you to set the maximum SSL/TLS value to use in the protocol. |
| RequireSSL | To require SSL communications between Endpoint Privilege Management components without requiring EPM-UL client certificates, then add RequireSSL to your ssloptions line. |
| SSLFirst | If the SSLFirst option is selected, this option forces the SSL handshake to happen before the EPM-UL handshake. The SSLFirst option must be set on every EPM-UL host including clients and servers. The SSLFirst option is turned on by default in version 10.3.2 and later. SSLFirst is not supported when AllowNonSSL is set. |
| sslverbose | If the sslverbose option is selected, server components log informational messages that are sent to error logs, detailing connections, SSL/TLS protocols, and the encryption ciphers used to communicate. This is a debugging and diagnostic option |
| validateClient | The option validateClient enables EPM-UL servers (pbmasterd, pblocald, pblogd) to use SSL verifypeer and verifyhost features to validate the connected client host. Note that pbmasterd is also a client to pblocald, and both pbmasterd and pblocald are clients to pblogd. This can be used when the client hosts have certificates installed, and the servers’ ssloptions includes the ClientCertificates option (validateClient forces ClientCertificates). Enabling the validateClient ssloption on the server requires that pb.settings on the server includes the sslservercafile keyword, specifying the CA that signed the client’s certificate. The pb.settings file on the client must include the sslpbruncertfile and sslpbrunkeyfile keywords, specifying the client’s certificate and key. This feature alternatively uses the sslpbruncertdir, sslpbrunkeydir, and sslservercadir keywords. The pb.settings file on pbmasterd and pblocald must include sslservercertfile and sslserverkeyfile keywords, specifying the servers' certificate and key. This feature alternatively uses the sslservercertdir and sslserverkeydir keywords. Enabling the AllowNonSSL with validateClient results in an error. Non-SSL connections are not allowed with validateClient. The client host’s hostname should be listed in the Subject Alternative Name (SAN) field of the certificate. |
| validateServer | The option validateServer enables EPM-UL SSL clients to verify the server with the SSL verifypeer and verifyhost features. Note that pbmasterd is a client to pblocald, and both pbmasterd and pblocald are clients to pblogd. Enabling the validateServer on the client requires that pb.settings on the client includes the sslpbruncafile keyword (sslpbservercafile keyword on pbmasterd and pblocald), specifying the CA that signed the server’s certificate. The pb.settings file on the server must include the sslservercertfile and sslserverkeyfile keywords, specifying the server’s certificate and key. This feature alternatively uses the sslservercertdir, sslserverkeydir, and sslpbruncadir keywords. Enabling the AllowNonSSL with validateServer results in an error. Non-SSL connections are not allowed with validateServer. The hostname should be listed in the Subject Alternative Name (SAN) field of the certificate. |
- SSLFirst and AllowNonSSL are mutually exclusive. Configuring both causes pbdbutil or pbrun to reject the setting and can prevent clients from connecting to the policy server.
- If ssloptions includes RequireSSL (for example, ssloptions requiressl sslfirst or ssloptions allownonssl requiressl), then enforcehighsecurity must be set to yes.
If RequireSSL is not part of ssloptions, then enforcehighsecurity may be yes or no.
Before enabling ssloptions ClientCertificates or ssloptions validateClient on servers, ensure that all client/submit hosts (for example, hosts running pbrun, pbsh, or pbksh are configured with a certificate authority (CA), a client certificate, and a client private key.
BeyondTrust does not guarantee that all client hosts have client certificates provisioned (for example, immediately after a new install or after upgrading to use managed certificates). If you enable ClientCertificates or validateClient on servers before updating clients, any client host that does not have a valid certificate and key configured will fail to connect.
On each client/submit host, configure the settings in pb.settings:
- sslpbruncadir or sslpbruncafile: CA used to validate servers (and optionally the chain)
- sslpbruncertfile or sslpbruncertdir: PEM-format client certificate
- sslpbrunkeyfile or sslpbrunkeydir: PEM-format client private key
On each server host that enforces client validation, configure:
- sslservercafile or sslservercadir: CA that issued/signed the client certificates
- sslservercertfile/ sslserverkeyfile (or sslservercertdir / sslserverkeydir): Server certificate and key
Do not enable ClientCertificates or validateClient until these prerequisites are met on all relevant hosts.
The program terminates if invalid values are provided for ssloptions.
Examples
Supported combinations
ssloptions AllowNonSSL
ssloptions requiressl sslfirst
ssloptions ClientCertificates
ssloptions AllowNonSSL ClientCertificates
Unsupported combination
ssloptions allownonssl sslfirst
Default
requiressl
Used on
- Log hosts
- Policy server hosts
- Submit hosts
- Run hosts
X509 certificates
Prior to v26.1, a customer could forego the use of their own certificates in favor of PMUL's default self-signed certificates. Starting with v26.1, PMUL establishes a per-installation Public Key Infrastructure (PKI). The first (primary/license) server generates a self-signed Root Certificate Authority (Root CA) certificate, which becomes the trust anchor for the entire installation. Policy and log servers that can act as registration servers each receive a Subordinate CA certificate signed by the Root CA (or by another subordinate CA), and all servers and client endpoints receive individual CA-signed certificates for use in TLS communication. Certificate and hostname validation are now fully enforced for connections using these new certificates.
Note that the new PMUL Public Key Infrastructure is only used in cases when the customer doesn't use their own certificates for secure PMUL communication.
For more information on how to install using your own certificates, see Install EPM-UL using your certificates.
Certificates commands and options are used in pbinstall, pbregister, and pbdbutil info.
Certificate types
X509 certificates used by EPM-UL:
- Unknown: Type that cannot be identified as an EPM-UL generated certificate, including customer generated and managed certificates.
- Legacy: By default, self-signed certificates generated by EPM-UL during installation of earlier versions.
- New client: Starting in 26.1.0, a CA signed certificate issued to clients or endpoints for use in TLS communication.
- New server: Starting in 26.1.0, a CA signed certificate issued to EPM-UL servers (license server, policy server, log server, etc.) for use in TLS communication.
- New CA: Starting in 26.1.0, a certificate issued to EPM-UL servers capable of acting as registration servers for use in signing other certificates. It will have been signed by either some other new CA certificate in the customer’s installation or by the root CA itself.
- New Root CA: Beginning in 26.1.0, the certificate to be deemed the root of all trust for a given customer installation. This will be self-signed, and must be securely transported to any system needing to interact with EPM-UL, such as endpoints, other EPM-UL servers, and BIUL.
Determine the type of certificate using pbdbutil with command line options:
pbdbutil --info --certtype </path/file>
Certificate lifetimes
Default lifetimes for certificates:
- Root CA certificates: 15 years
- Sub CA certificates: 5 years
- Server CA certificates: 3 years
- Endpoint certificates: 13 months
For the initial release, pbinstall will allow changing the certificate lifetime values only on the first (or primary) server using a new command line option.
Keywords
-
cadatadb: The base name of the certificate authority database. By default it's
pbcadata.dbwhich resides in the PMUL database directory which, by default, is/opt/pbul/dbs. -
rootcakey: x509 private key for the Root Certificate Authority.
-
rootcacert: x509 public certificate for the Root Certificate Authority. This certificate is distributed to all hosts, so they can verify certificates.
-
sslservercakey: x509 private key for EPM-UL servers (pbmasterd, pblogd, pblocald, license server).
-
sslservercacert: x509 public certificate for EPM-UL servers (pbmasterd, pblogd, pblocald, license server).
-
sslcertcheckdays: The number of days prior to certificate expiration to attempt renewals. The default for this value is 30.
-
certificatelifetimes: To override the default certificate lifetimes, this setting can define the custom valid periods for each type of certificate. The value is a list of one or more space-separated combinations of the following:
ca|subca|sca|server|svr|client|clnt=<number>[y|m|w|d]Example:
certificatelifetimes ca=10y sca=5y svr=3y clnt=2y
Server-side SSL
For client hosts where optimized run mode is always used (the submit host is always the run host), a server-side SSL scenario can be set up where the client machine does not need a server key/certificate pair or a client key/certificate pair.
The sslpbruncafile keyword is optional. If sslpbruncafile is specified, sslpbruncafile is the certificate authority (CA) that signed the server’s certificate. If sslpbruncafile is not specified, then the server’s certificate authenticity is not verified.
If the submit host is not the same host as the run host or if a log server is not used, then the pblocald server is used to execute the secured task. pblocald is an SSL server and requires the sslservercafile, sslservercertfile, and sslserverkeyfile settings.
SSL client settings
The SSL client settings configure SSL for EPM-UL client programs.
sslpbruncadir and sslpbruncafile
- Version 4.0.0 and later: sslpbruncadir and sslpbruncafile settings available.
These settings specify the path to a certificate authority directory or file.
A certificate authority file is a PEM-formatted file that contains one or more PEM-formatted signature certificates. The programs pbrun, pbksh, and pbsh use these certificate authority files to validate certificates from pbmasterd and pblocald. This file should not contain private keys.
If sslpbruncafile contains an absolute path, then that file is used as the certificate authority file. If sslpbruncafile contains a relative path, then the value of the sslpbruncadir setting is prepended to form an absolute path. The pbrun certificate authority file and certificate authority directory must be owned by root and no one else should have write permission.
These settings enable the parameter substitutions shown in SSL parameter substitutions.
Trusted CA directory path
By default, EPM-UL uses /etc/pbcerts as the trusted root CA directory for client tools such as pbrun. If you change sslservercadir to a non-default location (for example, to align with your PKI standards), ensure one of the following is true:
- The default directory /etc/pbcerts exists on upgraded systems, or
- The client trusted CA directory setting sslpbruncadir matches sslservercadir
If neither condition is met, client tools may still report a missing /etc/pbcerts directory even though the server CA directory was changed.
Example
sslpbruncafile /secure/ca/pbrun/OurAuthority.pem
sslpbruncadir /secure/ca/pbrun
sslpbruncafile OurAuthority.pem
sslpbruncadir /secure/ca/pbrun sslpbruncafile %N.pem
Default
No default value
Used on
Submit hosts
sslpbruncertdir and sslpbruncertfile
- Version 4.0.0 and later: sslpbruncertdir and sslpbruncertfile settings available.
The sslpbruncertdir and sslpbruncertfile settings specify the path of a Privacy Enhanced Mail (PEM) format certificate file for clients to communicate with pbmasterd and pblocald.
If a full absolute path is provided for sslpbruncertfile, then it is used. If a relative path is provided for sslpbruncertfile, then the directory specified in the sslpbruncertdir setting is prepended to form the certificate file path.
root or the submitting user must own the pbrun certificate file and certificate directory. No one else should have write permission.
These settings enable the parameter substitutions shown in SSL parameter substitutions.
Example
sslpbruncertfile /secure/certificates/pbrun/pbrun.pem
sslpbruncertdir /secure/certificates/pbrun
sslpbruncertfile pbrun.pem
sslpbruncertdir /home/%u/certificates
sslpbruncertfile %u.pem
Defaults
No default value
Used on
Submit hosts
sslpbruncipherlist
- Version 4.0.0 and later: sslpbruncipherlist setting available.
OpenSSL provides a variety of algorithms that can be used for encryption. The sslpbruncipherlist setting enables the administrator to restrict or promote the set of encryption algorithms that are used by Endpoint Privilege Management clients to communicate with SSL enabled server services.
The keyword sslpbruncipherlist accepts "cipherlist=" and "tlsv1.3=" cipher groups.
The cipher groups cipherlist= and tlsv1.3= are case-sensitive and space is not allowed before =.
When using the sslpbruncipherlist keyword, the order of cipher lists is not relevant.
This format: sslpbruncipherlist cipherlist= TLSv1.2:!SSLv2:@STRENGTH tlsv1.3= TLS_AES_256_GCM_SHA384
is the same as this format:
sslpbruncipherlist tlsv1.3= TLS_AES_256_GCM_SHA384 cipherlist= TLSv1.2:!SSLv2:@STRENGTH
These ciphers are limited to the set of ciphers available in the given version of OpenSSL used by the Endpoint Privilege Management installation.
For more information, see the Release Notes.
Valid values
Refer to the following table for the valid values for the sslpbruncipherlist. To use more than one cipher set, separate the values with colons.
cipherlist Values
| OpenSSL Cipher Set | Setting Value |
|---|---|
| SSL_RSA_WITH_NULL_MD5 | NULL-MD5 |
| SSL_RSA_WITH_NULL_SHA | NULL-SHA |
| SSL_RSA_EXPORT_WITH_RC4_40_MD5 | EXP-RC4-MD5 |
| SSL_RSA_WITH_RC4_128_MD5 | RC4-MD5 |
| SSL_RSA_WITH_RC4_128_SHA | RC4-SHA |
| SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 | EXP-RC2-CBC-MD5 |
| SSL_RSA_EXPORT_WITH_DES40_CBC_SHA | EXP-DES-CBC-SHA |
| SSL_RSA_WITH_DES_CBC_SHA | DES-CBC3-SHA |
| SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA | EXP-EDH-DSS-DES-CBC-SHA |
| SSL_DHE_DSS_WITH_DES_CBC_SHA | EDH-DSS-CBC-SHA |
| SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA | EDH-DSS-DES-CBC3-SHA |
| SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA | EXP-EDH-RSA-DES-CBC-SHA |
| SSL_DHE_RSA_WITH_DES_CBC_SHA | EDH-RSA-DES-CBC-SHA |
| SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA | EDH-RSA-DES-CBC3-SHA |
tlsv1.3 Values
| OpenSSL Cipher Set | Setting Value |
|---|---|
| TLS13-AES-256-GCM-SHA384 | TLS13-AES-256-GCM-SHA384 |
| TLS13-CHACHA20-POLY1305-SHA256 | TLS13-CHACHA20-POLY1305-SHA256 |
| TLS13-AES-128-GCM-SHA256 | TLS13-AES-128-GCM-SHA256 |
| TLS13-AES-128-CCM-8-SHA256 | TLS13-AES-128-CCM-8-SHA256 |
| TLS13-AES-128-CCM-SHA256 | TLS13-AES-128-CCM-SHA256 |
Examples
In the following code snippet, EPM-UL uses the cipher lists:
- TLSv1.2:!SSLv2:@STRENGTH for TLS v1.2 (and earlier) connections
- TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256 for TLS v1.3 connections
sslpbruncipherlist cipherlist=TLSv1.2:!SSLv2:@STRENGTH tlsv1.3=TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256
In the following code snippet, EPM-UL uses the cipher lists:
- TLSv1.2:!SSLv2:!3DES:!eNULL:@STRENGTH for TLS v1.2 (and earlier) connections.
- tlsv1.3= cipher group for TLSv1.3 connections. This is the default value.
sslpbruncipherlist cipherlist=TLSv1.2:!SSLv2:!3DES:!eNULL:@STRENGTH
Default
cipherlist=TLSv1.2:!SSLv2:!3DES:!MD5:!ADH:!AECDH:!DHE:!eNULL:@STRENGTH
tlsv1.3=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
Used on
Submit hosts
sslpbrunkeydir and sslpbrunkeyfile
- Version 4.0.0 and later: sslpbrunkeydir and sslpbrunkeyfile settings available.
The sslpbrunkeyfile and sslpbrunkeydir settings enable you to specify the location of a PEM-formatted private key for the client certificate file that is used to communicate with pbmasterd and pblocald.
If sslpbrunkeyfile is a full path name, then it is used for the private key. If sslpbrunkeyfile does not contain an absolute path, then sslpbrunkeydir is prepended to it.
The clients are usually interactive, so the private keys can be encrypted. The clients prompt for the passphrase when needed. If you are invoking a client non-interactively (for example, from cron), then the private key should not be encrypted.
root or the submitting user must own the private key file and the private key directory. No one else should have read or write permission.
If the key file and directory are not set, then the client looks in the certificate file to see if the key is there. In this case, the certificate file and directory must be read-only and owned by root or the submitting user. No one else should have read or write permission.
These settings enable the parameter substitutions shown in SSL parameter substitutions.
Example
sslpbrunkeyfile /secure/privatekeys/pbrun.pem
sslpbrunkeydir /secure/privatekeys/
sslpbrunkeyfile %u.pem
sslpbrunkeydir /home/%u/privatekeys
sslpbrunkeyfile %u.pem
Defaults
No default value
Used on
Submit hosts
sslpbrunverifysubject
- Version 4.0.0 and later: sslpbrunverifysubject setting available.
sslpbrunverifysubject contains a series of regular expressions to check against the policy server’s certificate subject line. If the subject line matches all patterns, then the connection is allowed to proceed. If any of the patterns do not match, then the connection fails.
Example
This example verifies that the CN attribute (common name) matches the host name of the remote machine:
sslpbrunverifysubject /CN=%R/
Example
This example verifies that the O attribute equals Company Name and that the OU attribute starts with Technology:
sslpbrunverifysubject '/O=Company Name/' /OU=Technology
Single quotation marks should surround the attribute if there are embedded spaces.
Default
No default value
Used on
Submit hosts
SSL server settings
The SSL server settings configure SSL for EPM server programs.
sslservercadir and sslservercafile
- Version 4.0.0 and later: sslservercadir and sslservercafile settings available.
The sslservercadir and sslservercafile settings specify the path to a certificate authority directory or file. A certificate authority file is a PEM-formatted file that contains one or more PEM-formatted signature certificates that are used to validate server certificates. This file should not contain private keys.
If sslservercafile contains an absolute path, then that file is used as the certificate authority file. If sslservercafile contains a relative path, then the value of the sslservercadir setting is prepended to form an absolute path.
The server certificate authority file and certificate authority directory must be owned by root and no one else should have write permission.
These settings enable the parameter substitutions shown in SSL parameter substitutions.
Example
sslservercafile /secure/ca/servers/OurAuthority.pem
sslservercadir /secure/ca/servers
sslservercafile OurAuthority.pem
sslservercadir /secure/ca/servers sslservercafile %h.pem
Defaults
/etc/<prefix>pbssl.pem<suffix>
Used on
- GUI hosts
- Log hosts
- Policy server hosts
- Run hosts
sslservercertdir and sslservercertfile
- Version 4.0.0 and later: sslservercertdir and sslservercertfile settings available.
The sslservercertdir and sslservercertfile settings specify the path of a Privacy Enhanced Mail (PEM) format certificate file for pbmasterd, pblocald, and pblogd to communicate with each other or with client programs.
- If a full absolute path is provided for sslservercertfile, then it is used as specified.
- If a relative path is provided for sslservercertfile, then the directory specified in the sslservercertdir setting is prepended to form the certificate file path.
The server certificate file and certificate directory must be owned by root and no one else should have write permission.
These settings enable the parameter substitutions shown in SSL parameter substitutions.
Example
sslservercertfile /secure/certificates/servers/pbmasterd.pem
sslservercertdir /secure/certificates/servers
sslservercertfile pbmasterd.pem
sslservercertdir /secure/certificates/servers
sslservercertfile %N.pem
Defaults
/etc/pbssl.pem
Used on
- GUI hosts
- Log hosts
- Policy server hosts
- Run hosts
sslservercipherlist
- Version 4.0.0 and later: sslservercipherlist setting available.
OpenSSL provides a variety of algorithms that can be used for encryption. The sslservercipherlist setting enables the administrator to restrict or promote the set of encryption algorithms that are used by EPM servers when they receive communications from SSL enabled clients.
These ciphers are limited to the set of ciphers available in the given version of OpenSSL used by the EPM installation.
The keyword sslservercipherlist accepts "cipherlist=" and "tlsv1.3=" cipher groups.
The cipher groups cipherlist= and tlsv1.3= are case-sensitive and space is not allowed before =.
When using the sslservercipherlist keyword, the order of cipher lists is not relevant.
This format: sslservercipherlist cipherlist= TLSv1.2:!SSLv2:@STRENGTH tlsv1.3= TLS_AES_256_GCM_SHA384
is the same as this format:
sslservercipherlist tlsv1.3= TLS_AES_256_GCM_SHA384 cipherlist= TLSv1.2:!SSLv2:@STRENGTH
Valid values
To use more than one cipher set, separate the values with colons.
Examples
sslservercipherlist cipherlist=TLSv1.2:!SSLv2:!3DES:!MD5:!ADH:!AECDH:!DHE:!eNULL:@STRENGTH tlsv1.3=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
sslservercipherlist cipherlist=TLSv1.2:!SSLv2:!3DES:!MD5:!ADH:!AECDH:!DHE:!eNULL:@STRENGTH
sslservercipherlist tlsv1.3=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_128_CCM_8_SHA256
Default
Default cipherlist value for the cipher group cipherlist:
cipherlist=TLSv1.2:!SSLv2:!3DES:!MD5:!ADH:!AECDH:!DHE:!eNULL:@STRENGTH
Default cipher suite value of the cipher group tlsv1.3:
tlsv1.3=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
Used on
- GUI hosts
- Log hosts
- Policy server hosts
- Run hosts
For more information, see Release Notes, cipherlist Values.
sslserverkeydir and sslserverkeyfile
- Version 4.0.0 and later: sslserverkeydir and sslserverkeyfile settings available.
The sslserverkeyfile and sslserverkeydir settings enable you to specify the location of a PEM- formatted private key for the server certificate file that is used by pbmasterd, pblocald, and pblogd to communicate with each other or with client programs.
If sslserverkeyfile is a full path name, then it is used for the private key. If sslserverkeyfile does not contain an absolute path, then sslserverkeydir is prepended to it.
The servers are not interactive, so the private keys should not be encrypted.
The private key file and the private key directory must be owned by root and no one else should have read or write permission.
If the key file and directory are not set, then the daemons look in the certificate file to see if the key is there. In this case, the certificate file and directory must be read-only and owned by root. No one else should have read or write permission.
These settings enable the parameter substitutions shown in SSL parameter substitutions.
Example
sslserverkeyfile /secure/certificates/serverkeys/pbmasterd.pem
sslserverkeydir /secure/certificates/serverkeys
sslserverkeyfile pbmasterd.pem
sslserverkeydir /secure/certificates/serverkeys
sslserverkeyfile %N.pem
Defaults
/etc/<prefix>pbssl.pem<suffix>
Used on
- GUI hosts
- Log hosts
- Policy server hosts
- Run hosts
sslserververifysubject
- Version 4.0.0 and later: sslserververifysubject setting available.
sslserververifysubject contains a series of regular expressions to check against the client’s or other server’s certificates subject line. If the subject line matches all patterns, then the connection is allowed to proceed. If any of the patterns do not match, then the connection fails.
Example
This example verifies that the CN attribute (common name) matches the host name of the remote machine:
sslserververifysubject /CN=%R/
Example
This example verifies that the O attribute equals Company Name and the OU attribute starts with Technology:
sslserververifysubject '/O=Company Name/' /OU=Technology
Single quotation marks should surround the attribute if there are embedded spaces.
Default
No default value
Used on
- GUI hosts
- Log hosts
- Policy server hosts
- Run hosts
Additional configuration to improve EPM
As of version 26.1, EPM-UL no longer generates self-signed certificates in cases where customers do not provide their own certifictates. Instead, EPM-UL now establishes a built-in public key infrastructure (PKI) whereby all certificates other than the EPM-UL root Certificate Authority (CA) are in a trust chain leading up to that root CA. If the customer uses this new default public key infrastructure, rather than their own certificates, then TLS certificate and hostname validation will be fully enforced for connections using these new certificates.
Although the new EPM-UL PKI siginficantly enhances connection security compared to prior versions, there are additional actions that the customer may optionally take to enhances security. These are discussed in the remainder of this section.
Configure EPM to use the SSLFirst keyword in /etc/pb.settings. This keyword must have the same value on all hosts in the EPM domain. The SSLFirst keyword results in SSL/TLS occurring prior to any EPM proprietary protocol negotiations that use symmetric keys, reducing any issue with compromised symmetric networkencryption keys.
The TLS ciphers should be changed to disallow anonymous ciphers.
Edit the sslpbruncipherlist and sslservercipherlist entries in /etc/pb.settings:
sslpbruncipherlist cipherlist=TLSv1.2:!SSLv2:!3DES:!MD5:!ADH:!AECDH:!DHE:!eNULL:@STRENGTH tlsv1.3=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
sslservercipherlist cipherlist=TLSv1.2:!SSLv2:!3DES:!MD5:!ADH:!AECDH:!DHE:!eNULL:@STRENGTH tlsv1.3=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
Edit the ssl.cipher-list entry in /usr/lib/beyondtrust/pb/rest/etc/pblighttpd.conf:
ssl.cipher-list = "TLSv1.2:!SSLv2:!3DES:!MD5:!ADH:!AECDH:!DHE:!eNULL:@STRENGTH"
and
ssl.openssl.ssl-conf-cmd = (
"MinProtocol" => " TLSv1.2",
"CipherString" => "TLSv1.2:!SSLv2:!3DES:!MD5:!ADH:!AECDH:!DHE:!eNULL:@STRENGTH",
"Ciphersuites" => "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
)
EPM-UL version 21.1 and below of EPM-UL client registration uses TLSv1. Use below TLS protocol version to allow older versions of EPM-UL client registrations.
ssl.cipher-list = "HIGH:!SSLv2:!3DES:!MD5:!ADH:!AECDH:!DHE:!eNULL:@STRENGTH"
and
ssl.openssl.ssl-conf-cmd = (
"MinProtocol" => " TLSv1",
"CipherString" => "HIGH:!SSLv2:!3DES:!MD5:!ADH:!AECDH:!DHE:!eNULL:@STRENGTH",
"Ciphersuites" => "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
In the following sections the diagram shows the SSL server and SSL client connections between pbmasterd, pblocald, pblogd and pbrun and the table shows the required certificate keywords in pb.settings file on each host when validateServer or validateClient is added to ssloptions.
Use your own certificates
Starting in EPM-UL 26.1.0, you can deploy EPM-UL using certificates that are issued by, or chained to, your existing enterprise certificate authority (CA), instead of relying on the self-signed certificates created during install.
Use this configuration when:
- Your organization uses an internal PKI, and
- Policy requires that TLS certificates used by EPM-UL are issued by, or chained to, that PKI.
Note
EPM-UL does not support arbitrary customer self-signed endpoint or server certificates. Certificates must chain to a trusted CA.
At a minimum:- Configure server-side certificates and keys using
sslservercertfileandsslserverkeyfile. - Configure client-side certificates and keys using
sslpbruncertfileandsslpbrunkeyfile, where required. - Configure trusted CA locations using
sslpbruncadir/sslpbruncafileandsslservercadir/sslservercafile.
- Configure server-side certificates and keys using
During installation, you can prevent automatic certificate creation and point EPM-UL at your own PKI by using the following pbinstall options:
-n noto skip checking and auto-creation of default certificates and keys.-H rootcacert=<path>/-H rootcakey=<path>to specify your Root CA certificate and key.-V sslservercacert=<path>/-V sslservercakey=<path>to specify your server SubCA certificate and key.- Avoid using
-kif you want to retain existing customer-managed certificates, because-koverwrites self-signed certificates with new EPM-UL CA-signed certificates.
For more information, see Install EPM-UL using your own certificates
SSL architectures
SSL connections in default architecture: classic pbrun
| ssloptions | SSL cert/CA file required | ssloptions | SSL cert/CA file required | |
|---|---|---|---|---|
| On Submithost (pbrun) | validateServer | *sslpbruncafile | validateClient | - (pbrun is not an SSL server at any point, also refer to *) |
| On Masterhost (pbmasterd) | sslservercertfile sslserverkeyfile | - | ||
| On Loghost (pblogd) | - | - | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | sslservercertfile sslserverkeyfile | - | ||
| On Submithost (pbrun) | - | sslpbruncertfile sslpbrunkeyfile | ||
| On Masterhost (pbmasterd) | validateServer (pbmasterd is client to pblocald, pblogd) | sslservercafile | validateClient | sslservercafile |
| On Loghost (pblogd) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Submithost (pbrun) | - | - | ||
| On Masterhost (pbmasterd) | - | sslservercertfile sslserverkeyfile | ||
| On Loghost (pblogd) | validateServer | - (pblogd is not an SSL client to any host) | validateClient | sslservercafile |
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | - | sslservercertfile sslserverkeyfile ***sslpbruncertfile sslpbrunkeyfile | ||
| On Submithost (pbrun) | - | sslpbruncertfile sslpbrunkeyfile | ||
| On Masterhost (pbmasterd) | - | sslservercertfile sslserverkeyfile | ||
| On Loghost (pblogd) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | validateServer | sslservercafile | validateClient | sslservercafile |
* Mentioning sslpbruncafile with or without validateServer and validateClient options requires pbmasterd and pblocald certificates.
** Mentioning sslservercafile on a SSL client (pbmasterd and pblocald) with or without validateServer and validateClient options always requires certificates from its immediate SSL server or servers.
*** pblocald needs sslpbruncertfile and sslpbrunkeyfile to log finish event.
SSL connections in optimized runmode
| ssloptions | SSL cert/CA file required | ssloptions | SSL cert/CA file required | |
|---|---|---|---|---|
| On Submithost (pbrun) | validateServer | *sslpbruncafile | validateClient | - (pbrun is not an SSL server at any point, also refer to *) |
| On Masterhost (pbmasterd) | sslservercertfile sslserverkeyfile | - | ||
| On Loghost (pblogd) | sslservercertfile sslserverkeyfile (for IOLogging and finish event) | - | ||
| On Submithost (pbrun) | - | sslpbruncertfile sslpbrunkeyfile | ||
| On Masterhost (pbmasterd) | validateServer (pbmasterd is client to pblogd) | sslservercafile | validateClient | sslservercafile |
| On Loghost (pblogd) | sslservercertfile sslserverkeyfile | **sslservercertfile sslpbrunkeyfile | ||
| On Submithost (pbrun) | - | sslpbruncertfile sslpbrunkeyfile (for IOLogging and to log finish event) | ||
| On Masterhost (pbmasterd) | - | sslservercertfile sslserverkeyfile | ||
| On Loghost (pblogd) | validateServer | - (pblogd is not an SSL client to any host) | validateClient | sslservercafile |
* Mentioning sslpbruncafile with or without validateServer and validateClient options requires pbmasterd and pblogd certificates.
** Mentioning sslservercafile on pbmasterd with or without validateServer and validateClient options always requires certificates from pblogd.
SSL connections with noreconnect=1 in the policy
- noreconnect=1 : pbrun does not connect to pblocald directly
| ssloptions | SSL cert/CA file required | ssloptions | SSL cert/CA file required | |
|---|---|---|---|---|
| On Submithost (pbrun) | validateServer | *sslpbruncafile | validateClient | - (pbrun is not an SSL server at any point, also refer to *) |
| On Masterhost (pbmasterd) noreconnect=1 in the policy | sslservercertfile sslserverkeyfile | - | ||
| On Loghost (pblogd) | - | - | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | - | - | ||
| On Submithost (pbrun) | - | sslpbruncertfile sslpbrunkeyfile | ||
| On Masterhost (pbmasterd) noreconnect=1 in the policy | validateServer (pbmasterd is client to pblocald, pblogd) | sslservercafile | validateClient | sslservercafile |
| On Loghost (pblogd) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd -- disable_optimized_runmode) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Submithost (pbrun) | - | - | ||
| On Masterhost (pbmasterd) noreconnect=1 in the policy | - | sslservercertfile sslserverkeyfile | ||
| On Loghost (pblogd) | validateServer | - (pblogd is not an SSL client to any host) | validateClient | sslservercafile |
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd -- disable_optimized_runmode) | - | sslservercertfile sslserverkeyfile ***sslpbruncertfile sslpbrunkeyfile | ||
| On Submithost (pbrun) | - | - | ||
| On Masterhost (pbmasterd) noreconnect=1 in the policy | - | sslservercertfile sslserverkeyfile | ||
| On Loghost (pblogd) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd -- disable_optimized_runmode) | validateServer | sslservercafile | validateClient | sslservercafile |
* Mentioning sslpbruncafile with or without validateserver and validateclient options requires pbmasterd certificates.
** Mentioning sslservercafile on a SSL client (pbmasterd and pblocald) with or without validateserver and validateclient options always requires certificates from its immediate SSL server or servers.
*** pblocald needs sslpbruncertfile and sslpbrunkeyfile to log finish event.
SSL connections with lognoreconnect=1 in the policy
- lognoreconnect=1 : pblocald does not connect to pblogd directly and pbrun does not connect to pblocald directly.
| ssloptions | SSL cert/CA file required | ssloptions | SSL cert/CA file required | |
|---|---|---|---|---|
| On Submithost (pbrun) | validateServer | *sslpbruncafile | validateClient | - (pbrun is not an SSL server at any point, also refer to *) |
| On Masterhost (pbmasterd) lognoreconnect=1 in the policy | sslservercertfile sslserverkeyfile | - | ||
| On Loghost (pblogd) | - | - | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | - | - | ||
| On Submithost (pbrun) | - | sslpbruncertfile sslpbrunkeyfile | ||
| On Masterhost (pbmasterd) lognoreconnect=1 in the policy | validateServer (pbmasterd is client to pblocald, pblogd) | sslservercafile | validateClient | sslservercafile |
| On Loghost (pblogd) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Submithost (pbrun) | - | - | ||
| On Masterhost (pbmasterd) lognoreconnect=1 in the policy | - | sslservercertfile sslserverkeyfile | ||
| On Loghost (pblogd) | validateServer | - (pblogd is not an SSL client to any host) | validateClient | sslservercafile |
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | - | sslservercertfile sslserverkeyfile ***sslpbruncertfile sslpbrunkeyfile | ||
| On Submithost (pbrun) | - | - | ||
| On Masterhost (pbmasterd) lognoreconnect=1 in the policy | - | sslservercertfile sslserverkeyfile | ||
| On Loghost (pblogd) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | validateServer | sslservercafile | validateClient | sslservercafile |
* Mentioning sslpbruncafile with or without validateServer and validateClient options requires pbmasterd certificates.
** Mentioning sslservercafile on pbmasterd with or without validateserver and validateclient options always requires certificates from pblocald and pblogd.
SSL connections with pbrunreconnection=1 in the policy
- pbrunreconnection=1 : pblocald listens for the connections that are initiated by pbrun under the control of pbmasterd.
- pbrunreconnection=0 : pbrun listens for the connections that are initiated by pblocald under the control of pbmasterd. This value is the default.
| ssloptions | SSL cert/CA file required | ssloptions | SSL cert/CA file required | |
|---|---|---|---|---|
| On Submithost (pbrun) | validateServer | *sslpbruncafile | validateClient | - (pbrun is not an SSL server at any point, also refer to *) |
| On Masterhost (pbmasterd) pbrunreconnection=1 in the policy | sslservercertfile sslserverkeyfile | - | ||
| On Loghost (pblogd) | - | - | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | sslservercertfile sslserverkeyfile | - | ||
| On Submithost (pbrun) | - | sslpbruncertfile sslpbrunkeyfile | ||
| On Masterhost (pbmasterd) pbrunreconnection=1 in the policy | validateServer (pbmasterd is client to pblocald, pblogd) | sslservercafile | validateClient | sslservercafile |
| On Loghost (pblogd) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Submithost (pbrun) | - | - | ||
| On Masterhost (pbmasterd) pbrunreconnection=1 in the policy | - | sslservercertfile sslserverkeyfile | ||
| On Loghost (pblogd) | validateServer | - (pblogd is not an SSL client to any host) | validateClient | sslservercafile |
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | - | sslservercertfile sslserverkeyfile ***sslpbruncertfile sslpbrunkeyfile | ||
| On Submithost (pbrun) | - | sslpbruncertfile sslpbrunkeyfile | ||
| On Masterhost (pbmasterd) pbrunreconnection=1 in the policy | - | sslservercertfile sslserverkeyfile | ||
| On Loghost (pblogd) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | validateServer | sslservercafile | validateClient | sslservercafile |
* Mentioning sslpbruncafile with or without validateserver and validateclient options requires pbmasterd and pblocald certificates.
** Mentioning sslservercafile on a SSL client (pbmasterd and pblocald) with or without validateserver and validateclient options always requires certificates from its immediate SSL server or servers.
*** pblocald needs sslpbruncertfile and sslpbrunkeyfile to log finish event.
SSL connections with pblogdreconnection=1 in the policy
- pblogdreconnection=1 : pblocald listens for the connections that are initiated by pblogd under the control of pbmasterd.
- pblogdreconnection=0 : pblogd listens for the connections that are initiated by pblocald under the control of pbmasterd. This value is the default.
| ssloptions | SSL cert/CA file required | ssloptions | SSL cert/CA file required | |
|---|---|---|---|---|
| On Submithost (pbrun) | validateServer | *sslpbruncafile | validateClient | - (pbrun is not an SSL server at any point, also refer to *) |
| On Masterhost (pbmasterd) pblogdreconnection=1 in the policy | sslservercertfile sslserverkeyfile | - | ||
| On Loghost (pblogd) | - | - | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | sslservercertfile sslserverkeyfile | - | ||
| On Submithost (pbrun) | - | sslpbruncertfile sslpbrunkeyfile | ||
| On Masterhost (pbmasterd) pblogdreconnection=1 in the policy | validateServer (pbmasterd is client to pblocald, pblogd) | sslservercafile | validateClient | sslservercafile |
| On Loghost (pblogd) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd --disable_optimized_runmode) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Submithost (pbrun) | - | - | ||
| On Masterhost (pbmasterd) pblogdreconnection=1 in the policy | - | sslservercertfile sslserverkeyfile | ||
| On Loghost (pblogd) | validateServer | - (pblogd is not an SSL client to any host) | validateClient | sslservercafile |
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd -- disable_optimized_runmode) | - | sslservercertfile sslserverkeyfile ***sslpbruncertfile sslpbrunkeyfile | ||
| On Submithost (pbrun) | - | sslpbruncertfile sslpbrunkeyfile | ||
| On Masterhost (pbmasterd) pblogdreconnection=1 in the policy | - | sslservercertfile sslserverkeyfile | ||
| On Loghost (pblogd) | sslservercertfile sslserverkeyfile | **sslservercertfile sslserverkeyfile | ||
| On Runhost (pblocald) (submithost != runhost) or (pbrun --di) or (pbmasterd -- disable_optimized_runmode) | validateServer | sslservercafile | validateClient | sslservercafile |
* Mentioning sslpbruncafile with or without validateServer and validateClient options requires pbmasterd and pblocald certificates.
** Mentioning sslservercafile on a SSL client (pbmasterd and pblocald) with or without validateserver and validateclient options always requires certificates from its immediate SSL server or servers.
*** pblocald needs sslpbruncertfile and sslpbrunkeyfile to log finish event.
Updated 5 days ago