3.6. Création d'une autorité de certification privée à l'aide de GnuTLS
Les autorités de certification (AC) privées sont utiles lorsque votre scénario exige la vérification d'entités au sein de votre réseau interne. Par exemple, utilisez une autorité de certification privée lorsque vous créez une passerelle VPN dont l'authentification est basée sur des certificats signés par une autorité de certification sous votre contrôle ou lorsque vous ne souhaitez pas payer une autorité de certification commerciale. Pour signer des certificats dans de tels cas d'utilisation, l'AC privée utilise un certificat auto-signé.
Conditions préalables
-
Vous disposez des privilèges ou autorisations
root
pour entrer dans les commandes administratives avecsudo
. Les commandes qui requièrent de tels privilèges sont marquées par#
. Vous avez déjà installé GnuTLS sur votre système. Si ce n'est pas le cas, vous pouvez utiliser cette commande :
$ dnf install gnutls-utils
Procédure
Générez une clé privée pour votre autorité de certification. Par exemple, la commande suivante crée une clé ECDSA (Elliptic Curve Digital Signature Algorithm) de 256 bits :
$ certtool --generate-privkey --sec-param High --key-type=ecdsa --outfile <ca.key>
La durée du processus de génération des clés dépend du matériel et de l'entropie de l'hôte, de l'algorithme sélectionné et de la longueur de la clé.
Créer un fichier modèle pour un certificat.
Créez un fichier avec votre éditeur de texte préféré, par exemple vi :
$ vi <ca.cfg>
Modifiez le fichier pour y inclure les détails nécessaires à la certification :
organization = "Example Inc." state = "Example" country = EX cn = "Example CA" serial = 007 expiration_days = 365 ca cert_signing_key crl_signing_key
Créez un certificat signé à l'aide de la clé privée générée à l'étape 1 :
Le fichier <ca.crt> généré est un certificat CA auto-signé que vous pouvez utiliser pour signer d'autres certificats pendant un an. Le fichier <ca.crt> est la clé publique (certificat). Le fichier chargé <ca.key> est la clé privée. Vous devez conserver ce fichier dans un endroit sûr.
$ certtool --generate-self-signed --load-privkey <ca.key> --template <ca.cfg> --outfile <ca.crt>
Définissez des autorisations sécurisées pour la clé privée de votre autorité de certification, par exemple :
# chown <root>:<root> <ca.key> # chmod 600 <ca.key>
Prochaines étapes
Pour utiliser un certificat d'autorité de certification auto-signé comme ancre de confiance sur les systèmes clients, copiez le certificat d'autorité de certification sur le client et ajoutez-le à la liste de confiance de l'ensemble du système des clients en tant que
root
:# trust anchor <ca.crt>
Voir Chapitre 4, Utilisation de certificats système partagés pour plus d'informations.
Vérification
Affichez les informations de base sur votre AC auto-signée :
$ certtool --certificate-info --infile <ca.crt> Certificate: … X509v3 extensions: … X509v3 Basic Constraints: critical CA:TRUE X509v3 Key Usage: critical Certificate Sign, CRL Sign
Créez une demande de signature de certificat (CSR) et utilisez votre autorité de certification pour signer la demande. L'autorité de certification doit réussir à créer un certificat sur la base de la RSC, par exemple :
Générez une clé privée pour votre autorité de certification :
$ certtool --generate-privkey --outfile <example-server.key>
Créez un fichier avec votre éditeur de texte préféré, par exemple vi :
$ vi <example-server.cfg>
Modifiez le fichier pour y inclure les détails nécessaires à la certification :
signing_key encryption_key key_agreement tls_www_server country = "US" organization = "Example Organization" cn = "server.example.com" dns_name = "example.com" dns_name = "server.example.com" ip_address = "192.168.0.1" ip_address = "::1" ip_address = "127.0.0.1"
Générer une demande avec la clé privée créée précédemment
$ certtool --generate-request --load-privkey <example-server.key> --template <example-server.cfg> --outfile <example-server.crq>
Générer le certificat et le signer avec la clé privée de l'autorité de certification :
$ certtool --generate-certificate --load-request <example-server.crq> --load-privkey <example-server.key> --load-ca-certificate <ca.crt> --load-ca-privkey <ca.key> --outfile <example-server.crt>
Ressources supplémentaires
-
certtool(1)
ettrust(1)
pages de manuel
-