GC HTTPS Certificate Guidance
Certificate Recommendations and Guidance
In support of the HTTPS Everywhere initiative, a recommendations document was developed for the purpose of identifying the minimum requirements for TLS server certificate type and content, issuing CA conformance and website responsibilities that apply to all externally facing GC websites. This effort was led by TBS OCIO in close collaboration with members of the HTTPS working group including CRA, CSE, ESDC and SSC.
While there are many technical details within the report that are not captured in this brief summary, the most important recommendations are:
- Domain Validated (DV) server certificates are recommended for use by GC public facing. While the use of Organization Validated (OV) and Extended Validation (EV) certificates is not prevented, DV certificates are preferred due to their lower cost, and ability to support automated certificate issuance, for the same level of security between the web browser and web server as OV/EV certificates.
- The use of the free service provided by Let’s Encrypt is recommended for obtaining DV certificates combined with the use of compatible ACME certificate management agents (e.g.: https://digital.canada.ca/).
- Note: This CA should be chosen by an organization who has the ability to manage their certificates, and does not need 3rd party support in the case of an outage. Let’s Encrypt is very much serve yourself.
- Organizations should conduct a thorough assessment of the ACME agent chosen prior to installation, and as updates are made available.
- Organization Validated (OV) certificates are not recommended for use, as they provide no brand or security benefits above DV certificates.
- If used, EV certificates should be obtained from SSC (contact firstname.lastname@example.org) in order to take advantage of the reduced pricing from an approved CA vendor (Entrust).
|For additional information, please see Recommendations for TLS Server Certificates for GC Public Facing Web Services or contact TBS-CIOB Cybersecurity (zzTBSCybers@tbs-sct.gc.ca)|
Enterprise Certificate Management
Recently the National Institute of Standards and Technology released Special Publication 1800-16 Securing Web Transactions: TLS Server Certificate Management for public comment. This draft practice guide provides additional information for enterprises that rely on Transport Layer Security (TLS) to secure both customer-facing and internal applications, so they can better manage TLS server certificates by:
- Defining operational and security policies; identifying roles and responsibilities
- Establishing comprehensive certificate inventories and ownership tracking
- Conducting continuous monitoring of certificate operational and security status
- Automating certificate management to minimize human error and maximize efficiency on a large scale
- Enabling rapid migration to new certificates and keys when cryptographic mechanisms are found to be weak, compromised or vulnerable
Automated Certificate Management Engine (ACME)
RFC 8555: Automatic Certificate Management Environment
Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation. For details, see the IETF document here: https://tools.ietf.org/html/rfc8555
From the Datatracker, published 2019-03-12: https://datatracker.ietf.org/doc/rfc8555/
It is recognized that wildcard certificates offer several advantages and they may be used where appropriate, however it should be recognized that wildcard certificates may introduce certain risks depending on how they are used.
- Sharing the same private key (certificate) among multiple web servers may introduce additional vulnerabilities that will need to be properly mitigated.
- Compromise through theft of the private key (certificate) would allow an attacker to establish rogue websites that will appear to belong to the domain protected by the wildcard certificate.
- Compromise of the private key renders all TLS sessions protected by that private key vulnerable; the use of a cipher suite supporting Perfect Forward Secrecy is recommended to avoid this issue.
GC Website owners must ensure appropriate risk mitigation measures are in place to minimize the risk of private key compromise.
- Use of FIPS 140-2 Level 2 or higher Hardware Security Modules is recommended where warranted by risk assessment or cost/benefit trade-off analysis.
- In the absence of HSMs, risk mitigation measures should include effective monitoring and auditing of the system so that private key compromise can be detected as early as possible followed immediately with revocation of the associated server certificate.
Per the Recommendations for TLS Server Certificates [PDF], “care must be exercised when using multi-domain and wildcard certificates to ensure collateral damage is minimized in the event of private key compromise. Copying the same private key to multiple web servers is strongly discouraged unless appropriate risk mitigation measures are in place such as using CSE approved Hardware Security Modules to protect the private key.”
Download the Recommendations for TLS Server Certificates.pdf:
HTTP Public Key Pinning (HPKP)
HPKP has been deprecated, as of end of 2017.
To defend against certificate misissuance, web developers should use Certificate Authority Authorization (CAA) and the
Expect-CT header, including its reporting function.
Expect-CT is safer than HPKP due to the flexibility it gives site operators to recover from any configuration errors, and due to the built-in support offered by a number of CAs.
Implementation of the Expect-CT header can be undertaken as follows, with a 1 year expiry:
http request Expect-CT: enforce, max-age=31536000, report-uri="https://example.com"
Note: caution should be taken in implementing the
Expect-CT header, as there is a risk of rendering your site unreachable if done wrong. In testing, it is recommended to deploy the header without the
enforce element, and a
max-age of 0 (zero). This arrangement will ensure that you don't block any connections with a bad certificate, however do send an error to the report-uri address (e.g.: email mailbox for simplicity's sake, or a script to handle the error and log/notify as required if desired). After testing for a period of time to provide assurance that everything still works as expected, you are able to enable the
enforce directive, and increase the
max-age (recommended to be 1 year - 31536000).
Prior to enforcing Expect-CT, be sure that your CA uses the CT logs (as they should, per certificate recommendations).
Set up for CAA is performed in the DNS record, explicitly naming which CA(s) are allowed to issue certificates for your website. SSL Mate has developed a very helpful tool to assist in the development of DNS entries for CAA, available here.