ocket8888 commented on a change in pull request #3534: TP Delivery Service Generate SSL update, new letsencrypt generate and… URL: https://github.com/apache/trafficcontrol/pull/3534#discussion_r334591413
########## File path: docs/source/admin/traffic_router.rst ########## @@ -681,8 +681,67 @@ The ordering of certificates within the certificate bundle matters. It must be: To see the ordering of certificates you may have to manually split up your certificate chain and use :manpage:`openssl(1ssl)` on each individual certificate -Suggested Way of Setting up an HTTPS Delivery Service ------------------------------------------------------ +Let's Encrypt +------------- +Let’s Encrypt is a free, automated :abbr:`CA (Certificate Authority)` using :abbr:`ACME (Automated Certificate Management Environment)` protocol. Let's Encrypt performs a domain validation before issuing or renewing a certificate. There are several options for domain validation but for this application the DNS challenge is used in order to receive wildcard certificates. Let's Encrypt sends a token to be used as a TXT record at `_acme-challenge.domain.example.com` and after verifying that the token is accessible there, will return the newly generated and signed certificate and key. The basic workflow implemented is: + +#. ``POST`` to Let's Encrypt and receive the DNS challenge token. +#. Traffic Ops stores the DNS challenge in the Traffic Ops database using the fqdn of the certificate request as the key. +#. Traffic Router has a watcher set up to watch for changes in the Traffic Ops database table. +#. When a new record appears, Traffic Router reads it and puts the token from Let's Encrypt as a TXT record at `_acme-challenge.domain.example.com` for the specified :term:`Delivery Service`. +#. Let's Encrypt verifies that the correct record is accessible to verify ownership of the domain. +#. Let's Encrypt returns the signed certificate and key to Traffic Ops. +#. Traffic Ops stores the certificate and key in Riak and removes the DNS challenge record from the Traffic Ops database. +#. The Traffic Router watcher removes the TXT record when the Traffic Ops database table has the record removed. + +Let's Encrypt can be set up through :file:`/opt/traffic_ops/app/conf/cdn.conf` by updating the following fields: + +.. table:: Fields to update for Let's Encrypt under `lets_encrypt` + + +------------------------------+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Type | Description | + +==============================+=========+============================================================================================================================================================================================================================================================================+ + | user_email | string | Optional. Email to create account with Let's Encrypt or to receive expiration updates | + +------------------------------+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | send_expiration_email | boolean | Toggle for option to send email summarizing certificate expiration status | + +------------------------------+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | convert_self_signed | boolean | Toggle for option to convert self signed certificates to Let's Encrypt certificates as they expire. This only works for self signed certificates generated after this code has been implemented or that have been labeled as Self Signed in the Certificate Source field. | + +------------------------------+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | renew_days_before_expiration | int | Number of days before expiration date to renew certificates | + +------------------------------+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | environment | string | Let's Encrypt environment to use. Options are 'staging' or 'production'. Defaults to 'production' | + +------------------------------+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Review comment: This table's getting pretty long - per the [Documentation Guidelines](https://traffic-control-cdn.readthedocs.io/en/latest/development/documentation_guidelines.html) please keep tables to a maximum width of 211 characters (not including indentation at the start of the line - if you use 4-character-width tabstops then your maximum line length should be 215) ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services