GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment créer une autorité de certification (CA) sur Ubuntu 20.04

L'autorité de certification (AC) est une entité chargée d'émettre des certificats numériques pour sécuriser la communication. Il agit en tant que tiers de confiance pour le propriétaire du certificat et la partie qui s'appuie sur le certificat.

L'entité de l'autorité de certification peut être publique ou privée. Les autorités de certification publiques sont couramment utilisées pour vérifier l'identité des sites Web et les autorités de certification privées sont utilisées pour générer des certificats pour un VPN client à site, des utilisateurs, des serveurs internes ou des programmes et services individuels au sein de votre infrastructure, tels que des serveurs Web locaux.

Dans ce didacticiel, nous apprenons à créer une autorité de certification privée (CA) sur Ubuntu 20.04 . Ici, nous utilisons easy-rsa Utilitaire CLI pour créer et gérer le serveur CA.

Pré-requis

  • Un nœud avec Ubuntu 20.04 pour héberger CA Server
  • Un utilisateur avec le privilège sudo

Étape 1 :Mettez à jour votre système

Tout d'abord, mettez à jour votre système Ubuntu, exécutez la commande suivante :

apt update

Vous pouvez ignorer cette étape si vous installez easy-rsa à partir du dépôt officiel.

Étape 2 :Installez Easy-RSA sur le serveur CA

Easy-RSA est un outil en ligne de commande qui facilite considérablement la mise en place d'une autorité de certification (AC) et la gestion des certificats. Il génère une clé privée et un certificat racine public.

Easy-RSA est disponible dans le référentiel apt par défaut. Pour installer la dernière version à partir du référentiel GitHub officiel easy-rsa.

Téléchargez l'outil de gestion Easy-RSA PKI depuis Github :

wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz

Voici la version téléchargée 3.0.8 . Déplaçons maintenant le fichier dans /opt dossier

sudo mv EasyRSA-3.0.8.tgz /opt

Changez maintenant de répertoire en /opt :

cd /opt

Exécutez la commande suivante pour décompresser le fichier .tgz :

sudo tar xvf EasyRSA-3.0.8.tgz

Renommez le répertoire à l'aide de la commande mv :

sudo mv EasyRSA-3.0.8 easy-rsa

Faites maintenant de l'utilisateur non root le propriétaire du répertoire :

sudo chown -R franck:franck easy-rsa/ 

Restreindre l'accès au répertoire PKI, uniquement pour le propriétaire :

sudo chmod 700 easy-rsa

Étape 3 :Configurer le serveur CA

Ici, nous allons configurer le répertoire de l'infrastructure de clé publique et créer un certificat public/privé pour le serveur CA.

Changez maintenant le répertoire en easy-rsa qui a été créé précédemment :

cd easy-rsa

Nous allons créer un vars fichier qui sera utilisé pour stocker les informations de l'organisation

$ cp vars.example vars

Ajoutez maintenant les informations sur l'organisation à la fin du fichier

$ vim vars
set_var EASYRSA_REQ_COUNTRY    "CM"
set_var EASYRSA_REQ_PROVINCE   "Centre"
set_var EASYRSA_REQ_CITY       "Yaounde"
set_var EASYRSA_REQ_ORG        "LINUXSHARE"
set_var EASYRSA_REQ_EMAIL      "[email protected]"
set_var EASYRSA_REQ_OU         "Com"
set_var EASYRSA_ALGO           "ec"
set_var EASYRSA_DIGEST         "sha512"

Nous allons maintenant initialiser le répertoire Public Key Infrastructure :

$ ./easyrsa init-pki
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
 init-pki complete; you may now create a CA or requests.
 Your newly created PKI dir is: /opt/easy-rsa/pki

Pour générer le public racine et paire de clés privées pour le serveur CA, tapez :

$ ./easyrsa build-ca
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
 Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
 Enter New CA Key Passphrase: 
 Re-Enter New CA Key Passphrase: 
 read EC key
 writing EC key
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
 CA creation complete and you may now import and sign cert requests.
 Your new CA certificate file for publishing is at:
 /opt/easy-rsa/pki/ca.crt

Vous serez invité à saisir une phrase de passe pour la paire de clés chaque fois que vous aurez besoin de signer ou de révoquer un certificat. Il vous sera également demandé le nom commun (CN) de votre autorité de certification, vous pouvez utiliser celui par défaut si vous le souhaitez.

L'opération créera deux fichiers principaux :

  • Le certificat public fichier ca.crt fichier que les serveurs et les clients utiliseront pour vérifier qu'ils sont sur le même périmètre de confiance
  • La clé privée fichier ca.key dans le pki/private répertoire utilisé par l'AC pour signer les certificats des serveurs et des clients

Étape 4 :Importer le certificat public de l'autorité de certification

Maintenant que nous avons généré le certificat public, nous devons l'importer sur un autre serveur.

Connectez-vous au serveur sur lequel vous souhaitez importer le certificat, puis effectuez une copie à distance de ca.crt fichier du serveur CA.

scp [email protected]:/opt/easy-rsa/pki/ca.crt
The authenticity of host 'X.Y.Z.T (X.Y.Z.T)' can't be established.
 ECDSA key fingerprint is SHA256:ffUgP5/d0Z3miOKqxBVoF9JbFvIZFs/gxr7ESBZ0kmQ.
 Are you sure you want to continue connecting (yes/no)? yes
 Warning: Permanently added '139.177.204.145' (ECDSA) to the list of known hosts.
 [email protected]'s password: 
 ca.crt                                                                                                           100%  749     2.4KB/s   00:00

Déplacez le fichier de certificat vers /usr/local/share/ca-certificates/ répertoire :

sudo mv ca.crt /usr/local/share/ca-certificates/

Importez maintenant le certificat du serveur CA à l'aide de la commande suivante :

sudo update-ca-certificates
Updating certificates in /etc/ssl/certs…
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d…
done.

Avec cela, votre serveur fera désormais confiance aux certificats qui ont été signés par votre serveur CA.

Étape 5 :Créer la demande de certificat de serveur et la clé privée

Nous pouvons créer des demandes de signature de certificat (CSR) sur un serveur différent pour que notre autorité de certification signe ces demandes.

Nous utiliserons OpenSSL pour créer le fichier CSR. Si OpenSSL n'est pas installé, utilisez la commande suivante pour l'installer :

sudo apt install openssl

Créez un répertoire nommé server1-csr pour conserver le CSR et la clé privée

mkdir server1-csr

Passez au répertoire server1-csr

cd server1-csr

Générez maintenant la clé privée en utilisant OpenSSL :

openssl genrsa -out server1.key
Generating RSA private key, 2048 bit long modulus (2 primes)
..........+++++
..................................................+++++
e is 65537 (0x010001)

Vous pouvez générer le CSR correspondant à l'aide de la clé générée :

$ openssl req -new -key server1.key -out server1.req
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CM
State or Province Name (full name) [Some-State]:CE
Locality Name (eg, city) []:Yaounde
Organization Name (eg, company) [Internet Widgits Pty Ltd]:LinuxShare
Organizational Unit Name (eg, section) []:Tech-B
Common Name (e.g. server FQDN or YOUR name) []:server1
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: 
An optional company name []:

Vous devez maintenant copier le fichier CSR sur le serveur CA :

$ scp server1.req scp [email protected]:/tmp/server1.req

Étape 6 :Signez le CSR du serveur sur le serveur CA

Le CSR généré doit être signé par le serveur CA. Pour cela, déplacez-vous d'abord dans le répertoire easy-rsa pour importer la demande de signature de certificat du serveur.

./easyrsa import-req /opt/sign-cert/server1.req server1
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
The request has been successfully imported with a short name of: server1
You may now use this name to perform signing operations on this request.

Signez maintenant le CSR à l'aide de la commande suivante :

./easyrsa sign-req server server1
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
 Using SSL: openssl OpenSSL 1.1.1f  31 Mar 2020
 You are about to sign the following certificate.
 Please check over the details shown below for accuracy. Note that this request
 has not been cryptographically verified. Please be sure it came from a trusted
 source or that you have verified the request checksum with the sender.
 Request subject, to be signed as a server certificate for 825 days:
 subject=
     countryName               = CM
     stateOrProvinceName       = CE
     localityName              = Yaounde
     organizationName          = LinuxShare
     organizationalUnitName    = Tech-B
     commonName                = server1
 Type the word 'yes' to continue, or any other input to abort.
   Confirm request details: yes
 Using configuration from /opt/easy-rsa/pki/easy-rsa-161486.BI2HwH/tmp.lIqZoF
 Enter pass phrase for /opt/easy-rsa/pki/private/ca.key:
 Check that the request matches the signature
 Signature ok
 The Subject's Distinguished Name is as follows
 countryName           :PRINTABLE:'CM'
 stateOrProvinceName   :ASN.1 12:'CE'
 localityName          :ASN.1 12:'Yaounde'
 organizationName      :ASN.1 12:'LinuxShare'
 organizationalUnitName:ASN.1 12:'Tech-B'
 commonName            :ASN.1 12:'server1'
 Certificate is to be certified until Jan  5 16:57:26 2024 GMT (825 days)
 Write out database with 1 new entries
 Data Base Updated
 Certificate created at: /opt/easy-rsa/pki/issued/server1.crt

À partir de la sortie, vous pouvez voir le certificat émis sous le répertoire /opt/easy-rsa/pki/issued/. Vous pouvez également vérifier le certificat en le répertoriant :

$ ls -l /opt/easy-rsa/pki/issued

Sortie :

total 4
 -rw------- 1 franck franck 3996 Oct  2 16:57 server1.crt

Avec toutes ces étapes, vous êtes capable de gérer vous-même vos certificats pour vos serveurs internes. Avec votre serveur CA, vous pouvez signer les certificats pour vos serveurs web ou pour un tunnel VPN par exemple avec OpenVPN.

Remarque :Pour des raisons de sécurité, il est recommandé de ne pas exécuter d'autres services sur un serveur CA. Il ne doit être utilisé que pour importer, signer et révoquer des demandes de certificat en tant que serveur autonome.

Conclusion

Dans ce didacticiel, nous avons appris à créer une autorité de certification privée (CA) sur Ubuntu 20.04. Merci d'avoir lu, veuillez fournir vos commentaires et suggestions dans la section des commentaires.


Ubuntu
  1. Comment créer Ubuntu Live USB sous Windows

  2. Comment créer un serveur de référentiel Ubuntu

  3. Comment configurer et configurer une autorité de certification sur Ubuntu 22.04

  4. Comment installer EPrints sur Ubuntu 20.04

  5. Comment créer un certificat SSL auto-signé sur Ubuntu 18.04

Comment créer des raccourcis de bureau sur Ubuntu

Comment créer un utilisateur Sudo dans Ubuntu Linux

Comment créer Fedora Live USB dans Ubuntu

Comment créer un diaporama de photos dans Ubuntu

Comment créer une clé USB bootable Ubuntu

Comment créer un serveur Minecraft sur Ubuntu 20.04