Mise à jour de la documentation pour EvoACME
This commit is contained in:
parent
b2611ab488
commit
a82af93eae
117
HowtoEvoACME.md
117
HowtoEvoACME.md
|
@ -1,30 +1,24 @@
|
||||||
|
---
|
||||||
|
categories: web security
|
||||||
|
title: Howto EvoACME
|
||||||
|
...
|
||||||
|
|
||||||
|
* Code source : <https://gitea.evolix.org/evolix/evoacme>
|
||||||
|
* Rôle Ansible : <https://gitea.evolix.org/evolix/ansible-roles/src/branch/stable/evoacme/>
|
||||||
|
|
||||||
# Howto EvoACME
|
# Howto EvoACME
|
||||||
|
|
||||||
|
EvoACME est un ensemble de scripts qui facilite la création de certificats Let's Encrypt dans le contexte d'un serveur web Evolix (Apache + Evoadmin-web).
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
Il existe un rôle Ansible qui facilite l'installation. Il est aussi possible de l'installer manuellement.
|
||||||
|
|
||||||
### certbot
|
### certbot
|
||||||
|
|
||||||
EvoAcme utilise Certbot, le client Let's Encrypt créé par l'EFF.
|
EvoAcme utilise Certbot, le client Let's Encrypt créé par l'EFF.
|
||||||
|
|
||||||
Pour Debian Stretch, il suffit d'installer le paquet.
|
Consultez notre [documentation de Let's Encrypt](/HowtoLetsEncrypt) pour l'installation de certbot.
|
||||||
|
|
||||||
~~~
|
|
||||||
# apt install certbot
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Pour Debian Jessie, il faut l'installer à partir des backports.
|
|
||||||
|
|
||||||
~~~
|
|
||||||
# cat /etc/apt/sources.list.d/backports.list
|
|
||||||
deb http://mirror.evolix.org/debian jessie-backports main
|
|
||||||
|
|
||||||
# cat /etc/apt/preferences.d/z-backports-certbot
|
|
||||||
Package: certbot python-certbot python-acme python-cryptography python-openssl python-setuptools python-ndg-httpsclient python-pyasn1 python-pkg-resources
|
|
||||||
Pin: release a=jessie-backports
|
|
||||||
Pin-Priority: 999
|
|
||||||
|
|
||||||
# apt update && apt install certbot
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Certbot installe son propre script dans la crontab, mais nous allons le remplacer
|
Certbot installe son propre script dans la crontab, mais nous allons le remplacer
|
||||||
|
|
||||||
|
@ -34,19 +28,9 @@ Certbot installe son propre script dans la crontab, mais nous allons le remplace
|
||||||
|
|
||||||
### evoacme
|
### evoacme
|
||||||
|
|
||||||
Nous créons un utilisateur `acme` à qui nous attribuons les dossiers :
|
Configuration pour evoacme (`/etc/default/evoacme`) :
|
||||||
|
|
||||||
~~~
|
~~~{.bash}
|
||||||
# adduser --home /var/lib/letsencrypt --quiet --system --no-create-home --group acme
|
|
||||||
# install -m 755 -o acme -g acme -d /etc/letsencrypt /var/lib/letsencrypt
|
|
||||||
# install -m 750 -o acme -g acme -d /var/log/letsencrypt /var/log/evoacme
|
|
||||||
# echo "acme: root" >> /etc/aliases && newaliases
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Configuration pour evoacme :
|
|
||||||
|
|
||||||
~~~
|
|
||||||
# cat /etc/default/evoacme
|
|
||||||
SSL_KEY_DIR=/etc/ssl/private
|
SSL_KEY_DIR=/etc/ssl/private
|
||||||
ACME_DIR=/var/lib/letsencrypt
|
ACME_DIR=/var/lib/letsencrypt
|
||||||
CSR_DIR=/etc/ssl/requests
|
CSR_DIR=/etc/ssl/requests
|
||||||
|
@ -56,10 +40,9 @@ SSL_MINDAY=30
|
||||||
EMAIL=security@example.com
|
EMAIL=security@example.com
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Tâche quotidienne :
|
Tâche quotidienne (`/etc/cron.daily/evoacme`) :
|
||||||
|
|
||||||
~~~{.bash}
|
~~~{.bash}
|
||||||
# cat /etc/cron.daily/evoacme
|
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Run evoacme script on every configured cert
|
# Run evoacme script on every configured cert
|
||||||
|
@ -73,13 +56,26 @@ CRT_DIR="${CRT_DIR:-'/etc/letsencrypt'}"
|
||||||
|
|
||||||
export QUIET=1
|
export QUIET=1
|
||||||
|
|
||||||
find "${CRT_DIR}" -maxdepth 1 -mindepth 1 -type d ! -path "*accounts" ! -path "*hooks" -printf "%f\n" | xargs -n1 evoacme
|
find "${CRT_DIR}" \
|
||||||
|
-maxdepth 1 \
|
||||||
|
-mindepth 1 \
|
||||||
|
-type d \
|
||||||
|
! -path "*accounts" \
|
||||||
|
! -path "*archive" \
|
||||||
|
! -path "*csr" \
|
||||||
|
! -path "*hooks" \
|
||||||
|
! -path "*keys" \
|
||||||
|
! -path "*live" \
|
||||||
|
! -path "*renewal" \
|
||||||
|
-printf "%f\n" \
|
||||||
|
| xargs --max-args=1 --no-run-if-empty evoacme
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
### Configuration OpenSSL
|
### OpenSSL
|
||||||
|
|
||||||
~~~
|
On crée une configuration personnalisée pour OpenSSL dans `/etc/letsencrypt/openssl.cnf` :
|
||||||
# cat /etc/letsencrypt/openssl.cnf
|
|
||||||
|
~~~{.ini}
|
||||||
[req]
|
[req]
|
||||||
default_bits = 2048
|
default_bits = 2048
|
||||||
encrypt_key = yes
|
encrypt_key = yes
|
||||||
|
@ -94,52 +90,9 @@ OU = Security
|
||||||
emailAddress = security@example.com
|
emailAddress = security@example.com
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
### Configuration web pour le challenge http
|
### Intégration au serveur web
|
||||||
|
|
||||||
Il faut ajouter un alias pour les challenge http du protocole ACME :
|
Cette phase là est à gérer avec l'installation de certbot.
|
||||||
|
|
||||||
Pour Apache :
|
|
||||||
|
|
||||||
~~~
|
|
||||||
# cat /etc/apache2/conf-available/letsencrypt.conf
|
|
||||||
Alias /.well-known/acme-challenge /var/lib/letsencrypt/.well-known/acme-challenge
|
|
||||||
<Directory "/var/lib/letsencrypt/.well-known/acme-challenge">
|
|
||||||
Options -Indexes
|
|
||||||
Allow from all
|
|
||||||
Require all granted
|
|
||||||
</Directory>
|
|
||||||
|
|
||||||
# a2enconf letsencrypt
|
|
||||||
# systemctl reload apache2
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Pour Nginx :
|
|
||||||
|
|
||||||
~~~
|
|
||||||
# cat /etc/nginx/snippets/letsencrypt.conf
|
|
||||||
location ~ /.well-known/acme-challenge {
|
|
||||||
alias /var/lib/letsencrypt/;
|
|
||||||
try_files $uri =404;
|
|
||||||
allow all;
|
|
||||||
}
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Inclure ensuite ce fichier dans le VHost par défaut :
|
|
||||||
|
|
||||||
~~~
|
|
||||||
server {
|
|
||||||
[…]
|
|
||||||
include /etc/nginx/snippets/letsencrypt.conf;
|
|
||||||
[…]
|
|
||||||
}
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Vérifier et recharger la configuration de Nginx :
|
|
||||||
|
|
||||||
~~~
|
|
||||||
# nginx -t
|
|
||||||
# systemctl reload nginx
|
|
||||||
~~~
|
|
||||||
|
|
||||||
## Scripts
|
## Scripts
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue