Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révisionLes deux révisions suivantes | ||
informatique:securite:manip_certificat_ssl [2016/01/12 11:20] – [Activation du SSL sur un VirtualHost] bn8 | informatique:securite:manip_certificat_ssl [2019/03/12 14:10] – [Version complète] bn8 | ||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
==== Version simple ==== | ==== Version simple ==== | ||
- | | + | <code bash>openssl req -newkey rsa:2048 -subj / |
ou | ou | ||
- | + | <code bash>CN=" | |
- | | + | FILE=cert-domain.tld |
- | FILE=cert-domain.tld | + | openssl req -newkey rsa:2048 -subj /CN=$CN -nodes -keyout $FILE.key -out $FILE.csr</ |
- | openssl req -newkey rsa:2048 -subj /CN=$CN -nodes -keyout $FILE.key -out $FILE.csr | + | |
==== Version complète ==== | ==== Version complète ==== | ||
- | | + | <code bash> |
- | FILE=cert-domain.tld | + | CN=" |
- | STATE=My State | + | FILE=cert-domain.tld |
- | VILLE=My City | + | STATE=My State |
- | PAYS=FR | + | VILLE=My City |
- | ORGA=My Company | + | PAYS=FR |
- | ORGA_UNIT=My Unit | + | ORGA=My Company |
- | openssl req -new -newkey rsa:2048 -nodes -out $FILE.csr -keyout $FILE.key -subj "/ | + | ORGA_UNIT=My Unit |
+ | openssl req -new -newkey rsa:2048 -nodes -out $FILE.csr -keyout $FILE.key -subj "/ | ||
Ligne 33: | Ligne 33: | ||
* Copier le fichier de configuration // | * Copier le fichier de configuration // | ||
* Modifier la copie : | * Modifier la copie : | ||
- | * Dans //[req]]// ajouter : < | + | * Dans '' |
- | * Dans //[v3_req]// ajouter : < | + | * Dans '' |
- | * Ajouter la section suivante : < | + | * Ajouter la section suivante : < |
DNS.1 = alt1.domain.tld | DNS.1 = alt1.domain.tld | ||
DNS.2 = alt2.domain.tld | DNS.2 = alt2.domain.tld | ||
Ligne 60: | Ligne 60: | ||
Signature Algorithm: sha1WithRSAEncryption | Signature Algorithm: sha1WithRSAEncryption | ||
[...]</ | [...]</ | ||
- | ==== Vérifier la concordance d'une clé et d'un CSR ==== | + | ==== Vérifier la concordance d'une clé, d'un CSR et d'un certificat |
- | < | + | < |
~# openssl rsa -noout -modulus -in server.key |openssl md5 | ~# openssl rsa -noout -modulus -in server.key |openssl md5 | ||
XXXXXXXXXXXXXXXXXXXXXcfbf186e13f | XXXXXXXXXXXXXXXXXXXXXcfbf186e13f | ||
~# openssl req -noout -modulus -in server.csr |openssl md5 | ~# openssl req -noout -modulus -in server.csr |openssl md5 | ||
+ | XXXXXXXXXXXXXXXXXXXXXcfbf186e13f | ||
+ | ~# openssl x509 -noout -modulus -in server.crt |openssl md5 | ||
XXXXXXXXXXXXXXXXXXXXXcfbf186e13f | XXXXXXXXXXXXXXXXXXXXXcfbf186e13f | ||
</ | </ | ||
Ligne 71: | Ligne 73: | ||
===== Génération d'un certificat SSL auto-signé ===== | ===== Génération d'un certificat SSL auto-signé ===== | ||
+ | <note important> | ||
Nous commençons par générer la bi-clé RSA, qui peut être protégée par une passphrase. Pour se faciliter la vie, on peut ne rien mettre pour la phrase de passe. Ceci nous évite de devoir la retaper à chaque redémarrage du serveur. | Nous commençons par générer la bi-clé RSA, qui peut être protégée par une passphrase. Pour se faciliter la vie, on peut ne rien mettre pour la phrase de passe. Ceci nous évite de devoir la retaper à chaque redémarrage du serveur. | ||
- | < | + | < |
- | + | ||
- | Nous générons ensuite le certificat autosigné | + | |
- | | + | Nous générons ensuite le certificat autosigné : <code bash>openssl req -new -x509 -days 365 -key server.key -out server.crt</ |
Dans les questions posées, il faut faire attention au champ Common Name (eg, YOUR name) : Il faut mettre le nom du serveur (FQDN). Sinon, nous aurons un message comme quoi le nom du propriétaire du certificat et du site ne correspond pas. | Dans les questions posées, il faut faire attention au champ Common Name (eg, YOUR name) : Il faut mettre le nom du serveur (FQDN). Sinon, nous aurons un message comme quoi le nom du propriétaire du certificat et du site ne correspond pas. | ||
Ligne 89: | Ligne 90: | ||
Le certificat n'est pas signé par une autorité de certification (type verisign). Ainsi, lors de son utilisation, | Le certificat n'est pas signé par une autorité de certification (type verisign). Ainsi, lors de son utilisation, | ||
- | **Pour vérifier le bon usage du certificat :** | + | **Pour vérifier le bon usage du certificat :** <code bash>openssl x509 -in server.crt -text -noout</ |
- | + | ||
- | | + | |
===== Voir les informations contenues dans un certificat SSL ===== | ===== Voir les informations contenues dans un certificat SSL ===== | ||
- | Pour un CRT : < | + | Pour un CRT : < |
- | Pour un CSR : < | + | Pour un CSR : < |
Pour un P12 : le convertir en PEM d' | Pour un P12 : le convertir en PEM d' | ||
Ligne 103: | Ligne 102: | ||
===== Convertir un P12 en PEM ===== | ===== Convertir un P12 en PEM ===== | ||
- | < | + | < |
+ | ===== Extraire les certificats d'un fichier PFX ===== | ||
+ | |||
+ | <code bash> | ||
+ | openssl pkcs12 -in file.pfx -nocerts -nodes | ||
===== Utilisation d'un certificat SSL par Apache ===== | ===== Utilisation d'un certificat SSL par Apache ===== | ||
Ligne 115: | Ligne 118: | ||
Créer le fichier / | Créer le fichier / | ||
+ | <code apache> | ||
< | < | ||
SSLCertificateFile | SSLCertificateFile | ||
SSLCertificateKeyFile / | SSLCertificateKeyFile / | ||
</ | </ | ||
+ | </ | ||
- | ou | + | ou : |
+ | <code apache> | ||
< | < | ||
SSLCertificateKeyFile / | SSLCertificateKeyFile / | ||
</ | </ | ||
+ | </ | ||
**NB :** un fichier .pem est la concaténation de la clef privée et du certificat : | **NB :** un fichier .pem est la concaténation de la clef privée et du certificat : | ||
- | | + | <code bash>cat server.key > apache.pem |
- | cat server.crt >> apache.pem | + | cat server.crt >> apache.pem</ |
- | **NB2 :** dans le cas de l' | + | **NB2 :** dans le cas de l' |
- | + | ||
- | | + | |
==== Activation du module SSL ==== | ==== Activation du module SSL ==== | ||
- | | + | <code bash>a2enmod ssl</ |
==== Activation du SSL sur un VirtualHost ==== | ==== Activation du SSL sur un VirtualHost ==== | ||
Dans le fichier de définition du // | Dans le fichier de définition du // | ||
+ | <code apache> | ||
< | < | ||
... | ... | ||
Ligne 146: | Ligne 152: | ||
... | ... | ||
</ | </ | ||
- | | + | </ |
===== Lister les ciphers supporté par un serveur ===== | ===== Lister les ciphers supporté par un serveur ===== | ||