Comment autoriser HTTPS pour Apache sur localhost?

193

On m'a demandé de configurer HTTPS avec un certificat auto-signé sur Apache sur localhost, mais comment puis-je faire cela? Je n'ai aucune idée du tout.

KennC.
la source
1
Utilisez Serveo ! ssh -R youruniquesubdomain:80:localhost:3000 serveo.netEntrez votre sous-domaine et votre numéro de port et vous êtes prêt à continuerhttps://youruniquesubdomain.serveo.net
totymedli

Réponses:

135

Je viens de tenter ceci - j'avais besoin de tester du code de développement sur mon hôte local Apache sous Windows . C'était WAAAY plus difficile qu'il ne devrait l'être. Mais voici les étapes qui ont réussi à fonctionner après beaucoup d'épilation ...

J'ai trouvé que mon installation Apache est fournie, openssl.exece qui est utile. Si vous n'avez pas de copie, vous devrez la télécharger. Ma copie était dans le Apache2\bindossier, c'est ainsi que je la référence ci-dessous.

Pas:

  1. Assurez-vous que vous disposez des autorisations d'écriture sur votre dossier Apache conf
  2. Ouvrez une invite de commande dans le Apache2\confdossier
  3. Type
    ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
  4. Vous pouvez laisser toutes les questions vides sauf:

    • PEM Passphrase: un mot de passe temporaire tel que "mot de passe"
    • Nom commun: le nom d'hôte de votre serveur

  5. Lorsque cela est terminé, tapez
    ..\bin\openssl rsa -in blarg.pem -out blarg.key

  6. Générez votre certificat auto-signé en tapant:
    ..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365

  7. Ouvrez le conf\httpd.conffichier Apache et assurez-vous que le module SSL est activé - il ne devrait y avoir aucun hachage au début de cette ligne:
    LoadModule ssl_module modules/mod_ssl.so

  8. Certaines installations Apache placent la configuration SSL dans un fichier séparé. Si tel est le cas, assurez-vous que le fichier de configuration SSL est inclus. Dans mon cas, j'ai dû décommenter cette ligne:
    Include conf/extra/httpd-ssl.conf

  9. Dans la configuration SSL, httpd-ssl.confj'ai dû mettre à jour les lignes suivantes:

    • Mettre
      SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"
      à jour vers
      SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
      (Les crochets dans le chemin confondent le module, nous devons donc les échapper)
    • DocumentRoot - définissez ceci dans le dossier de vos fichiers Web
    • ServerName - le nom d'hôte du serveur
    • SSLCertificateFile "conf/blarg.cert"
    • SSLCertificateKeyFile "conf/blarg.key"

  10. Redémarrez Apache.

  11. Essayez de charger https://localhost/dans votre navigateur.

J'espère que vous êtes arrivé jusqu'ici. N'hésitez pas à mettre à jour cet article avec toute autre information utile.

(Captures d'écran fournies par Neil Obremski et son article utile - bien que maintenant assez obsolète.)

Simon
la source
2
Merci. J'ai également dû modifier les directives ErrorLog, TransferLog et CustomLog en chemins valides, sinon Apache ne démarrerait pas.
Tamlyn
1
Pour une raison quelconque, les instructions ne fonctionnent plus ou sont incomplètes
Jacobian
6
J'ai également dû décommenter ce qui suit dans mon httpd.conf pour que cela fonctionne: LoadModule socache_shmcb_module modules / mod_socache_shmcb.so
erik
1
J'ai fait deux autres étapes pour le faire fonctionner, ajouter le module LoadModule socache_shmcb_module modules / mod_socache_shmcb.so et dans httpd-ssl.conf je corrige le chemin du journal ssl à la ligne 250, CustomLog ".apache24 / logs / ssl_request.log" \
Wasim A .
5
Afin de générer les fichiers .pem et .key, j'ai dû définir 2 variables d'environnement à l'étape 2: définissez OPENSSL_CONF = C: \ path \ to \ apache \ Apache2.4.4 \ conf \ openssl.cnf set RANDFILE = C: \ chemin \ vers \ apache \ Apache2.4.4 \ conf \ .rnd
eosphere
57

J'utilise ngrok ( https://ngrok.com/ ) pour cela. ngrok est un outil de ligne de commande et crée un tunnel pour localhost. Il crée à la fois une connexion http et https. Après l'avoir téléchargé, la commande suivante doit être exécutée:

ngrok http 80

(Dans la version 2, la syntaxe est: ngrok http 80. Dans la version 2, n'importe quel port peut être tunnelé.)

Après quelques secondes, il donnera deux URL:

http://a_hexadecimal_number.ngrok.com
https://a_hexadecimal_number.ngrok.com

Désormais, les deux URL pointent vers l'hôte local.

sudip
la source
1
@sudip, est-ce que le code open source de ngrok fonctionne de telle manière que nous pouvons l'héberger sur notre propre serveur sans modification? Sinon, c'est à peu près un showstopper car il n'est pas correct de rediriger les demandes des utilisateurs vers un hôte externe comme ngrok.
Pacerier
2
@Pacerier Je n'ai pas l'intention de l'utiliser sur le serveur. Je l'utilise sur localhost (Bcz mon fournisseur de réseau me donne une adresse IP dynamique). Je l'ai utilisé pour la première fois pour les tests IPN paypal et cela a parfaitement fonctionné. Je me demande pourquoi quelqu'un va l'utiliser sur le serveur et dans quel but.
sudip
@sudip, Le but est évident, Permettre au code qui fonctionne sur HTTP de fonctionner également avec HTTPS sans codage supplémentaire nécessaire.
Pacerier
1
Bien que cela soit utile, il semble incroyablement peu sûr d'autoriser l'accès à votre machine de développement à Internet ouvert. Utiliser quelque chose comme celui-ci vous ferait virer un employeur soucieux de la sécurité.
Andy M
@YumYumYum. Il était complètement gratuit auparavant dans la version 1. Mais, les ports http et https sont toujours libres dans la version 2 (je ne sais pas s'il existe une restriction de port). Vérifiez le plan gratuit ici: ngrok.com/product#pricing
sudip
24

voici le moyen le plus simple de le faire

copiez d'abord ces fichiers server.crt & server.key (à trouver en pièce jointe) dans votre répertoire apache / conf / ssl

puis ouvrez le fichier httpd.conf et ajoutez la ligne suivante

Listen 80
Listen 443

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:443>
    DocumentRoot "d:/wamp/www"  #your wamp www root dir
    ServerName localhost
    SSLEngine on
    SSLCertificateFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.crt"
    SSLCertificateKeyFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.key"
</VirtualHost>
Anil Gupta
la source
3
J'ai dû activer également le module LoadModule ssl_module libexec / apache2 / mod_ssl.so dans le (/etc/apache2/httpd.conf)
Alexey
17
Je me demande à quel point le téléchargement de fichiers * .crt * .key est sûr / dangereux à partir de sources non fiables au lieu de générer les vôtres.
Petr Peller
4
@PetrPeller, nous mettons en place https pour le développement local, alors pourquoi se demander sûr / dangereux
Anil Gupta
7
Une explication sur la façon de générer ces fichiers serait formidable. Parce que télécharger des fichiers à partir d'une source inconnue est une mauvaise pratique, mais aussi parce que ce type de liens se rompra à un moment donné.
Stephan Vierkant
2
Ce tutoriel est très bien digitalocean.com/community/tutorials
...
13

Afin de protéger la sécurité des informations envoyées vers et depuis votre serveur Web, il est judicieux d'activer le cryptage de la communication entre les clients et le serveur. Ceci est souvent appelé SSL .

Alors configurons HTTPS avec un certificat auto-signé sur Apache2. Je vais énumérer les étapes à suivre:

  • Installez le serveur Web apache2 sur votre machine. Pour la machine Linux, ouvrez le terminal et tapez

sudo apt-get installer apache2

  • Après une installation réussie, vérifiez l'état du service apache2 en exécutant la commande

état apache2 du service sudo

Il devrait sortir

état du service apache2

  • Accédez au navigateur et tapez

http: // localhost: 80

Vérifiez que vous obtenez la page par défaut pour apache2 comme ceci.

sortie par défaut d'apache2

  • Pour crypter une connexion Web, nous avons besoin d'un certificat de CA (autorité de certification) ou nous pouvons utiliser des certificats auto-signés. Créons un certificat auto-signé à l'aide de la commande suivante.

openssl req -x509 -newkey rsa: 2048 -keyout mykey.key -out mycert.pem -days 365 -nodes

Veuillez remplir les informations en conséquence comme indiqué ci-dessous.

créer un certificat auto-signé avec openssl

mykey.key et mycert.pem doivent être créés dans votre répertoire de travail actuel.

  • Ce serait bien de déplacer les certificats et les clés à un endroit commun et il sera facile pour le serveur Web apache2 de les trouver. Alors exécutons les commandes suivantes

sudo cp mycert.pem / etc / ssl / certs

sudo cp mykey.key / etc / ssl / private

  • Activons le mode SSL sur votre serveur

sudo a2enmod ssl

Il devrait sortir comme ça

activer ssl

  • Configurons apache2 pour utiliser le certificat et la clé auto-signés que nous avons générés ci-dessus.

sudo vi /etc/apache2/sites-available/default-ssl.conf

Veuillez trouver ces deux lignes et les remplacer par vos chemins cert et key.

Initiale

default-conf

Final

après les changements de configuration

  • Activer le site

cd / etc / apache2 / sites-disponibles /

sudo a2ensite default-ssl.conf

  • Redémarrez le service apache2

redémarrage du service sudo apache2

  • Vérifiez le serveur Web Apache2 sur HTTPS. Ouvrez à nouveau votre navigateur et saisissez

https: // localhost: 443

Il devrait afficher quelque chose comme celui-ci avec un avertissement que la page que vous êtes sur le point de consulter n'est pas sécurisée car nous avons configuré le serveur avec un certificat auto-signé.

entrez la description de l'image ici

  • Félicitations, vous avez configuré votre apache2 avec un point de terminaison HTTPS, cliquez maintenant sur avancé -> ajouter une exception -> confirmer l'exception de sécurité , vous verrez à nouveau la page par défaut.

page après l'ajout d'une exception

Dinesh Kumar
la source
Je préfère ne modifier aucun fichier de configuration si je peux, donc je suis parti default-ssl.conftel quel. J'étais sur le point de renommer mycertpour , ssl-cert-snakeoilmais ce fichier existe déjà si je viens d' utiliser ça! J'ai donc pu sauter en toute sécurité deux étapes sur Debian.
Rolf
@Rolf Je suis d'accord avec vous mais en production, c'est toujours le cas d'utiliser un nouveau certificat et une nouvelle clé. Donc, juste pour montrer comment ils peuvent être créés, j'ai ajouté 2 étapes supplémentaires pour Debian. Merci :)
Dinesh Kumar
Puis-je ajouter mon certificat auto-signé en tant qu'autorité de certification, pour éviter de voir des avertissements?
Aaron Franke
9

Windows + Apache 2.4, par exemple:

  1. décommentez ssl_module dans votre httpd.conffichier.

    LoadModule ssl_module modules/mod_ssl.so
    
  2. écoutez le port 443 tout comme le port 80 dans votre httpd.conffichier.

    Listen 80
    Listen 443
    
  3. uncomment Inclure les hôtes virtuels dans votre httpd.conffichier.

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    
  4. ajoutez VirtualHost dans votre conf/extra/httpd-vhosts.conf

    <VirtualHost _default_:443>
        DocumentRoot "D:/www"  #your site directory path
        ServerName localhost
        #ServerAlias localhost.com localhost2.com
        SSLEngine on
        SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt"
        SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key"
        <Directory "D:/www">
            Options -Indexes +FollowSymLinks +ExecCGI
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    

seulement le numéro de port 443etSSL...... lignes sont différents de la configuration http normale.

enregistrez votre fichier de configuration et redémarrez le service apache. alors vous pouvez visiter https: // localhost /

Le navigateur Web vous avertira que ce n'est pas sûr la première fois, choisissez simplement continuer.

cuixiping
la source
Cela a fonctionné pour moi sur XP Home, Apache 2.4. Copie des 2 fichiers de certificat du post précédent (par Anil Gupta). Mod_ssl non commenté et inclus httpd-vhosts.conf dans httpd.conf, ajout de la directive VirtualHost d'Anil Gupta (avec quelques chemins ajustés) dans httpd-vhosts.conf.
jogi99
7

C'est en fait assez simple, en supposant que vous ayez une installation openssl à portée de main. (Sur quelle plateforme êtes-vous?)

En supposant que vous soyez sous linux / solaris / mac os / x, le mini-HOWTO Apache SSL / TLS de Van a une excellente procédure que je ne reproduirai pas ici.

Cependant, le résumé analytique est que vous devez créer un certificat auto-signé. Puisque vous exécutez apache pour localhost vraisemblablement pour le développement (c'est-à-dire pas un serveur Web public), vous saurez que vous pouvez faire confiance au certificat auto-signé et ignorer les avertissements que votre navigateur vous lancera.

Pete Clark
la source
Salut, je travaille sur le système d'exploitation Windows. Et quant au certificat auto-signé, dois-je le télécharger ou par tout autre moyen?
KennC.
3
Nan. Vous créerez vous-même le certificat auto-signé. Avez-vous la configuration apache httpd + ssl? Vous aurez besoin du ssl pour ce faire. Ce site: rubayathasan.com/tutorial/apache-ssl-on-windows a de bonnes informations sur la mise en route de ssl sous Windows. Vous ferez du travail en ligne de commande, mais c'est bon pour vous quand même. :-)
Pete Clark
3
Les liens sont morts :(
kpuccino
Ouais - ça a l'air d'être mort. C'est Internet pour vous ... Cependant, le lien vers le Wiki CentOS ci-dessous référencé par @kayakinkoder est également bon: wiki.centos.org/HowTos/Https Si vous êtes sur un mac, cet article semble également raisonnable: gist. github.com/nrollr/4daba07c67adcb30693e
Pete Clark
4

Cela devrait fonctionner Ubuntu, Mint similaire avec Apache2

C'est un bon guide, alors suivez ceci

https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04

et en laissant votre ssl.conf comme ceci ou similaire

<VirtualHost _default_:443>
        ServerAdmin [email protected]
        ServerName localhost
        ServerAlias www.localhost.com

        DocumentRoot /var/www


    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Tu peux l'avoir.

J'espère que cette aide pour linuxer

ackuser
la source
3

Mise à jour 2020

Je poste cette réponse car j'ai eu du mal avec cela moi-même et Chrome a mis à jour sa sécurité en exigeant un autre nom de sujet que beaucoup de messages n'ont pas car il n'était pas nécessaire lorsqu'ils ont été publiés comme réponse. Je suppose que WAMP est déjà installé.

ÉTAPE 1

Télécharger OpenSSL Light et installez


** ÉTAPE 2 (facultatif) **

Bien que cette partie soit facultative, elle facilite l'exécution des commandes par la suite. Si vous ignorez cette étape, vous devrez fournir le chemin d'accès complet à openssl.exe où vous exécuterez la commande. Si vous préférez le définir, mettez à jour le chemin openssl.exe dans Variables d'environnement.

Variables d'environnement -> Variables système -> Chemin -> Modifier -> Nouveau -> c: \ Program Files \ OpenSSL-Win64 \ bin


**ÉTAPE 3**

Créez un dossier nommé «clé» dans le c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/répertoire.

Créez un fichier de configuration pour votre CA MyCompanyCA.cnf avec le contenu (vous pouvez le modifier selon vos besoins):

[ req ]
distinguished_name  = req_distinguished_name
x509_extensions     = root_ca

[ req_distinguished_name ]
countryName             = Country Name (2 letter code)
countryName_min         = 2
countryName_max         = 2
stateOrProvinceName     = State or Province Name (full name)
localityName            = Locality Name (eg, city)
0.organizationName      = Organization Name (eg, company)
organizationalUnitName  = Organizational Unit Name (eg, section)
commonName              = Common Name (eg, fully qualified host name)
commonName_max          = 64
emailAddress            = Email Address
emailAddress_max        = 64

[ root_ca ]
basicConstraints            = critical, CA:true

Créez le fichier de configuration des extensions MyCompanyLocalhost.ext pour votre certificat de serveur Web:

subjectAltName = @alt_names
extendedKeyUsage = serverAuth

[alt_names]
DNS.1   = localhost
DNS.2   = mycy.mycompany.com

**ÉTAPE 4**

Exécutez ces commandes dans l'ordre indiqué pour générer la clé et les certificats:

openssl req -x509 -newkey rsa:2048 -out MyCompanyCA.cer -outform PEM -keyout MyCompanyCA.pvk -days 10000 -verbose -config MyCompanyCA.cnf -nodes -sha256 -subj "/CN=MyCompany CA"
openssl req -newkey rsa:2048 -keyout MyCompanyLocalhost.pvk -out MyCompanyLocalhost.req -subj /CN=localhost -sha256 -nodes
openssl x509 -req -CA MyCompanyCA.cer -CAkey MyCompanyCA.pvk -in MyCompanyLocalhost.req -out MyCompanyLocalhost.cer -days 10000 -extfile MyCompanyLocalhost.ext -sha256 -set_serial 0x1111

En conséquence, vous aurez les fichiers MyCompanyCA.cer , MyCompanyLocalhost.cer et MyCompanyLocalhost.pvk .


** ÉTAPE 5 **

Installez MyCompanyCA.cer sous

Panneau de configuration -> Gérer les certificats utilisateur -> Autorités de certification racines de confiance -> Certificats

Pour installer MyCompanyLocalhost.cer, double-cliquez dessus.


** ÉTAPE 6 **

Ouvrez c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/httpd.confet dé-commentez (supprimez le #) les 3 lignes suivantes:

LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

** ÉTAPE 7 **

Ouvrez c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.confet remplacez tous les paramètres par ceux indiqués ci-dessous:

Directory "c:/wamp64/www"
DocumentRoot "c:/wamp64/www"
ServerName localhost:443
ServerAdmin [email protected]
ErrorLog "c:/wamp64/bin/apache/apache2.4.27/logs/error.log"
TransferLog "c:/wamp64/bin/apache/apache2.4.27/logs/access.log"
SSLCertificateFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.cer"
SSLCertificateKeyFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.pvk"
SSLSessionCache "shmcb:c:/wamp64/bin/apache/apache2.4.27/logs/ssl_scache(512000)"
CustomLog "c:/wamp64/bin/apache/apache2.4.27/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

Remarque: c'est la partie la plus délicate. Si vous faites une petite erreur lors de l'édition de ce fichier, SSL ne fonctionnera pas. Faites-en une copie avant de le modifier.


** ÉTAPE 8 **

Redémarrez Wamp et Chrome. Localhost est maintenant sécurisé: https: // localhost

CodeWarrior
la source
Avez-vous un guide pour Linux?
Aaron Franke le
Malheureusement, non.
CodeWarrior
2

C'est très simple,

lancez simplement les commandes suivantes

sudo a2enmod ssl

sudo service apache2 restart

sudo a2ensite default-ssl.conf

Voilà, vous avez terminé.

Si vous souhaitez forcer SSL (pour toujours utiliser https), modifiez le fichier:

sudo nano /etc/apache2/sites-available/000-default.conf

et ajoutez cette ligne

<VirtualHost *:80>
        . . .

        Redirect "/" "https://your_domain_or_IP/"

        . . .
</VirtualHost>

puis recommencez

sudo service apache2 restart
Moh .S
la source
Et vous devez courir systemctl reload apache2après sudo a2ensite default-ssl.conf.
jusqu'au
1

Ce guide pratique pour CentOS était facile à suivre et ne prenait qu'environ 5 minutes: https://wiki.centos.org/HowTos/Https

Je ne détaillerai pas chaque étape ici, mais les principales étapes sont:

1.) Installez le module openssl pour apache, s'il n'est pas déjà installé

2.) Générez un certificat auto-signé

- À ce stade, vous devriez pouvoir visiter https: // localhost avec succès

3.) Configurez un hôte virtuel si nécessaire

KayakinKoder
la source
1

Cela a fonctionné sur Windows 10 avec Apache24:

1 - Ajoutez ceci au bas de C:/Apache24/conf/httpd.conf

Listen 443
<VirtualHost *:443>
    DocumentRoot "C:/Apache24/htdocs"
    ServerName localhost
    SSLEngine on
    SSLCertificateFile "C:/Apache24/conf/ssl/server.crt"
    SSLCertificateKeyFile "C:/Apache24/conf/ssl/server.key"
</VirtualHost>

2 - Ajoutez les fichiers server.crtet server.keydans le C:/Apache24/conf/ssldossier. Voir les autres réponses sur cette page pour trouver ces 2 fichiers.

C'est tout!

jogi99
la source
Oui, cela fonctionne. J'ai utilisé l'étape 1 - 3 de StephanieQ pour générer le certificat et ensuite "openssl x509 -req -in server.csr -signkey server.key -out server.crt" pour générer le fichier * .crt avec cygwin.
b3wii
Je n'ai pas de httpd.conffichier, dans quel fichier dois-je le mettre? Voici ce qui se passe lorsque je mets ce texte à l'intérieur apache2.conf:Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
Aaron Franke
1

tl; dr

ssh -R youruniquesubdomain:80:localhost:3000 serveo.net

Et votre environnement local est accessible sur https://youruniquesubdomain.serveo.net

Serveo est le meilleur

  • Aucune inscription.
  • Aucune installation.
  • A HTTPS.
  • Accessible dans le monde entier.
  • Vous pouvez spécifier un correctif personnalisé, sous-domaine.
  • Vous pouvez l'héberger vous-même, vous pouvez donc utiliser votre propre domaine et être à l'épreuve du temps, même si le service tombe en panne.

Je ne pouvais pas croire quand j'ai trouvé ce service. Il offre tout et c'est le plus simple à utiliser. S'il y avait un outil aussi simple et indolore pour chaque problème ...

totymedli
la source
Cela ne fonctionne plus en 2020, la page se charge pour toujours. Cependant, pour une raison quelconque, la commande SSH fonctionne toujours ...?
Aaron Franke le
1

Exécuter Apache sur Windows 10 ici. Je n'ai pas pu faire en sorte que Chrome fasse confiance au certificat créé dans la première réponse de Simon. J'ai fini par utiliser PowerShell pour générer un certificat auto-signé.

Étape 1 - Générer un certificat auto-signé

Dans PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My" 1

Étape 2 - Configurer et exporter le certificat

Tapez Certificatedans la barre de recherche Windows, cliquez sur l' Manage Computer Certificatesélément du panneau de configuration qui est suggéré.

Depuis le programme de gestion des certificats qui apparaît (certlm), vous devriez maintenant voir une localhostclé sous Personal >> Certificates.

J'ai copié ce certificat dans Trusted Root Certification Authorities. Je serai honnête en ce sens que je ne suis pas sûr que ce soit nécessaire.

En sélectionnant le certificat nouvellement copié, double-cliquez dessus (le certificat localhost). Dans le modal Certificat, cliquez sur l' Detailsonglet, puis sur le Copy to File...bouton.

Cela fera apparaître et Assistant d'exportation, j'ai choisi d'exporter la clé privée, cliquez sur Suivant. J'ai également choisi de Export all extended properties(encore une fois, je ne suis pas sûr que c'était nécessaire). J'ai choisi d'utiliser un mot de passe simple ( pass) et le cryptage par défaut. Choisissez un dossier vers lequel exporter et nommez le fichier. Vous pouvez toujours déplacer et renommer le fichier si nécessaire. Par souci de simplicité, copions-le dans votre dossier conf sous votre installation Apache (dans mon cas :) C:\apache\confet nommez le fichier myCert(le fichier résultant sera un .pfxfichier)

Étape 3 - Convertir le .pfxfichier pour une utilisation avec Apache

De là, j'ai essentiellement suivi le tutoriel ici , mais j'ajouterai des instructions ici (ajustées pour nos paramètres) au cas où ce site tomberait en panne.

Ouvrez votre invite de commande dans le /apache/conf/dossier
Exécutez les commandes suivantes: Remarque: Cela suppose que vous avez openssl.exedans le bindossier dans le dossier racine apache (cela doit être standard / par défaut)

..\bin\openssl pkcs12 -in myCert.pfx -nocerts -out privateKey.pem

Cela vous demandera un mot de passe, entrez ce que vous entrez à l'étape 2 lorsque vous avez exporté le .pfxfichier. Dans mon cas, c'est pass. J'ai entré le même mot de passe pour la phrase PEM et encore une fois pour vérifier. Cela créera un nouveau fichier appelé privateKey.pemdans votre dossier conf.

Ensuite, cours

..\bin\openssl rsa -in privateKey.pem -out private.pem

Encore une fois, vous serez invité à entrer un mot de passe ( Enter pass phrase for privateKey.pem:), utilisez le mot de passe que vous avez défini privateKey.pem. (Dans mon cas, pass)
Vous devriez voir un message qui dit writing RSA keyet un nouveau fichier appelé private.pemdans votre conf/dossier. Ce sera votre SSLCertificateKeyFile.

Maintenant, pour générer le certificat de serveur correspondant. Courir:

..\bin\openssl pkcs12 -in myCert.pfx -clcerts -nokeys -out EntrustCert.pem

Cela vous demandera un mot de passe, entrez ce que vous entrez à l'étape 2 lorsque vous avez exporté le .pfxfichier. Entrez-le et vous aurez maintenant un fichier appelé EntrustCert.pemdans votre confdossier. Ceci est votre SSLCertificateFile

Étape 4 - Configurer httpd.conf

Utilisez les nouveaux fichiers créés comme clé et certificat de votre serveur. Assurez-vous de changer la racine de votre document à l'endroit où se trouvent vos fichiers!

ServerName localhost:80
Protocols h2 h2c http/1.1
<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

<VirtualHost _default_:443>
  ServerName localhost:443
  DocumentRoot ${SRVROOT}/htdocs/MYSITE
  SSLEngine on
  SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
  SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
</VirtualHost>

Aussi dans httpd.conf:

  • Assurez-vous qu'il LoadModule ssl_module modules/mod_ssl.son'est pas commenté (non #devant)
  • Décommenter LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
  • Décommenter LoadModule http2_module modules/mod_http2.so
  • Décommentez (REMARQUE: assurez Include conf/extra/httpd-ssl.conf -vous que c'est là que se trouve le fichier!)

J'ai également des bibliothèques curl et ssl ouvertes incluses:

# load curl and open ssl libraries
LoadFile "C:\php\libeay32.dll"
LoadFile "C:\php\ssleay32.dll"
LoadFile "C:\php\libssh2.dll"

Ces modules ne devraient pas être nécessaires, mais je noterai que je les ai activés:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so

Étape 5 - Config httpd-ssl.conf

Dans le extra/dossier du conf/dossier, vous devriez voir un fichier appelé httpd-ssl.conf.

5a. Changer leDocumentRoot - Remplacez le DocumentRootpar défaut par le répertoire où se trouvent vos fichiers.

5b. Changer leServerName - Remplacez le ServerNamepar défaut (quelque chose comme www.example.com:443) parlocalhost:443

5c. Modifiez leSSLCertificateFile
changement du SSLCertificateFilede la valeur par défaut ( ${SRVROOT}/conf/server.crt) à${SRVROOT}/conf/EntrustCert.pem

5c. Modifiez leSSLCertificateKeyFile
changement du SSLCertificateKeyFilede la valeur par défaut ( ${SRVROOT}/conf/server.key) à${SRVROOT}/conf/private.pem

Tous ensemble, dans le <VirtualHost _default_:443>tag.

#   General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs/MYSITE"
ServerName localhost:443
ServerAdmin [email protected]
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
SSLEngine on

#   Server Certificate:
#   Point SSLCertificateFile at a PEM encoded certificate.  If
#   the certificate is encrypted, then you will be prompted for a
#   pass phrase.  Note that a kill -HUP will prompt again.  Keep
#   in mind that if you have both an RSA and a DSA certificate you
#   can configure both in parallel (to also allow the use of DSA
#   ciphers, etc.)
#   Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
#   require an ECC certificate which can also be configured in
#   parallel.
SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
#SSLCertificateFile "${SRVROOT}/conf/server-dsa.crt"
#SSLCertificateFile "${SRVROOT}/conf/server-ecc.crt"

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
#   ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-dsa.key"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-ecc.key"

Redémarrez Apache

Après avoir apporté ces modifications, vous devriez pouvoir redémarrer Apache et accéder à https: // localhost sans avertissement de sécurité et un petit cadenas!

Localhost sécurisé

J'espère que ça aidera quelqu'un! 😊

Sources:
1.) Réponse d'Auri Rahimzadeh sur la création d'un certificat auto-signé
2.) Entrust Datacard - Comment puis-je convertir un .pfx à utiliser avec un serveur Apache?

StéphanieQ
la source
0

Une autre méthode simple consiste à utiliser Python Server dans Ubuntu.

  1. Générez server.xml avec la commande suivante dans le terminal:

    openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes

    Remarque: en supposant que vous avez installé openssl .

  2. Enregistrez le code ci-dessous dans un fichier nommé simple-https-server.pydans n'importe quel répertoire dans lequel vous souhaitez exécuter le serveur.

    import BaseHTTPServer, SimpleHTTPServer
    import ssl
    
    httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
    httpd.socket = ssl.wrap_socket (httpd.socket, certfile='./server.pem', server_side=True)
    httpd.serve_forever()
    
  3. Exécutez le serveur à partir du terminal:

    python simple-https-server.py

  4. Visitez la page à:

    https://localhost:4443

Notes supplémentaires ::

  1. Vous pouvez changer le port dans le simple-https-server.pyfichier en ligne

    httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)

  2. Vous pouvez changer localhostvotre adresse IP dans la même ligne ci-dessus:

    httpd = BaseHTTPServer.HTTPServer(('10.7.1.3', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)

    et accédez à la page sur n'importe quel appareil connecté à votre réseau. Ceci est très pratique dans des cas tels que "vous devez tester l'API de géolocalisation HTML5 dans un mobile et Chrome limite l'API uniquement dans les connexions sécurisées".

Gist: https://gist.github.com/dergachev/7028596

http://www.piware.de/2011/01/creating-an-https-server-in-python/

Asim KT
la source
0

Pour ceux qui utilisent macOS, c'est un excellent guide https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions pour configurer votre environnement de développement Web local. Dans sa 3ème partie https://getgrav.org/blog/macos-sierra-apache-ssl Andy Miller explique comment configurer apache avec un certificat auto-signé:

Voici le raccourci clavier:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt

Mais il y a quelques étapes à suivre, alors vérifiez cela et bonne chance! ;)

Tiomno
la source
0

Je voudrais ajouter quelque chose à la très bonne réponse de @CodeWarrior, qui fonctionne parfaitement sur Chrome, mais pour Firefox a besoin d'une étape supplémentaire.

Étant donné que Firefox ne propose pas de certificats CA comme Windows par défaut, vous devez continuer about:config, faites défiler jusqu'àsecurity.enterprise_roots.enabled et le changer en vrai.

Maintenant, votre certificat devrait être considéré comme valide également sur Firefox.

Bien sûr, ce n'est qu'à des fins de développement, car la confiance SSL est un problème de sécurité critique et ne modifiez ces paramètres que si vous en connaissez les implications.

RDev
la source