Présentation
Présentation d'Easy-RSA
Easy-RSA est un utilitaire permettant de gérer une PKI CA (Certificate Authority) en plus de X.509 PKI, ou Public Key Infrastructure. Une PKI est basée sur la notion de faire confiance à une autorité particulière pour authentifier un pair distant ; pour plus d'informations sur le fonctionnement de PKI, consultez l'Introduction à PKI document.
Le code écrit dans un shell POSIX indépendant de la plate-forme, permettant une utilisation sur une large gamme de systèmes hôtes. La version officielle de Windows est également livrée avec les programmes nécessaires pour utiliser Easy-RSA. Le code shell tente de limiter le nombre de programmes externes dont il dépend. Les tâches liées à la cryptographie utilisent openssl comme backend fonctionnel.
Points forts des fonctionnalités
Voici une liste non exhaustive des fonctionnalités Easy-RSA les plus notables :
- Easy-RSA est capable de gérer plusieurs PKI, chacune avec sa propre configuration indépendante, son répertoire de stockage et sa gestion des extensions X.509.
- Plusieurs options de formatage de nom de sujet (champ X.509 DN) prises en charge. Pour les VPN, cela signifie qu'une configuration propre de nom commun uniquement peut être utilisée.
- Un backend unique est utilisé sur toutes les plates-formes prises en charge, garantissant qu'aucune plate-forme n'est "exclue" des fonctionnalités riches. Les systèmes similaires à Unix (BSD, Linux, etc.) et Windows sont tous pris en charge.
- La prise en charge X.509 d'Easy-RSA inclut les attributs CRL, CDP, keyUsage/eKu et des fonctionnalités supplémentaires. L'assistance incluse peut_être modifiée ou étendue en tant que fonctionnalité avancée.
- Modes de fonctionnement interactifs et automatisés (par lots)
- Configuration flexible :les fonctionnalités peuvent être activées via des options de ligne de commande, des variables d'environnement, un fichier de configuration ou une combinaison de ceux-ci.
- Les paramètres par défaut intégrés permettent d'utiliser Easy-RSA sans avoir à modifier au préalable un fichier de configuration.
EasyRSA est donc un utilitaire CLI gratuit et open source pour créer une autorité de certification racine , et demander et signer des certificats, y compris des autorités de certification intermédiaires et des listes de révocation de certificats (CRL).
Mettre à jour les packages dans CentOS / RHEL
Mettez à jour les packages logiciels dans votre distribution Linux avant d'y installer un nouveau logiciel.
Par conséquent, exécutez dnf commande pour mettre à jour les packages logiciels dans votre CentOS / Red Hat Enterprise Linux.
# dnf update -y
Vérifiez la version du noyau utilisée dans ce guide d'installation.
[root@rhel-pc ~]# uname -r
4.18.0-305.12.1.el8_4.x86_64
[root@rhel-pc ~]#
Vérifiez également la version de la distribution Linux .
[root@rhel-pc ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.4 (Ootpa)
[root@rhel-pc ~]#
Installer EasyRSA sur CentOS / RHEL
Téléchargez la dernière version de EasyRSA avec la commande wget.
[root@rhel-pc mnt]# cd /mnt
[root@rhel-pc mnt]# wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
--2021-08-15 23:10:26-- https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Resolving github.com (github.com)... 140.82.121.3
Connecting to github.com (github.com)|140.82.121.3|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-releases.githubusercontent.com/4519663/2e0dee80-f7f3-11ea-9ba4-dc973db12175?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210815%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210815T210829Z&X-Amz-Expires=300&X-Amz-Signature=5199380d851889a82d52ae4950917b20c7717e387f0c6b62054969f554de8e04&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=4519663&response-content-disposition=attachment%3B%20filename%3DEasyRSA-3.0.8.tgz&response-content-type=application%2Foctet-stream [following]
--2021-08-15 23:10:28-- https://github-releases.githubusercontent.com/4519663/2e0dee80-f7f3-11ea-9ba4-dc973db12175?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210815%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210815T210829Z&X-Amz-Expires=300&X-Amz-Signature=5199380d851889a82d52ae4950917b20c7717e387f0c6b62054969f554de8e04&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=4519663&response-content-disposition=attachment%3B%20filename%3DEasyRSA-3.0.8.tgz&response-content-type=application%2Foctet-stream
Resolving github-releases.githubusercontent.com (github-releases.githubusercontent.com)... 185.199.111.154, 185.199.108.154, 185.199.109.154, ...
Connecting to github-releases.githubusercontent.com (github-releases.githubusercontent.com)|185.199.111.154|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 48907 (48K) [application/octet-stream]
Saving to: ‘EasyRSA-3.0.8.tgz’
EasyRSA-3.0.8.tgz 100%[=======================================================================>] 47.76K --.-KB/s in 0.1s
2021-08-15 23:10:29 (414 KB/s) - ‘EasyRSA-3.0.8.tgz’ saved [48907/48907]
[root@rhel-pc mnt]#
Extraire le fichier tar téléchargé en exécutant tar commande.
[root@rhel-pc mnt]# tar xfv EasyRSA-3.0.8.tgz
EasyRSA-3.0.8/
EasyRSA-3.0.8/easyrsa
EasyRSA-3.0.8/openssl-easyrsa.cnf
EasyRSA-3.0.8/vars.example
EasyRSA-3.0.8/x509-types/
EasyRSA-3.0.8/gpl-2.0.txt
EasyRSA-3.0.8/mktemp.txt
EasyRSA-3.0.8/COPYING.md
EasyRSA-3.0.8/ChangeLog
EasyRSA-3.0.8/README.md
EasyRSA-3.0.8/README.quickstart.md
EasyRSA-3.0.8/doc/
EasyRSA-3.0.8/doc/EasyRSA-Advanced.md
EasyRSA-3.0.8/doc/EasyRSA-Readme.md
EasyRSA-3.0.8/doc/EasyRSA-Upgrade-Notes.md
EasyRSA-3.0.8/doc/Hacking.md
EasyRSA-3.0.8/doc/Intro-To-PKI.md
EasyRSA-3.0.8/x509-types/COMMON
EasyRSA-3.0.8/x509-types/ca
EasyRSA-3.0.8/x509-types/client
EasyRSA-3.0.8/x509-types/code-signing
EasyRSA-3.0.8/x509-types/email
EasyRSA-3.0.8/x509-types/kdc
EasyRSA-3.0.8/x509-types/server
EasyRSA-3.0.8/x509-types/serverClient
[root@rhel-pc mnt]#
Renommez ensuite le répertoire extrait.
[root@rhel-pc mnt]# mv EasyRSA-3.0.8 EasyRSA
Générer un certificat PKI et CA
vous pouvez le faire avec cette commande ci-dessous :
[root@rhel-pc mnt]# cd EasyRSA/
[root@rhel-pc EasyRSA]# ./easyrsa init-pki
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /mnt/EasyRSA/pki
[root@rhel-pc EasyRSA]#
Alors maintenant, générez votre autorité de certification (CA), qui sera utilisée pour signer les demandes de signature de certificat (CSR) du serveur et du client avec la commande ci-dessous.
[root@rhel-pc EasyRSA]# ./easyrsa build-ca
Using SSL: openssl OpenSSL 1.1.1g FIPS 21 Apr 2020
Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
Generating RSA private key, 2048 bit long modulus (2 primes)
..................+++++
...........................................................................................................................................................+++++
e is 65537 (0x010001)
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]:unixcop
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/mnt/EasyRSA/pki/ca.crt
[root@rhel-pc EasyRSA]#
Générer un certificat SSL de serveur
Nous allons donc générer une clé privée RSA et un CSR avec la commande ci-dessous.
[root@rhel-pc EasyRSA]# ./easyrsa gen-req easyrsa.unixcop.com nopass
Using SSL: openssl OpenSSL 1.1.1g FIPS 21 Apr 2020
Generating a RSA private key
............................................................................................................................................................................................+++++
..........+++++
writing new private key to 'https://1118798822.rsc.cdn77.org/mnt/EasyRSA/pki/easy-rsa-6230.db5Ie8/tmp.5R7sqs'
-----
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) [easyrsa.unixcop.com]:
Keypair and certificate request completed. Your files are:
req: /mnt/EasyRSA/pki/reqs/easyrsa.unixcop.com.req
key: /mnt/EasyRSA/pki/private/easyrsa.unixcop.com.key
[root@rhel-pc EasyRSA]#
En plus de, Signez votre serveur CSR en utilisant la clé privée de l'autorité de certification (CA).
[root@rhel-pc EasyRSA]# ./easyrsa sign-req server easyrsa.unixcop.com
Using SSL: openssl OpenSSL 1.1.1g FIPS 21 Apr 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=
commonName = easyrsa.unixcop.com
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /mnt/EasyRSA/pki/easy-rsa-6260.UVEjyC/tmp.nTGkfr
Enter pass phrase for /mnt/EasyRSA/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'easyrsa.unixcop.com'
Certificate is to be certified until Nov 18 21:18:53 2023 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /mnt/EasyRSA/pki/issued/easyrsa.unixcop.com.crt
[root@rhel-pc EasyRSA]#
Vous avez signé avec succès le certificat SSL.
Aussi, pour vérifier que votre certificat SSL est correctement généré, vous pouvez exécuter openssl commande comme indiqué ci-dessous.
[root@rhel-pc EasyRSA]# openssl verify -CAfile pki/ca.crt /mnt/EasyRSA/pki/issued/easyrsa.unixcop.com.crt
/mnt/EasyRSA/pki/issued/easyrsa.unixcop.com.crt: OK
[root@rhel-pc EasyRSA]#
Générer la clé (Diffie Hellman)
Nous allons donc générer un Diffie Hellman clé à utiliser par le processus d'échange de clé. Utilisez la commande ci-dessous pour la générer.
[root@rhel-pc EasyRSA]# ./easyrsa gen-dh
Using SSL: openssl OpenSSL 1.1.1g FIPS 21 Apr 2020
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
......................................................................................................................................................................................................................................................................................................................................+..+...........................................+.....................+..........................................................................................+..........................................................................................................................................................................................................................................................................................................................................................................+........................................+....................................................................................................................+............................................................................................................................................................................................................+...................................+........................................................................................................................................................................................................................................................................+...........+......................................................................................................+...........................................................+..........................+...............................................................................................................................................+..................................................++*++*++*++*
DH parameters of size 2048 created at /mnt/EasyRSA/pki/dh.pem
[root@rhel-pc EasyRSA]#
Générer un certificat SSL client
Générez un certificat SSL pour votre client.
comme indiqué dans l'exemple, le client sera qadry.unixcop.com
[root@rhel-pc EasyRSA]# ./easyrsa gen-req qadry.unixcop.com nopass
Using SSL: openssl OpenSSL 1.1.1g FIPS 21 Apr 2020
Generating a RSA private key
..+++++
.............................+++++
writing new private key to 'https://1118798822.rsc.cdn77.org/mnt/EasyRSA/pki/easy-rsa-6458.r26VDM/tmp.fjd968'
-----
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) [qadry.unixcop.com]:
Keypair and certificate request completed. Your files are:
req: /mnt/EasyRSA/pki/reqs/qadry.unixcop.com.req
key: /mnt/EasyRSA/pki/private/qadry.unixcop.com.key
[root@rhel-pc EasyRSA]#
Vous pouvez également signer le certificat SSL du client comme indiqué ci-dessous.
[root@rhel-pc EasyRSA]# ./easyrsa sign-req client qadry.unixcop.com
Using SSL: openssl OpenSSL 1.1.1g FIPS 21 Apr 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 client certificate for 825 days:
subject=
commonName = qadry.unixcop.com
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /mnt/EasyRSA/pki/easy-rsa-6507.0eJrdy/tmp.sFYefJ
Enter pass phrase for /mnt/EasyRSA/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'qadry.unixcop.com'
Certificate is to be certified until Nov 18 21:29:23 2023 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /mnt/EasyRSA/pki/issued/qadry.unixcop.com.crt
[root@rhel-pc EasyRSA]#
Vous avez donc généré et signé avec succès le certificat SSL du client.
Copiez également votre certificat d'autorité de certification (CA) dans /etc/pki/ca-trust/source/anchors/ de vos clients Linux pour ajouter votre autorité de certification à leur liste d'autorités de certification de confiance.
Conclusion
Nous avons donc installé avec succès EasyRSA sur CentOS / Red Hat Enterprise Linux 8. Nous avons également configuré une autorité de certification et des certificats SSL signés de serveur et de client en utilisant easyrsa commande.