web-dev-qa-db-fra.com

Comment utiliser https (SSL) dans XAMPP avec des hôtes virtuels

Je suis en train d'écrire une application php sur ma machine locale et j'aimerais tester si le protocole SSL fonctionne. Oubliez-moi, car c'est la première fois que j'utilise SSL.

Jusqu'ici c'est ce que j'ai fait:

  1. Créé un certificat SSL. J'ai suivi la première partie de ce this tutoriel pour créer le certificat.
  2. J'ai importé le fichier server.crt En chrome.
  3. Suppression du point-virgule devant ;extension=php_openssl.dll Dans php.ini ( référence )
  4. Edité mon fichier httpd-vhosts.conf Basé sur this page. La section pertinente de ce fichier est ci-dessous. Ceci est le fichier complet: http://Pastebin.com/k6Jh2eR6
    <VirtualHost *>
        DocumentRoot "C:\Users\user_name\Documents\project_one"
        ServerName project_one.localhost
        SSLEngine on
        SSLCertificateFile "conf/ssl.crt/server.crt"
        SSLCertificateKeyFile "conf/ssl.key/server.key"
        <Directory "C:\Users\user_name\Documents\project_one">
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
    

J'accède habituellement à mon projet en tapant http://project_one.localhost

Lorsque j'essaie d'accéder à mon projet en tapant https://project_one.localhost Dans chrome je suis automatiquement redirigé vers https://project_one.localhost/xampp/ (Comme si XAMPP ne 'reconnait pas https://project_one.localhost comme un sous-domaine et le traite comme si je tapais dans https://localhost) Avez-vous une idée de l'endroit où je me trompe?

REMARQUE:

  • LoadModule ssl_module modules/mod_ssl.so N'a pas été commenté dans le fichier httpd.conf
42
Zaki Aziz

SSL, du HTTPS://url.here/ _ Variété, est entièrement géré par Apache et n’a rien à voir avec PHP, ni avec aucun de ses extensions/modules, ni avec aucun paramètre de php.ini.

Un VirtualHost SSL Activé typique ressemble à ceci et contient au moins ces parties ...

<VirtualHost *:443>
    DocumentRoot "C:/WampDeveloper/Websites/www.example.com/webroot"
    ServerName www.example.com
    ServerAlias example.com

    SSLEngine On

    SSLCertificateFile "C:/WampDeveloper/Websites/www.example.com/certs/public.crt"
    SSLCertificateKeyFile "C:/WampDeveloper/Websites/www.example.com/certs/private.key"

    <Directory "C:/WampDeveloper/Websites/www.example.com/webroot">
        Options All
        AllowOverride All
        order allow,deny
        allow from all
    </Directory>

</VirtualHost>

(Les chemins ci-dessus sont issus de ma configuration WampDeveloper Pro, celle de Xampp sera légèrement différente)

Votre <VirtualHost *> la ligne est défectueuse. Il faut un numéro de port, toujours 443 pour une URL HTTPS: //, associé à une adresse IP ou à une étoile. Et si vous utilisez une étoile, un NameVirtualHost *:443 ligne...

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
    DocumentRoot "C:\xampp\htdocs"
    ServerName localhost
</VirtualHost>
<VirtualHost *:443>
    DocumentRoot "C:\Users\user_name\Documents\project_one"
    ServerName project_one.localhost
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"
    <Directory "C:\Users\user_name\Documents\project_one">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "C:\Users\user_name\Documents\project_two"
    ServerName project_two.localhost
    <Directory "C:\Users\user_name\Documents\project_two">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
39
rightstuff

C'est peut-être une vieille question, mais je mets ma réponse ici quand même pour référence future

je suis avec XAMPP 3.2.1, compilé le 7 mai 201

pour activer VirtualHost avec SSL en même temps, voici ce que j'ai fait. (J'utilise Windows 7)

  1. votre fichier windows Host doit déjà être configuré
  2. Aller à httpd-ssl.conf situé à xampp\Apache\conf\extra

Je viens de copier le _default_virtualhost et ajouté ma config. J'ai supprimé tous les commentaires pour le plus court et ai collé ceci juste en dessous de la valeur par défaut virtualHost il suffit de changer le DocumentRoot et servername puis de redémarrer Apache.

<VirtualHost *:443>
    DocumentRoot "***path/to/your/project}***"
    ServerName ***yourdomain***
    ServerAdmin [email protected]
    ErrorLog "C:/xampp/Apache/logs/error.log"
    TransferLog "C:/xampp/Apache/logs/access.log"
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory "C:/xampp/Apache/cgi-bin">
        SSLOptions +StdEnvVars
    </Directory>

    BrowserMatch "MSIE [2-5]" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0

    CustomLog "C:/xampp/Apache/logs/ssl_request.log" \
              "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
7
tomexsans

Voici une étape simple.

  1. Allez à C:\xampp\Apache\conf

Ouvrir httpd.conf

Et activer les extensions ssl (Supprimer # de la ligne)

LoadModule ssl_module modules/mod_ssl.so
  1. Allez à C:\xampp\Apache\conf\extra

Ouvrir httpd-vhosts.conf

Ajouter de nouveaux hôtes virtuels ou modifier des serveurs existants

<VirtualHost *:443>   
        DocumentRoot "C:/xampp/htdocs/PROJECTNAME" 
        ServerName www.pl.f24sdev.com
        <Directory C:/xampp/htdocs/PROJECTPATH>
                AllowOverride All
                Order Deny,Allow   
                Allow from all  
        </Directory>
        SSLEngine on
        SSLCertificateFile "conf/ssl.crt/server.crt"
        SSLCertificateKeyFile "conf/ssl.key/server.key"   
</VirtualHost>
6
Kroonal

Quelle version d'Apache utilisez-vous? NameVirtualHost n'est pas disponible dans la version 2.4.

Décommentez la ligne Include conf/extra/httpd-ssl.conf dans httpd.conf et ajoutez le contenu suivant (corrigez les chemins en fonction du chemin de xampp). Cela permettra à https://localhost

<IfModule ssl_module>
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crlss phrase on stdout.
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:E:/PROGRA\~1/AMPPS/Apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300
Mutex default

<VirtualHost _default_:443>
DocumentRoot "E:/Program Files/AMPPS/www"
ServerName localhost:443
ServerAdmin [email protected]
ErrorLog "E:/Program Files/AMPPS/Apache/logs/ssl_error.log"
TransferLog "E:/Program Files/AMPPS/Apache/logs/ssl_access.log"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "E:/Program Files/AMPPS/Apache/conf/ssl_crt/server.crt"
#SSLCertificateFile "E:/Program Files/AMPPS/Apache/conf/server-dsa.crt"
SSLCertificateKeyFile "E:/Program Files/AMPPS/Apache/conf/ssl_key/server.key"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "E:/Program Files/AMPPS/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>
BrowserMatch ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog "E:/Program Files/AMPPS/Apache/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>
</IfModule>

Si vous voulez que d'autres domaines comme project_one.localhost aient une connexion http sécurisée, ajoutez le virtualhost suivant dans httpd.conf ou httpd-vhosts.conf (doit être inclus dans httpd.conf)

<IfModule ssl_module>

<VirtualHost 127.0.0.1:443>
<Directory "e:/program files/ampps/www/project_one.localhost">
Options FollowSymLinks Indexes
AllowOverride All
Order deny,allow
allow from All
</Directory>
ServerName project_one.localhost
ServerAlias project_one.localhost
ScriptAlias /cgi-bin/ "e:/program files/ampps/www/project_one.localhost/cgi-bin/"
DocumentRoot "e:/program files/ampps/www/project_one.localhost"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "E:\Program Files\AMPPS/Apache/conf/ssl_crt/project_one.localhost.crt"
SSLCertificateKeyFile "E:\Program Files\AMPPS/Apache/conf/ssl_key/project_one.localhost.key"
ErrorLog "E:/Program Files/AMPPS/Apache/logs/project_one.localhost_ssl_error.log"
TransferLog "E:/Program Files/AMPPS/Apache/logs/project_one.localhost_ssl_access.log"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "e:/program files/ampps/www/project_one.localhost/cgi-bin/">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch ".*MSIE.*" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
CustomLog "E:/Program Files/AMPPS/Apache/logs/project_one.localhost_ssl_request.log" \
    "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfModule>

Remarque: vous devrez ajouter une entrée dans le fichier hosts127.0.0.1 project_one.localhost

3
Jigar