Automatically get/renew free and trusted certificates from Let's Encrypt (letsencrypt.org).
node['letsencrypt']['contact']- Contact information, default empty.node['letsencrypt']['endpoint']- ACME server endpoint, default 'https://acme-staging.api.letsencrypt.org'. Set tohttps://acme-v01.api.letsencrypt.orgfor real certificates.node['letsencrypt']['renew']- Days before the certificate expires at which the certificate will be renewed, default 30.
Installs the required acme-client rubygem.
Use the letsencrypt_certificate provider to request a certificate. The webserver for the domain for which you are requesting a certificate must be running on the local server. Currently only the http validation method is supported. Provide the path to your wwwroot for the specified domain.
letsencrypt_certificate 'test.example.com' do
crt '/etc/ssl/test.example.com.crt'
key '/etc/ssl/test.example.com.key'
method 'http'
wwwroot '/var/www'
endIn case your webserver needs an already existing certificate when installing a new server you will have a bootstrap problem. Webserver cannot start without certificate, but the certificate cannot be requested without the running webserver. To overcome this a self-signed certificate can be generated with the letsencrypt_selfsigned provider.
letsencrypt_selfsigned 'test.example.com' do
crt '/etc/ssl/test.example.com.crt'
key '/etc/ssl/test.example.com.key'
endA working example can be found in the included acme_client test cookbook.
| Property | Type | Description | Default |
|---|---|---|---|
| cn | String | The common name for the certificate | Name of the resource block |
| crt | String | File path to place the certificate | nil |
| key | String | File path to place the private key | nil |
| chain | String | File path to place the certificate chain | nil |
| fullchain | String | File path to place the certificate including the chain | nil |
| owner | String | Owner of the created files | root |
| group | String | Group of the created files | root |
| method | String | Validation method | http |
| wwwroot | String | Path to the wwwroot of the domain | /var/www |
| Property | Type | Description | Default |
|---|---|---|---|
| cn | String | The common name for the certificate | Name of the resource block |
| crt | String | File path to place the certificate | nil |
| key | String | File path to place the private key | nil |
| owner | String | Owner of the created files | root |
| group | String | Group of the created files | root |
The kitchen includes a boulder server to run the integration tests with, so testing can run locally without interaction with the online API's.
- Fork the repository on Github
- Create a named feature branch (like
add_component_x) - Write your change
- Write tests for your change (if applicable)
- Run the tests, ensuring they all pass
- Submit a Pull Request using Github
Authors: Thijs Houtenbos thoutenbos@schubergphilis.com