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 | ||
informatique:securite:manip_certificat_ssl [2015/01/08 09:54] – [Configuration générale du module SSL d'Apache] bn8 | informatique:securite:manip_certificat_ssl [2025/01/10 08:53] (Version actuelle) – [Activation du SSL sur un VirtualHost] 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 "/ | ||
< | < | ||
- | === Génération d'un CSR multi-domaine === | + | <note tip>Pour voir les informations dans un fichier CSR, utiliser la commande suivante : <code bash> |
+ | |||
+ | ==== Génération d'un CSR multi-domaine | ||
Pour un certificat multi-domaine, | Pour un certificat multi-domaine, | ||
Ligne 33: | Ligne 35: | ||
* 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 62: | ||
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 |
- | < | + | * clé privée : < |
- | ~# openssl rsa -noout -modulus -in server.key |openssl md5 | + | * CSR : <code bash>openssl req -noout -modulus -in server.csr |openssl md5</ |
- | XXXXXXXXXXXXXXXXXXXXXcfbf186e13f | + | * certificat : <code bash> |
- | ~# openssl req -noout -modulus -in server.csr |openssl md5 | + | |
- | XXXXXXXXXXXXXXXXXXXXXcfbf186e13f | + | |
- | </ | + | |
===== 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 faciliter la suite, déclarons une variable d' |
- | < | + | Générerons ensuite la clé //RSA// : < |
+ | chown root: | ||
+ | chmod 640 / | ||
- | Nous générons | + | Générons |
+ | chmod 644 / | ||
- | 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). |
- | + | ||
- | Dans les questions posées, il faut faire attention au champ Common Name (eg, YOUR name) : Il faut mettre le nom du serveur (FQDN). | + | |
- | + | ||
- | * -x509 : génération d'un certificat autosigné, et non d'une simple requête | + | |
- | * -days 365 : le certificat est valable 365 jours | + | |
- | * -key server.key : la clé publique est extraite de la bi-clé précédente | + | |
- | * -out server.crt : le certificat est copié | + | |
- | + | ||
- | 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 :** | + | |
- | + | ||
- | openssl x509 -in server.crt -text -noout | + | |
+ | **Paramètres :** | ||
+ | * **'' | ||
+ | * **'' | ||
===== 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 96: | ||
===== Convertir un P12 en PEM ===== | ===== Convertir un P12 en PEM ===== | ||
- | < | + | < |
+ | ===== Extraire les certificats d'un fichier PFX ===== | ||
+ | * clé privée : <code bash> | ||
+ | * certificat : <code bash> | ||
+ | <note tip>Si vous rencontrez une erreur du type de celle ci-dessous, ajouter le paramètre '' | ||
===== Utilisation d'un certificat SSL par Apache ===== | ===== Utilisation d'un certificat SSL par Apache ===== | ||
Ligne 113: | Ligne 110: | ||
==== Configuration générale du module SSL d' | ==== Configuration générale du module SSL d' | ||
- | Créer le fichier / | + | Créer le fichier |
- | | + | <code apache> |
- | SSLCertificateFile | + | < |
- | SSLCertificateKeyFile / | + | SSLCertificateFile |
- | </ | + | SSLCertificateKeyFile / |
+ | </ | ||
+ | </code> | ||
- | ou | + | ou avec un seul fichier contenant la clé et le certificat : |
- | | + | <code apache> |
- | SSLCertificateKeyFile /etc/apache2/ | + | < |
- | </ | + | SSLCertificateKeyFile /etc/ssl/private/ |
- | + | </ | |
- | **NB :** un fichier .pem est la concaténation de la clef privée et du certificat : | + | </ |
- | | + | <note tip>Pour créé le fichier //PEM//, concaténez la clef privée et le certificat : |
- | cat server.crt >> apache.pem | + | <code bash>cat / |
+ | </ | ||
- | **NB2 :** dans le cas de l' | + | Puis activer ce fichier |
+ | service apache2 restart</ | ||
- | | + | <note tip>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 148: | ||
... | ... | ||
</ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Utilisation d'un certificat SSL par OpenSSL ===== | ||
+ | |||
+ | * Ajouter l' | ||
+ | * Redémarrer OpenLDAP : <code bash> | ||
+ | * Créer une version // | ||
+ | * Ajuster les droits du certificat et de la clé : <code bash> | ||
+ | chmod 644 / | ||
+ | chmod 640 / | ||
+ | </ | ||
+ | * Configurer le certificat et la clé via les attributs '' | ||
+ | ldapmodify -Y EXTERNAL -H ldapi:/// << EOF | ||
+ | dn: cn=config | ||
+ | changetype: modify | ||
+ | add: olcTLSCertificateFile | ||
+ | olcTLSCertificateFile: | ||
+ | - | ||
+ | add: olcTLSCertificateKeyFile | ||
+ | olcTLSCertificateKeyFile: | ||
+ | EOF | ||
+ | * Ajouter '' | ||
+ | * Redémarrer OpenLDAP : <code bash> | ||
+ | ===== Lister les ciphers supporté par un serveur ===== | ||
+ | |||
+ | **Script :** | ||
+ | <code bash># | ||
+ | |||
+ | # OpenSSL requires the port number. | ||
+ | SERVER=$1 | ||
+ | [ -z " | ||
+ | |||
+ | echo -n " | ||
+ | ciphers=$(openssl ciphers ' | ||
+ | |||
+ | echo "Check cipher support on server $SERVER :" | ||
+ | for cipher in ${ciphers[@]} | ||
+ | do | ||
+ | echo -n Testing $cipher... | ||
+ | result=$(echo -n | openssl s_client -cipher " | ||
+ | if [[ " | ||
+ | error=$(echo -n $result | cut -d':' | ||
+ | echo NO \($error\) | ||
+ | else | ||
+ | if [[ " | ||
+ | echo YES | ||
+ | else | ||
+ | echo UNKNOWN RESPONSE | ||
+ | echo $result | ||
+ | fi | ||
+ | fi | ||
+ | done</ | ||
+ | |||
+ | **Usage :** < |