« Installation et configuration de OpenSSL » : différence entre les versions

Aller à la navigation Aller à la recherche
(16 versions intermédiaires par le même utilisateur non affichées)
Ligne 77 : Ligne 77 :
touch /etc/ssl/root_ca/index.txt
touch /etc/ssl/root_ca/index.txt
touch /etc/ssl/core_ca/index.txt
touch /etc/ssl/core_ca/index.txt
echo 01 > /etc/ssl/root_ca/serial
touch /etc/ssl/root_ca/serial
echo 01 > /etc/ssl/core_ca/serial
touch /etc/ssl/core_ca/serial
</pre>
</pre>


Ligne 87 : Ligne 87 :


<pre>
<pre>
openssl_conf = default_conf
[ ca ]
[ ca ]
#Cette section nous permet de définir l'autorité de certification par défaut.
#Cette section nous permet de définir l'autorité de certification par défaut.
Ligne 104 : Ligne 105 :
preserve        = no
preserve        = no
policy          = policy_match
policy          = policy_match
#unique_subject = no # Set to 'no' to allow creation of several certs with same subject.


#l'autorité de certification intermédiaire valable 10 ans
#l'autorité de certification intermédiaire valable 10 ans
Ligne 118 : Ligne 120 :
preserve        = no   
preserve        = no   
policy          = policy_match
policy          = policy_match
#unique_subject = no # Set to 'no' to allow creation of several certs with same subject.
</pre>
</pre>


Ligne 144 : Ligne 147 :
<pre>
<pre>
[ req ]
[ req ]
default_bits            = 2048
default_bits            = 4096
distinguished_name      = req_distinguished_name
distinguished_name      = req_distinguished_name
string_mask = utf8only


[ req_distinguished_name ]
[ req_distinguished_name ]
Ligne 173 : Ligne 177 :
challengePassword_max          = 20
challengePassword_max          = 20
unstructuredName                = An optional company name
unstructuredName                = An optional company name
</pre>
<pre>
[default_conf]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=2
</pre>
</pre>


Ligne 197 : Ligne 213 :


==Création de l'autorité root==
==Création de l'autorité root==
===V1===
Maintenant nous pouvons créer le certificat de l'autorité de certification :
Maintenant nous pouvons créer le certificat de l'autorité de certification :
<pre>
<pre>
cd /etc/ssl/root_ca/
cd /etc/ssl/root_ca/
openssl req -x509 -config /etc/ssl/openssl.cnf -newkey rsa:4096 -sha256 -extensions ROOT_CA -days 3650 -keyout private/root_ca.key -out root_ca.pem
openssl req -x509 -config /etc/ssl/openssl.cnf -newkey rsa:8192 -sha256 -extensions ROOT_CA -days 3650 -keyout private/root_ca.key -out root_ca.pem
</pre>
</pre>


Ligne 206 : Ligne 224 :
* req permet de créer des des demandes de certificats.
* req permet de créer des des demandes de certificats.
* -x509 permet de créer un certificat auto-signé au lieu d'une simple demande de certificat.
* -x509 permet de créer un certificat auto-signé au lieu d'une simple demande de certificat.
* -newkey rsa:4096 permet de créer la clé privée en même temps ; L'algorithme de chiffrement RSA est utilisé avec une clé de 4096 bits.
* -newkey rsa:8192 permet de créer la clé privée en même temps ; L'algorithme de chiffrement RSA est utilisé avec une clé de 8192 bits.
* -extensions ROOT_CA spécifie qu'il faut utiliser la section [ROOT_CA] du fichier de configuration de openssl pour configurer le certificat.
* -extensions ROOT_CA spécifie qu'il faut utiliser la section [ROOT_CA] du fichier de configuration de openssl pour configurer le certificat.
* -days 3650 permet de définir la durée de validité du certificat. Ici, 3650 jours.
* -days 3650 permet de définir la durée de validité du certificat. Ici, 3650 jours.
Ligne 218 : Ligne 236 :
chmod -R 600 /etc/ssl/root_ca/private
chmod -R 600 /etc/ssl/root_ca/private
</pre>
</pre>
Nous allons ensuite initialiser le serial par un nombre aléatoire
<pre>openssl x509 -serial -noout -in root_ca.pem | cut -d= -f2 > serial</pre>
===V2===
<pre>openssl req -new -newkey rsa:2048 -keyout private/cakey.pem -out careq.pem -config /etc/ssl/openssl.cnf </pre>
<pre>openssl ca -create_serial -out cacert.pem -days 365 -keyfile private/cakey.pem -selfsign -config /etc/ssl/openssl.cnf -infiles careq.pem </pre>
-create_serial est important et permet d'initialiser un sérial aléatoire de 128 bits.
Passer par ces deux commandes (plutôt que tout créer directement par <code>req</code>) est nécessaire car <code>req</code> ne supporte pas -create_serial
see https://www.phildev.net/ssl/creating_ca.html


==Création de l'autorité intermédiaire==
==Création de l'autorité intermédiaire==
Ligne 224 : Ligne 257 :
<pre>
<pre>
cd /etc/ssl/core_ca
cd /etc/ssl/core_ca
openssl req -newkey rsa:4096 -sha256 -keyout private/core_ca.key -out core_ca.req
openssl req -newkey rsa:8192 -sha256 -keyout private/core_ca.key -out core_ca.req
</pre>
</pre>
Puis on signe le certificat en utilisant la ca par défaut (défini dans le fichier openssl.cnf), c'est-à-dire, la CA_ROOT.
Puis on signe le certificat en utilisant la ca par défaut (défini dans le fichier openssl.cnf), c'est-à-dire, la CA_ROOT.
Notez qu'on précise qu'il faut configurer ce nouveau certificat en utilisant la section CORE_CA du fichier de configuration.
Notez qu'on précise qu'il faut configurer ce nouveau certificat en utilisant la section CORE_CA du fichier de configuration.
<pre>
<pre>
openssl ca -extensions CORE_CA -in core_ca.req -out core_ca.pem
openssl ca -extensions CORE_CA -in core_ca.req -out core_ca.pem</pre>
 
On génère le serial de core_ca
<pre>
openssl x509 -serial -noout -in core_ca.pem | cut -d= -f2 > serial
</pre>
</pre>
Enfin, on s'assure que la clé privée de cette nouvelle autorité est elle aussi à l'abri :
Enfin, on s'assure que la clé privée de cette nouvelle autorité est elle aussi à l'abri :
Ligne 239 : Ligne 276 :
Pour générer la clé privé et la demande de certificat :
Pour générer la clé privé et la demande de certificat :
<pre>
<pre>
openssl req -newkey rsa:2048 -sha256 -keyout cle-privee.key -out cle-publique.req
openssl req -newkey rsa:4096 -sha256 -keyout cle-privee.key -out cle-publique.req
</pre>
</pre>
Puis on signe le certificat. L'option <code>-name</code> permet de préciser qu'il faut utiliser l'autorité <code<core_ca</code> pour signer notre nouveau certificat.
Puis on signe le certificat. L'option <code>-name</code> permet de préciser qu'il faut utiliser l'autorité <code<core_ca</code> pour signer notre nouveau certificat.
Ligne 260 : Ligne 297 :
subjectAltName                  = DNS:www.server.com, DNS:webmail.server.com
subjectAltName                  = DNS:www.server.com, DNS:webmail.server.com
basicConstraints                = critical,CA:FALSE
basicConstraints                = critical,CA:FALSE
keyUsage                        = digitalSignature, nonRepudiation, keyEncipherment
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment
nsCertType                      = server
nsCertType                      = server
extendedKeyUsage                = serverAuth
extendedKeyUsage                = serverAuth
Ligne 269 : Ligne 306 :
On génère la clé privé et la demande de certificat :
On génère la clé privé et la demande de certificat :
<pre>
<pre>
openssl req -newkey rsa:2048 -sha256 -keyout cle-privee.key -out cle-publique.req
openssl req -newkey rsa:4096 -sha256 -keyout cle-privee.key -out cle-publique.req
</pre>
</pre>
Puis on signe le certificat. L'option <code>-name</code> permet de préciser qu'il faut utiliser l'autorité <code>core_ca</code> pour signer notre nouveau certificat :
Puis on signe le certificat. L'option <code>-name</code> permet de préciser qu'il faut utiliser l'autorité <code>core_ca</code> pour signer notre nouveau certificat :
Ligne 287 : Ligne 324 :
subjectAltName                  = critical,email:copy,email:root@server.com,email:admin@server.com
subjectAltName                  = critical,email:copy,email:root@server.com,email:admin@server.com
basicConstraints                = critical,CA:FALSE
basicConstraints                = critical,CA:FALSE
keyUsage                        = digitalSignature, nonRepudiation
keyUsage                        = critical,digitalSignature, nonRepudiation
nsCertType                      = client
nsCertType                      = client
extendedKeyUsage                = clientAuth
extendedKeyUsage                = clientAuth
Ligne 298 : Ligne 335 :
Identifiez le certificat dans le fichier <code>/etc/ssl/core_ca/index.txt</code>. Par exemple, pour révoquer le certificat qui a l'identifiant 03 :
Identifiez le certificat dans le fichier <code>/etc/ssl/core_ca/index.txt</code>. Par exemple, pour révoquer le certificat qui a l'identifiant 03 :
<pre>openssl ca -revoke /etc/ssl/core_ca/newcerts/03.pem</pre>
<pre>openssl ca -revoke /etc/ssl/core_ca/newcerts/03.pem</pre>
=Compatibilité avec la bibliothèque de certificats des distributions Linux=
Placez le certificat de votre CA dans /etc/ssl/certs/myca.pem puis lancez les commandes suivantes :
<pre>cd /etc/ssl/certs/
chmod o+r myca.pem
ln -s myca.pem `openssl x509 -hash -noout -in myca.pem`.0
cd
</pre>
4 203

modifications

Menu de navigation