Bonjour
J'essaye de publier mon site web en https sans succès et quand je regarde de plus près j'ai l'impression d'avoir des incohérences ...
Sur Windows 7 32 bits, j'ai installé WampServer 3.1.4. J'ai déclaré mon VirtualHost dans Apache et ai décompacté le fichier.zip fourni pour l'installation de mon CMS (Dolibarr). L'installation se passe bien et à la fin j'ai mon site web qui fonctionne bien en http sur le port 80.
J'ai actuellement sur mon LAN un serveur AD Windows avec le rôle "Accès en tout lieu" configuré qui utilise le port 443, hors de question de changer ce port public sur ce serveur.
J'aurai pu faire fonctionner mon WampServer en local sur le port 443 puis sur mon routeur de natter le 4343 entrant vers le 443 local mais alors je ne vais plus joindre le service web avec la même adresse lorsque je me connecte en local ou depuis l'extérieur, j'imagine que ça va poser problèmes au niveau du site web ... me trompe je ?
J'ai une question pour solder cette réflexion ...
J'ai cru comprendre que le numéro de port ne semblait pas nécessaire à la création d'un certificat SSL. Pouvez vous me confirmer que le certificat pour le site h t t p s : / / site1.mondomaine.fr est le même que pour le site h t t p s : / / site1.mondomaine.fr:4343 ?
(Çà contredirait ce que je dis plus haut)
J'ai ajouter un "listen port à Apache" dans WampManager pour utiliser le port 4343.
Ok, mon site1 ainsi que les utilitaires habituels (phpmyadmin, ...) fonctionnent en http sur le port 4343.
Le nom de mon VirtualHost dans Apache est de la forme h t t p : / / site1.mondomaine.fr:4343, j'ai natté le port TCP 4343 entrant et ajouté un enregistrement dans mon DNS AD, le site est accessible via cette adresse en interne comme depuis l'extérieur.
J'ai créé un second VirtualHost dans Apache avec un nom de la forme h t t p : / / site2.mondomaine.fr:4343 dans le quel j'ai déployé un site qui fonctione en interne comme en externe. Il est prévu d'avoir un site3.
Dans une fenêtre de commande, httdp -t me renvoie une Syntaxe correcte.
Je souhaite passer maintenant au httpS sur le port 4343.
J'ai bien lu l'excellent tuto h t t p s ://chez-oim.org/index.php?topic=1980.0 que j'essaye de le mettre en oeuvre ...
J'ai créé un certificat un certificat wildcart via authentification DNS.
J'ai modifié diverses lignes dans ma config Wamp pour l'intégrer.
A la fin, je peux toujours naviguer le site1 en http mais en httpS j'ai une erreur :
Une erreur est survenue pendant une connexion à site1.mondomaine.fr:4343. SSL a reçu un enregistrement qui dépasse la longueur maximale autorisée. Code d’erreur : SSL_ERROR_RX_RECORD_TOO_LONG
Pour cette erreur, la doc Apache me dit : Le module d'Apache est activée mais son vhost est absent ou sa configuration ne contient pas SSLEngine on.
Si si SSLEngine est bien donné On !
Plus bas mes fichiers complets.
J'ai bien SSLEngine on, SSLCertificateFile et SSLCertificateKeyFile déclaré dans httpd-ssl.conf. J'imagine qu'il s'applique à tous les sites ... me trompe ? J'ai essayé en déplacant ces lignes dans chaque VirtualHost de httpd-vhost.conf mais Apache ne démarre plus :-( Je me dis que vu que le certificat est wildcard ça devrait aller mais non.
Toujours dans httpd-ssl.conf, j'ai en première ligne un "Listen 443" qui me froisse un peu mais si je change pour 4343 Apache ne démarre plus :-(
Pouvez vous me dire ce qui pose problème dans ma configuration ou dans ma réflexion ?
Je vous remercie pour l'aide que vous m'apporterez.
@+Laurent
Mon fichier httpd-ssl.conf (j'ai supprimé tous les commentaires)
Listen 443
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLHonorCipherOrder on
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:${SRVROOT}/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
<VirtualHost _default_:4343>
DocumentRoot "C:/SitesWeb/Dolibarr"
ServerName gestionco.a2systemes.fr:4343
ServerAdmin admin@example.com
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
SSLEngine on
SSLCertificateFile "${SRVROOT}/conf/cert/certificat.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/key/cle.key"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "${INSTALL_DIR}/www">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "${SRVROOT}/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
---------------------------------------
Mon fichier httpd-vhost.conf
<VirtualHost *:80>
ServerName localhost
ServerAlias localhost
DocumentRoot "${INSTALL_DIR}/www"
<Directory "${INSTALL_DIR}/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
<VirtualHost *:${MYPORT4343}>
ServerName site1.mondomaine.fr
DocumentRoot "C:/SitesWeb/Dolibarr"
<Directory "C:/SitesWeb/Dolibarr/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:${MYPORT4343}>
ServerName site2.mondomaine.fr
DocumentRoot "C:/SitesWeb/suitecrm"
<Directory "C:/SitesWeb/suitecrm/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
Commence donc simplement avec la config minimale.
Après, tu ajouteras tes trucs.
ATTENTION ! Il s'agit d'une config complétement pourrie récupérée d'après ton boulot et qu'il ne faut surtout pas utiliser sur un site en production !
Listen 4343
<VirtualHost *:4343>
DocumentRoot "C:/SitesWeb/Dolibarr"
ServerName gestionco.a2systemes.fr:4343
ServerAdmin admin@example.com
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
SSLEngine on
SSLCertificateChainFile "${SRVROOT}/conf/cert/certificat.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/key/cle.key"
</VirtualHost>
SSLProtocol all -SSLv3
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLHonorCipherOrder on
SSLSessionCache shmcb:C:/Windows/Temp/ssl_scache(512000)
SSLSessionCacheTimeout 300
Fais attention aux directives SSLCertificateChainFile qui désigne un certificat en contenant deux, le tien et celui de l'autorité.
Et SSLCertificateFile qui ne contient que ton certificat et doit être accompagné du certificat de l'autorité avec la directive SSLCACertificateFile
Pour répondre à ta question, un certificat fonctionne sur n'importe quel port.
Pourquoi ne pas utiliser le port 443 ?
Tu te compliques la vie pour pas grand chose...
Pfouaaaaa !
Faut pas t'en faire.
Pour obtenir une aide dans ta config, c'est très bien. Mais pour en savoir plus, il faut aller sur la documentation Apache.
De toute façon, que ce soit en Apache, PHP, SQL, Postfix, etc... la documentation doit être ton guide ! C:-)
Comme on voit souvent sur les forums : RTFM. Ce qui veut dire, Read The Fuck Manual ou, en français, Lis cette putain de documentation.
Parce-que certains posent souvent des questions dont la réponse est dans le manuel/documentation...
Je gère les ports et les protocoles par hôte :(
Mais comment tu fais pour gérer tes accès par nom d'hôte ? :-\
C'est des URLs du type http://example.com/index.php?token=546456785 ???
Sinon, je ne vois pas. :iz:
Perso, sur mon serveur local, j'interdis toutes les IPs et ensuite j'autorise certaines IPs.
Ca se présente comme ça :
Require all denied
require ip 127.0.0.0/8
require ip ::1
require ip 192.168.0.0/16
require ip 147.123.147.123
Je te retrouve tout à l'heure. ;)