4 231
modifications
(12 versions intermédiaires par le même utilisateur non affichées) | |||
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 = | 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: | 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: | * -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 221 : | Ligne 239 : | ||
Nous allons ensuite initialiser le serial par un nombre aléatoire | 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> | <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 227 : | Ligne 257 : | ||
<pre> | <pre> | ||
cd /etc/ssl/core_ca | cd /etc/ssl/core_ca | ||
openssl req -newkey rsa: | 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 | openssl x509 -serial -noout -in core_ca.pem | cut -d= -f2 > serial | ||
</pre> | </pre> | ||
Ligne 243 : | 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: | 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 264 : | 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 273 : | 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: | 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 291 : | 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 302 : | 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> |