rougail/doc/service/certificate.md

4.2 KiB

La gestion d'un certificat

La balise certificate

La gestion des certificats se fait dans un conteneur de service.

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 :

<services>
  <service name="squid">
    <certificate private="/etc/pki/tls/private/squid.key" authority="/etc/pki/ca-trust/source/anchors/ca_squid.crt">/etc/pki/tls/certs/squid.crt</certificate>
  </service>
</services>

En YAML :

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 :

<services>
  <service name="squid">
    <certificate private="private" private_type="variable" authority="authority" authority_type="variable" certificate_type="variable">certificate</certificate>
  </service>
</services>
<variables>
  <variable name="certificate" type="filename">
    <value>/etc/pki/tls/certs/squid.crt</value>
  </variable>
  <variable name="private" type="filename">
    <value>/etc/pki/tls/private/squid.key</value>
  </variable>
  <variable name="authority" type="filename">
    <value>/etc/pki/ca-trust/source/anchors/ca_squid.crt</value>
  </variable>
</variables>

En YAML :

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 :

<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">/etc/pki/tls/certs/squid.crt</certificate>
  </service>
</services>

En YAML :

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 :

<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">/etc/pki/tls/certs/squid.crt</certificate>
  </service>
  <variables>
    <variable name="owner" type="unix_user">
      <value>squid</value>
    </variable>
    <variable name="group" type="unix_user">
      <value>squid</value>
    </variable>
</services>

En YAML :

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