Il y a un outil pour cela nommé openssl et qui se situe par défaut dans /usr/local/bin.
1. On commence par installer une clé privée ;
On choisit souvent de ne pas la protéger par mot de passe pour éviter la complication de la lecture par apache d'un mot de passe à chaque démarrage ou redémarrage.
Il est donc indispensable que le fichier contenant la clé ne soit lisible que par le propriétaire des process apache (qui est déclaré dans le fichier de configuration d'apache httpd.conf).
openssl req -new -outform PEM > apache
openssl rsa -in privkey.pem -out apache.key
Si vous souhaitez créer une clé cryptée, entrez:
/usr/local/bin/openssl genrsa -des3 1024 > nom.votre.site.key
Mais dans ce cas, chaque lancement d'apache vous demandera d'entrer manuellement le mot de passe de la clé.
Cela peut être gênant si vous prévoyer des redémarrages automatisés d'Apache....
Il y a un moyen d'automatiser la fourniture du mot de passe à Apache au démarrage avec l'option:
SSLPassPhraseDialog exec:votre_programme_de_fourniture_de_mot_de_passe
Mais c'est à vous d'écrire le programme qui fournit le mot de passe, faites attention à ce que vous faites...
2. entrez ensuite:
openssl x509 -in apache -out apache.cert -req -signkey apache.key
qui va se servir du fichier de configuration par défaut de openssl.
Vous devez répondre à une série de questions, entrez un . pour laisser un champ vierge, en voici un aperçu:
Country Name (2 letter code): FR
State or Province Name :
Locality Name:
Organization name:
Organization Unit Name:
Common name:
Email Adress:
A chalenge password:
An optional comany name:
3. Le CSR est maintenant créé, on peut valider soi même pour générer un certificat de sécurité:
openssl x509 -noout -text -in apache.cert
Une option utile: -days donne la durée de validité du certificat
La partie installation est à présent achevée...
Il ne reste plus qu'à configurer le fichier /usr/local/apache/conf/httpd.conf
On ne donnera ici que les compléments nécessités par mod_ssl.
LoadModule ssl_module libexec/libssl.so
Il faut aussi commenter tous les <IfDefine SSL> de manière à ce que Apache lance systématiquement ssl. Vérifiez ensuite la présence de:
Listen 443
un serveur ssl écoute sur le port 443, pensez à l'ouvrir si vous utiliser un pare-feu...
On va configurer des serveurs virtuels utilisant ssl.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| NamevirtualHost *:443
<VirtualHost *:443>
SSLEngine On
SSLCertificateKeyFile ssl.key
SSLCertificateFile ssl.crt
DocumentRoot /var/www
ServerName localhost
CustomLog /var/log/httpd/mail_log common
ErrorLog /var/log/httpd/mail-error_log
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
<Files ~ "\.(cgi|shtml|phtml|php3?|php|inc)$">
SSLOptions +StdEnvVars
</Files>
</VirtualHost> |
Partager