- Version d'origine (anglais) par Matt Raible
- Version source (anglais) par Balázs Bárány
- Version espagnole par Sergio Artigas
- Version française par Jean-François Moreau
Revue le 26 septembre 2002 par Matt Raible pour Apache 2.0.42. Version d'origine http://tud.at/programm/apache-ssl-win32-howto.php3.
Problèmes soumis par les utilisateurs
2002-11-26, Daniel Nixon, Q : Utilisation de http pour des requêtes SSLQ: SSL ne marche pas dans le navigateur et j'ai les lignes suivantes dans le logfile :[Fri Nov 16 15:46:30 2001] [error] OpenSSL: error:1407609C:SSL routines:SSL23_GET_CLIENT_HELLO:http request [Hint: speaking HTTP to HTTPS port!?]
J'ai constaté que cela arrive aussi en employanthttp
comme protocole dans l'url, au lieu dehttps
. Par exemple, accès àhttp://mysite:443/
retourne une erreur "Bad Request
" au niveau du navigateur (et l'erreur ci-dessus dans le fichiererror.log
), qui est résolu en employanthttps://mysite/
.
2002-10-21, Chris Parker, Q : ouvrir ssl et cygwin
FWIW - J'utilise Windows NT 4.0 SP6a, Apache 2.043 et la dernière version de Cygwin du 16 octobre - ils n'emploient plus de numéros de version. 1: RE : "Vous aurez besoin d'un fichier config pouropenssl.exe
. Si vous utilisez Cygwin, il en existe surement déjà un pour vous." Je n'ai _pas_ de fichier "openssl.cnf
" dans Cygwin, il n'a été inclus non plus avec les fichiers binaires d'OpenSSL. J'ai téléchargé un fichier d'exemple sur Internet http://tinyurl.com/3fw3 (le troisième résultat GOOGLE quand j'ai cherché "openssl.cnf"). 2: Quand j'ai saisi "openssl req -new -out server.csr
" - d'abord j'ai vu "Using configuration from /usr/local/ssl/openssl.cnf
", ensuite j'ai reçu le message d'erreur "Unable to load config info
" bien qu'openssl.cnf soit effectivement dans/usr/local/ssl/
(ok, c'était en réalitéC:\Cygwin\usr\local\ssl\
). Pour résoudre ce problème, j'ai simplement fait une copie d'openssl.cnf
dans le répertoire d'openssl.exe
, ensuite dans la console Cygwin j'ai tapée 'export OPENSSL_CONF="./openssl.cnf"
'. Toutes les commandes d'openssl ont fonctionné normalement après cela. J'ai trouvé quelques discussions concernant cette question en recherchant dans de vieux forums de discussion, c'est semble t-il un problème récurrent dans Cygwin. 3: La commande de création de certificat x.509 est la suivante "openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
" (Notez : serveur.CRT), tandis que pour l'hôte virtuel il y a "SSLCertificateFile conf/ssl/server.cert
" (Notez : serveur.CERT) - ces deux extensions de fichier doivent être identiques. 4: Q: SSL ne marche pas avec mon navigateur, j'ai le message suivant dans le fichier de log : R: Message explicite s'il en est (en anglais certes ...), Votre configurationVirtual Host
ouListen
est incorrecte ! Ou bien, le serveur web ou l'applet peut utiliser les chemins relatifs - c'est-à-dire "/path/webpage.jsp
" plutôt que"https://server/path/webpage.jsp
" ET la redirection est traitée par quelque moteur de génération de page dynamique. Dans mon cas, ayant le contrôleur servlet avant "/path/webpage.jsp
", cela entraine l'erreur citée ci-dessus - je dois utiliser uniquement les URLs absolues ...
Cette procédure est valable pour Windows NT, 98, ME, 2000 et XP. S'il vous plait envoyez moi (en anglais) vos suggestions et des rapports d'erreur. Vous pouvez même installer Apache avec SSL en plus de Microsoft Information d'Internet Serveur si vous en avez besoin.
Note: Quelques fois, il existe des différences entre les distributions
précompilées d'Apache ce qui rend ce COMMENT-FAIRE incorrect.
Dans ce cas, si la version courante ne fonctionne pas, téléchargez une version
précédente - une publiée avant la dernière modification de ce document.
Ou si vous aimez l'aventure, essayez de la faire marcher et
envoyez moi (en anglais) les modifications a faire.
Notez cependant que les versions d'Apache pour plate-forme Win32 sont considérées comme des versions bêtas et qu'elles n'atteignent pas la stabilité et les performances d'Apache sur des plates-formes Unix/Linux.
- Installer Apache
- Obtenir OpenSSL and mod_ssl
- Créer un Certificat temporaire
- Configurer Apache et mod_ssl
- Résoudre les problèmes de connexion
- Problèmes fréquents
Réactions
Questions diverses
Liens
apache_x_y_z_win32.exe
.
Ce sont des archives auto-extractible qui contiennent le système de base d'Apache et
des fichiers de configuration types.
(NdT : Il existe aussi des versions .msi
. A vous de choisir ...)
Ne mélangez pas les version 1.3.x et 2.x ! Cela ne marche pas. Si vous trouvez une version 1.3.x sur modssl.org, n'espérez pas la faire marcher avec une version 2.x.
Installez Apache comme décrit dans http://www.apache.org/docs/windows.html.J'ai pris http://httpd.apache.org/docs-2.0/install.html en référence.
$ lynx http://www.apache.org/dist/httpd/httpd-2.0.42.tar.gz
$ gzip -d httpd-2.0.42.tar.gz
$ tar xvf httpd-2.0.42.tar
$ ./configure --enable-mods-shared=most --enable-ssl=shared
$ make
$ make install
Si vous utilisez Apache 2.0.42 avec Tomcat, vous pouvez télécharger le fichier binaire mod_jk.so
http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk/release/v1.2.0/bin/linux/i386/mod_jk-2.0.42.so.
Après le téléchargement, mettez ce fichier dans votre répertoire modules
et renommez-le en mod_jk.so
. Cliquez ici pour plus d'information sur la configuration d'Apache et Tomcat.
Changez au moins les paramètres suivants dans
Apache-dir/conf/httpd.conf
:[Remplacez tous les occurences de
www.mon-serveur.com
avec le nom de domaine réel !]- Remplacez
Port 80
par# Port 80
(MettrePort
en commentaire n'est pas vraiment nécessaire,Listen
l'ignore plus tard.) - Ajoutez (Si pas en supplément de IIS)
Listen 80
- Ajoutez
Listen 443
(Votre serveur est alors actif sur le port de la norme SSL) - Ajoutez
ServerName
www.mon-serveur.com - Modifiez (Si en supplément de IIS)
DocumentRoot
et la commande correspondant à votre répertoire racine<Directory
some-dir>
(par défaut :Inetpub\wwwroot
) - Si vous désirez utiliser PHP, configurer-le selon les instructions.
Essayez http://www.my-server.dom:443/. Il ne sera pas encore chiffré, mais si cela fonctionne c'est que la configuration du port SSL (port 443) est correcte.
Apache_X-mod_ssl_Y-openssl_Z-WIN32[-i386].zip
.
(Vous pouvez obtenir une version sur le site http://hunter.campbus.com/)
Téléchargez le et décompressez le dans un nouveau répertoire.Si vous avez besoin de la version la plus récente, vous devrez le compiler vous-même si elle n'est pas là. Ne me demandez rien à ce sujet, je ne l'ai pas, je ne compile pas les versions sur modssl.org et je n'ai pas d'accès aux outils de développement sur Win32.
IMPORTANT :
Copiez les fichiers ssleay32.dll
et libeay32.dll
du répertoire Apache dans le répertoire WinNT\System32.
Environ 70 % des messages que je reçois
viennent du fait que vous avez oublié de faire ces copies.
Si vous ne trouvez pas ces fichiers ou openssl.exe
dans le fichier zip d'Apache,
chercher un fichier nommé openssl-version-win32.zip
à partir de
http://www.modssl.org/contrib/.
openssl.cnf
" pour l'exécutable
OpenSSL.exe
. Vous en trouverez un
ici (clic droit et "Enregistrer la cible sous ...").
Copiez le dans le répertoire contenant openssl.exe
.(C'est un fichier texte normal. Cependant, certaines configuration de Windows vous cache l'extension. Vous pouvez l'éditer avec le bloc-notes ou tout autre bon éditeur, mais cela ne devrait pas être nécessaire).
Télécharger et installer Cygwin depuis http://www.cygwin.com/.
Vous aurez besoin d'un fichier config pour
openssl.exe
.
Si vous utilisez Cygwin, il en existe surement un pour vous.
Si vous ne voulez pas installer Cygwin, il y a une application openssl.exe
dans la distribution OpenSSL.
openssl req -config openssl.cnf -new -out mon-serveur.csr
Cela crée un CSR (Certificat Signing Request) et une clef privée. Lorsque l'on vous demande votre
"nom de domaine"
,
donnez le nom de domaine exact de votre serveur Web
(par exemple www.mon-serveur.com, 195.125.204.24).
Le certificat appartient à ce nom de serveur et les navigateurs se "plaignent" si le nom ne correspond pas.openssl rsa -in privkey.pem -out mon-serveur.key
Cela enlève la phrase/motdepasse de la clef privée. Vous DEVEZ comprendre ce que cela signifie;
mon-serveur.key
doit être lisible seulement par le serveur apache et l'administrateur.
Vous devez supprimer le fichier .rnd
parce qu'il contient l'information d'entropie pour créer la clef et
pourrait être employé pour des attaques cryptographiques contre votre clef privée.openssl x509 -in mon-serveur.csr -out mon-serveur.cert -req -signkey mon-serveur.key -days 365
Cela crée un certificat signé que vous pouvez employer avant que vous n'en obteniez un "réel" d'une autorité de certification. (Le certificat réel est facultatif; si vous connaissez vos utilisateurs, vous pouvez leur dire d'installer le certificat dans leur(s) navigateur(s).) Notez que ce certificat expire après un an, vous pouvez modifier le délai (
-days 365
) si vous le désirez.Si vous avez des utilisateurs naviguant avec MS Internet Explorer 4.x et vouliez qu'ils soient capables d'installer le certificat dans leur navigateur (en le téléchargeant et en l'ouvrant), vous devez créer une version codée DER du certificat :
openssl x509 -in mon-serveur.cert -out mon-serveur.der.crt -outform DER
Créez un répertoire
Apache/conf/ssl
et déplacez-y les fichiers mon-serveur.key
et
mon-serveur.cert
.Créez une liste d'adresses
Apache/conf/ssl
et déplacez-y server.key
et server.crt
.
ssl.key
et ssl.crt
.Déplacez
server.crt
dans ssl.crt
et server.key
dans ssl.key
Trouvez les directives LoadModule dans votre fichier
httpd.conf
et
ajoutez la(es) ligne(s) suivante(s), en fonction du(es) fichier(s) que vous avez trouvé dans la distribution :LoadModule ssl_module modules/ApacheModuleSSL.dll
ou
LoadModule ssl_module modules/ApacheModuleSSL.so
ou
LoadModule ssl_module modules/mod_ssl.so
dans les version plus récentes.
--enable-ssh=shared
AddModule mod_ssl.c
après la ligne LoadModule. (Pas nécessaire pour les versions 2.x)
Copiez le fichier
ssl.conf
de distrution OpenSSL dans le répertoire Apache/conf/
.
Pour des Windows, vous pouvez le télécharger à l'adresse
http://www.raibledesigns.com/tomcat/ssl.conf
(clic droit et "Enregistrer la cible sous ...").
Assurez-vous de la copie et changez les valeurs de DocumentRoot
et
de ServerName
aux lignes 93 et 94.Ajoutez ce qui suit à la fin de
httpd.conf
:
# voir http://www.modssl.org/docs/2.4/ssl_reference.html pour plus d'informations
SSLMutex sem
SSLRandomSeed startup builtin
SSLSessionCache none
ErrorLog logs/SSL.log
LogLevel info
# Vous pouvez plus tard changer "info" en "warn" si tout est OK
<VirtualHost www.mon-serveur.com:443>
SSLEngine On
SSLCertificateFile conf/ssl/mon-serveur.cert
SSLCertificateKeyFile conf/ssl/mon-serveur.key
</VirtualHost>
-D SSL
si la directive
IfDefine
est active dans le fichier de configuration !
Autrement dit, soit vous lancez Apache avec -D SSL
en ligne de commande,
soit vous mettez en commentaire les balises IfDefine
(début/fin) dans ssl.conf
.
[error] VirtualHost _default_:443 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
regedit
pour changer la clef
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Group\Apache\X.Y.Z
et la
faire coïncider avec le numéro de la version d'apache.exe
livré avec
modssl.org/contrib
si ce n'est pas la même que celle précédemment installée.
(Cela semble ne pas être nécessaire avec des versions récentes).Lancez le serveur, cette fois à partir d'une ligne de commande (pas comme service) pour voir les messages d'erreur qui empêchent Apache de démarrer. Si TOUT va bien, appuyer (si vous le voulez) sur CTRL+C pour arrêter le serveur et le lancer comme un service si vous préférez.
S'il ne fonctionne pas, Apache doit écrire des messages significatifs à l'écran et/ou dans les fichiers "error.log" et "ssl.log" dans le répertoire
Apache/logs.
Si quelque chose ne fonctionne pas, mettez tout les
LogLevel
au maximum et
examinez les fichiers de log. Ils sont très utiles.NE M'ENVOYEZ PAS de courrier électronique ni à moi, ni à quelque contributeur que ce soit, sans avoir correctement installé Apache (Etape 1). Nous ignorerons votre demande. Nous ne sommes pas le support gratuit d'Apache et il y a assez de bonne documentation sur la configuration d'Apache. Si ce n'est pas suffisant pour vous, vous ne devriez peut-être pas essayé de mettre en place un serveur SSL. De même N'ENVOYEZ PAS de courrier électronique sans avoir examiné les fichiers "error.log" et "ssl.log" avec
LogLevel
positionnez à "Debug".
Ainsi, si vous rencontrez les problèmes en vous connectant via SSL, essayez avec autre navigateur et/ou examinez sa configuration. Si même cela ne marche pas, vous pouvez utiliser OpenSSL pour tenter de résoudre le problème.
NB : Pour des problèmes d'ergonomie de la page, des lignes ont été tronquées. Elle sont signalées par un ¬ au début de la seconde ligne.
bb@www$ openssl s_client -connect no-such-machine:443
gethostbyname failure # Erreur de résolution du nom par le DNS. Connexion via l'adresse IP.
connect:errno=2
bb@www$ openssl s_client -connect www1.tud.at:443
connect: Connection refused
connect:errno=111
# Aucun serveur SSL sur ce port. Vérifiez les directives Listen et Port.
bb@www$ openssl s_client -connect apcenter.apcinteractive.net:443
# Tout est OK. OpenSSL affiche les informations obtenus à partir du serveur.
CONNECTED(00000003)
depth=0 /C=at/ST=Wien/L=Wien/O=APC interactive/OU=Lifecycle¬
¬
Management/CN=apcenter.apcinteractive.net/Email=bb@apcinteractive.net
verify error:num=18:self signed certificate
verify return:1
depth=0 /C=at/ST=Wien/L=Wien/O=APC interactive/OU=Lifecycle¬
¬
Management/CN=apcenter.apcinteractive.net/Email=bb@apcinteractive.net
verify return:1
---
Certificate chain
0 s:/C=at/ST=Wien/L=Wien/O=APC interactive/OU=Lifecycle¬
¬
Management/CN=apcenter.apcinteractive.net/Email=bb@apcinteractive.net
i:/C=at/ST=Wien/L=Wien/O=APC interactive/OU=Lifecycle¬
¬
Management/CN=apcenter.apcinteractive.net/Email=bb@apcinteractive.net
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIC0TCCAjoCAQAwDQYJKoZIhvcNAQEEBQAwgbAxCzAJBgNVBAYTAmF0MQ0wCwYDV
[...]
9ucXUnk=
-----END CERTIFICATE-----
subject=/C=at/ST=Wien/L=Wien/O=APC interactive/OU=Lifecycle¬
¬
Management/CN=apcenter.apcinteractive.net/Email=bb@apcinteractive.net
issuer=/C=at/ST=Wien/L=Wien/O=APC interactive/OU=Lifecycle¬
¬
Management/CN=apcenter.apcinteractive.net/Email=bb@apcinteractive.net
---
No client certificate CA names sent
---
SSL handshake has read 1281 bytes and written 320 bytes
---
New, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
Server public key is 1024 bit
SSL-Session:
Protocol : TLSv1
Cipher : EDH-RSA-DES-CBC3-SHA
Session-ID: 49ACE1CF484A67D2C476B923D52110A6FCA1A7CE53D76DF7F233DEBF2333D4FB
Session-ID-ctx:
Master-Key: 00E9FA964253752294ECD69C18ADBA527B7170C112¬
¬
E2B3BCB25EA8F4FD847EC46E1FF0194EF8E16985B5E38BF6F12131
Key-Arg : None
Start Time: 980696025
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
[Enter:
GET / HTTP/1.0
and press RETURN twice]
HTTP/1.1 200 OK
Date: Sun, 28 Jan 2001 15:34:58 GMT
Server: Apache/1.3.9 (Win32) mod_ssl/2.4.9 OpenSSL/0.9.4
Cache-Control: no-cache, no-store, must-revalidate, private
Expires: 0
Pragma: no-cache
X-Powered-By: PHP/4.0.4
Last-Modified: Sun, 28 Jan 2001 15:35:00 GMT
Connection: close
Content-Type: text/html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
# Le serveur affiche sa page principale
Syntax error on line [some number] of ...httpd.conf
Cannot load apache/modules/mod_ssl.so into server
(126) The module could not be found:
opensll.dll
dans votre
répertoire système (WINNT/SYSTEM32, WINDOWS/SYSTEM, ...) ?Vous pouvez vérifier cela en copiant
openssl.exe
dans répertoire à part et en l'exécutant.
S'il n'arrive par a trouver certaines DLLs, c'est que vous ne les avez donc pas copiés dans les bons répertoires.Un utilisateur m'a dit qu'il avait ce problème même en ayant tout fait correctement. Il a alors trouvé le problème : les DLLs openssl étaient mauvaises. Donc si vous avez toujours cette erreur malgré avoir fait tout correctement, essayez les DLLs d'une autre version d'
modssl.org/contrib
.Question : J'ai le message suivant au démarrage d'Apache :
Syntax error on line [some number] of apache/conf/httpd.conf:
Cannot load apache/modules/apachemodulessl.dll into server:
(127) The specified procedure could not be found:
Syntax error on line [some number] of apache/conf/httpd.conf:
Invalid command 'SSLMutex', perhaps mis-spelled or defined by a module not
included in the server configuration
AddModule
et si oui est-elle au bon endroit (après les autres lignes AddModule
) ?Question : SSL ne marche pas avec mon navigateur et j'ai le message suivant dans le fichier de log :
[Fri Nov 16 15:46:30 2001] [error] OpenSSL: error:1407609C:SSL
routines:SSL23_GET_CLIENT_HELLO:http request [Hint: speaking HTTP to
HTTPS port!?]
Virtual Host
ou Listen
est incorrecte !Si vous avez des besoins particuliers, vous feriez mieux de consulter des serveurs sur Debian GNU/Linux ou OpenBSD. Cela devrait vous économiser beaucoup de peine. Sérieusement !
mod_ssl : http://www.modssl.org/
mod_ssl configuration : http://www.modssl.org/docs/2.4/ssl_reference.html
OpenSSL : http://www.openssl.org/
PHP Hypertext Preprocessor : http://www.php.net/
Auteur de ce document Balázs Bárány (http://tud.at/)
Envoyez moi vos questions, mais uniquement après avoir regardé les fichiers de log avec
LogLevel debug
. Vous pouvez m'écrire en Anglais, en Allemand et en Hongrois.Contribution : Horst Bräuner (Configuration OpenSSL sur NT)
Contribution : Christoph Zich (Windows 98)
Contribution : Torsten Stanienda (Test avec 1.3.12, directive IfDefine)
Contribution : Peter Holm (Directives Listen et Port)