2020-07-17 18:37:48 +02:00
**Note :** depuis la version 2.5, YunoHost intègre la gestion automatisée de certificats Let's Encrypt. Vous pouvez donc facilement et gratuitement [installer un certificat Let's Encrypt ](/certificate ). Le document suivant décrit la méthodologie pour installer un certificat, payant, d'une autre autorité de certification (**Gandi**, **RapidSSL** , **StartSSL** , **Cacert** ).
2017-11-26 13:10:00 +01:00
2020-07-17 18:37:48 +02:00
Quelques changements ont eu lieu qui impactent les procédures indiquées ci-dessous :
2020-05-13 23:00:26 +02:00
2020-07-17 18:37:48 +02:00
* Le groupe metronome n'est plus utilisé directement mais ssl-cert.
* Un repertoire `/etc/yunohost/certs/DOMAIN.LTD-history/stamp` est utilisé pour conserver chaque configuration créée et un lien symbolique est créé dessus.
2020-05-13 23:00:26 +02:00
2017-11-26 13:10:00 +01:00
### Ajout d’ un certificat signé par une autorité (autre que Let's Encrypt)
2020-07-17 18:37:48 +02:00
Après création du certificat auprès de votre autorité d’ enregistrement, vous devez être en possession d’ une clé privée, le fichier *key* et d’ un certificat public, le fichier *crt* .
> Attention, le fichier *key* est très sensible, il est strictement personnel et doit être très bien sécurisé.
2017-11-26 13:10:00 +01:00
Ces deux fichiers doivent être copiés sur le serveur, s’ ils ne s’ y trouvent pas déjà.
2020-07-17 18:37:48 +02:00
2017-11-26 13:10:00 +01:00
```bash
scp CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt
scp CLE.key admin@DOMAIN.TLD:ssl.key
```
2020-07-17 18:37:48 +02:00
Depuis Windows, scp est exploitable avec Putty, en téléchargeant l’ outil [pscp ](http://the.earth.li/~sgtatham/putty/latest/x86/pscp.exe )
2017-11-26 13:10:00 +01:00
```bash
pscp -P 22 CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt
2017-11-26 13:30:25 +01:00
pscp -P 22 CLE.key admin@DOMAIN.TLD:ssl.key
```
2017-11-26 13:18:57 +01:00
2020-03-28 06:54:10 +01:00
Dès lors que les fichiers sont sur le serveur, le reste du travail se fera sur celui-ci. En [ssh ](/ssh ) ou en local.
2017-11-26 13:10:00 +01:00
Tout d’ abord, créez un dossier pour stocker les certificats obtenus.
```bash
sudo mkdir /etc/yunohost/certs/DOMAIN.TLD/ae_certs
2017-11-26 13:30:25 +01:00
sudo mv ssl.key ssl.crt /etc/yunohost/certs/DOMAIN.TLD/ae_certs/
```
2017-11-26 13:10:00 +01:00
Puis allez dans le dossier parent pour poursuivre.
```bash
2017-11-26 13:30:25 +01:00
cd /etc/yunohost/certs/DOMAIN.TLD/
```
2017-11-26 13:10:00 +01:00
2020-07-17 18:37:48 +02:00
Faites une sauvegarde des certificats d’ origine de YunoHost, par précaution.
2017-11-26 13:10:00 +01:00
```bash
sudo mkdir yunohost_self_signed
2017-11-26 13:30:25 +01:00
sudo mv *.pem * .cnf yunohost_self_signed/
```
2017-11-26 13:10:00 +01:00
En fonction de l’ autorité d’ enregistrement, des certificats intermédiaires et racines doivent être obtenus.
> **StartSSL**
> ```bash
> sudo wget http://www.startssl.com/certs/ca.pem -O ae_certs/ca.pem
2017-11-26 13:30:25 +01:00
> sudo wget http://www.startssl.com/certs/sub.class1.server.ca.pem -O ae_certs/intermediate_ca.pem
>```
2017-11-26 13:10:00 +01:00
> **Gandi**
> ```bash
2017-11-26 13:34:40 +01:00
> sudo wget https://www.gandi.net/static/CAs/GandiStandardSSLCA2.pem -O ae_certs/intermediate_ca.pem
>```
2017-11-26 13:10:00 +01:00
> **RapidSSL**
> ```bash
2017-11-26 13:34:40 +01:00
> sudo wget https://knowledge.rapidssl.com/library/VERISIGN/INTERNATIONAL_AFFILIATES/RapidSSL/AR1548/RapidSSLCABundle.txt -O ae_certs/intermediate_ca.pem
>```
2017-11-26 13:10:00 +01:00
> **Cacert**
> ```bash
> sudo wget http://www.cacert.org/certs/root.crt -O ae_certs/ca.pem
2017-11-26 13:34:40 +01:00
> sudo wget http://www.cacert.org/certs/class3.crt -O ae_certs/intermediate_ca.pem
>```
2017-11-26 13:10:00 +01:00
Les certificats intermédiaires et root doivent être réunis avec le certificat obtenu pour créer une chaîne de certificats unifiés.
```bash
2017-11-26 13:30:25 +01:00
cat ae_certs/ssl.crt ae_certs/intermediate_ca.pem ae_certs/ca.pem | sudo tee crt.pem
```
2017-11-26 13:10:00 +01:00
2020-07-17 18:37:48 +02:00
La clé privée doit être, elle, convertie au format `.pem` .
2017-11-26 13:10:00 +01:00
```bash
2017-11-26 13:30:25 +01:00
sudo openssl rsa -in ae_certs/ssl.key -out key.pem -outform PEM
```
2017-11-26 13:10:00 +01:00
Afin de s’ assurer de la syntaxe des certificats, vérifiez le contenu des fichiers.
```bash
2017-11-26 13:30:25 +01:00
cat crt.pem key.pem
```
2017-11-26 13:10:00 +01:00
Les certificats et la clé privée doivent ressembler à cela :
2018-01-10 09:51:54 +01:00
`-----BEGIN CERTIFICATE-----` < br />
`MIICVDCCAb0CAQEwDQYJKoZIhvcNAQEEBQAwdDELMAkGA1UEBhMCRlIxFTATBgNV` < br />
`BAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UEChMDTExC` < br />
`MREwDwYDVQQLEwhCVFMgSU5GTzEbMBkGA1UEAxMSc2VydmV1ci5idHNpbmZvLmZy` < br />
`MB4XDTA0MDIwODE2MjQyNloXDTA0MDMwOTE2MjQyNlowcTELMAkGA1UEBhMCRlIx` < br />
`FTATBgNVBAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UE` < br />
`ChMDTExCMREwDwYDVQQLEwhCVFMgSU5GTzEYMBYGA1UEAxMPcHJvZi5idHNpbmZv` < br />
`LmZyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSUagxPSv3LtgDV5sygt12` < br />
`kSbN/NWP0QUiPlksOkF2NkPfwW/mf55dD1hSndlOM/5kLbSBo5ieE3TgikF0Iktj` < br />
`BWm5xSqewM5QDYzXFt031DrPX63Fvo+tCKTQoVItdEuJPMahVsXnDyYHeUURRWLW` < br />
`wc0BzEgFZGGw7wiMF6wt5QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBALD640iwKPMf` < br />
`pqdYtfvmLnA7CiEuao60i/pzVJE2LIXXXbwYjNAM+7Lov+dFT+b5FcOUGqLymSG3` < br />
`kSK6OOauBHItgiGI7C87u4EJaHDvGIUxHxQQGsUM0SCIIVGK7Lwm+8e9I2X0G2GP` < br />
`9t/rrbdGzXXOCl3up99naL5XAzCIp6r5` < br />
2017-11-26 13:10:00 +01:00
`-----END CERTIFICATE-----`
Enfin, sécurisez les fichiers de votre certificat.
```bash
sudo chown root:metronome crt.pem key.pem
sudo chmod 640 crt.pem key.pem
sudo chown root:root -R ae_certs
2017-11-26 13:30:25 +01:00
sudo chmod 600 -R ae_certs
```
2017-11-26 13:10:00 +01:00
2020-07-17 18:37:48 +02:00
Maintenant les certificats (les deux fichiers avec l'extension `.pem` ) doivent être recopiés dans `/etc/yunohost/certs/DOMAIN.TLD` .
2019-05-12 16:41:38 +02:00
```bash
cp ae_certs/*.pem ./
```
2020-07-17 18:37:48 +02:00
Rechargez la configuration de NGINX pour prendre en compte le nouveau certificat.
2017-11-26 13:10:00 +01:00
```bash
2017-11-26 13:30:25 +01:00
sudo service nginx reload
```
2017-11-26 13:10:00 +01:00
Votre certificat est prêt à servir. Vous pouvez toutefois vous assurez de sa mise en place en testant le certificat à l’ aide du service de < a href = "https://www.geocerts.com/ssl_checker" target = "_blank" > geocerts< / a > .