# La gestion d'un certificat
## La balise certificate
La gestion des certificats se fait dans un conteneur de [service](README.md).
La déclaration du certificat permet d'associer un certificat à un service. Attention, Rougail ne permet que de déclarer ces certificats. Il n'y a pas de gestion du certification dans la bibliothèque.
Pour déclarer un certificat :
```xml
/etc/pki/tls/certs/squid.crt
```
En YAML :
```yml
services:
- service:
- name: squid
certificate:
- private: /etc/pki/tls/private/squid.key
authority: /etc/pki/ca-trust/source/anchors/ca_squid.crt
text: /etc/pki/tls/certs/squid.crt
```
Les trois informations a donner sont donc :
- le nom du certificat
- le nom de la clef privée
- le nom de certificat de l'autorité de certification
## Les noms de fichiers dynamique
Il est possible également de définir le nom des fichiers dans des variables :
```xml
certificate
/etc/pki/tls/certs/squid.crt
/etc/pki/tls/private/squid.key
/etc/pki/ca-trust/source/anchors/ca_squid.crt
```
En YAML :
```yml
services:
- service:
- name: squid
certificate:
- private: private
private_type: variable
authority: authority
authority_type: variable
certificate_type: variable
text: certificate
variables:
- variable:
- name: certificate
type: filename
value:
- text: /etc/pki/tls/certs/squid.crt
- name: private
type: filename
value:
- text: /etc/pki/tls/private/squid.key
- name: authority
type: filename
value:
- text: /etc/pki/ca-trust/source/anchors/ca_squid.crt
```
Attention, les variables doivent être de type "filename".
## Le propriétaire de la clef privée
Le certificat et le certificat de l'autorité de certification n'ont pas besoin d'être privés.
Par contre, seul le service qui doit avoir accès à la clef privée.
Par défaut seul utilisateur "root" et groupe "root" peuvent y accéder.
Il est possible de définir l'utilisateur ou le groupe de la clef privée générée :
```xml
/etc/pki/tls/certs/squid.crt
```
En YAML :
```yml
services:
- service:
- name: squid
certificate:
- private: /etc/pki/tls/private/squid.key
authority: /etc/pki/ca-trust/source/anchors/ca_squid.crt
owner: squid
group: squid
text: /etc/pki/tls/certs/squid.crt
```
L'utilisateur et le groupe peuvent être défini dans une variable :
```xml
/etc/pki/tls/certs/squid.crt
squid
squid
```
En YAML :
```yml
services:
- service:
- name: squid
certificate:
- private: /etc/pki/tls/private/squid.key
authority: /etc/pki/ca-trust/source/anchors/ca_squid.crt
owner: owner
owner_type: variable
group: group
group_type: variable
text: /etc/pki/tls/certs/squid.crt
variables:
- variable:
- name: owner
type: unix_user
value:
- text: squid
- name: group
type: unix_user
value:
- text: squid
```