Wie erlaube ich HTTPS für Apache auf localhost?

193

Ich wurde gebeten, HTTPS mit einem selbstsignierten Zertifikat für Apache auf localhost einzurichten, aber wie mache ich das eigentlich? Ich habe überhaupt keine Ahnung.

KennC.
quelle
1
Benutze Serveo ! ssh -R youruniquesubdomain:80:localhost:3000 serveo.nethttps://youruniquesubdomain.serveo.net
Geben

Antworten:

135

Ich habe es gerade versucht - ich musste Entwicklungscode auf meinem lokalen Host Apache unter Windows testen . Dies war WAAAY schwieriger als es sein sollte. Aber hier sind die Schritte, die nach viel Haarausfall erfolgreich waren ...

Ich habe festgestellt, dass meine Apache-Installation mitgeliefert wird, openssl.exewas hilfreich ist. Wenn Sie keine Kopie haben, müssen Sie diese herunterladen. Meine Kopie befand sich in einem Apache2\binOrdner, auf den ich unten verweise.

Schritte:

  1. Stellen Sie sicher, dass Sie über Schreibberechtigungen für Ihren Apache conf-Ordner verfügen
  2. Öffnen Sie eine Eingabeaufforderung im Apache2\confOrdner
  3. Art
    ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
  4. Sie können alle Fragen leer lassen, außer:

    • PEM-Passphrase: Ein temporäres Passwort wie "Passwort"
    • Allgemeiner Name: Der Hostname Ihres Servers

  5. Wenn dies abgeschlossen ist, geben Sie ein
    ..\bin\openssl rsa -in blarg.pem -out blarg.key

  6. Generieren Sie Ihr selbstsigniertes Zertifikat, indem Sie Folgendes eingeben:
    ..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365

  7. Öffnen Sie die Apache- conf\httpd.confDatei und stellen Sie sicher, dass das SSL-Modul aktiviert ist. Am Anfang dieser Zeile sollte kein Hash stehen:
    LoadModule ssl_module modules/mod_ssl.so

  8. Bei einigen Apache-Installationen wird die SSL-Konfiguration in einer separaten Datei abgelegt. Stellen Sie in diesem Fall sicher, dass die SSL-Konfigurationsdatei enthalten ist. In meinem Fall musste ich diese Zeile auskommentieren:
    Include conf/extra/httpd-ssl.conf

  9. In der SSL-Konfiguration musste httpd-ssl.confich folgende Zeilen aktualisieren:

    • Update
      SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"
      auf
      SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
      (Die Klammern im Pfad verwirren das Modul, daher müssen wir sie maskieren.)
    • DocumentRoot - Stellen Sie dies auf den Ordner für Ihre Webdateien ein
    • ServerName - der Hostname des Servers
    • SSLCertificateFile "conf/blarg.cert"
    • SSLCertificateKeyFile "conf/blarg.key"

  10. Starten Sie Apache neu.

  11. Versuchen Sie, https://localhost/in Ihren Browser zu laden .

Hoffentlich hast du es so weit geschafft. Fühlen Sie sich frei, diesen Beitrag mit anderen hilfreichen Informationen zu aktualisieren.

(Screenshots mit freundlicher Genehmigung von Neil Obremski und seinem hilfreichen Artikel - obwohl jetzt ziemlich veraltet.)

Simon
quelle
2
Vielen Dank. Ich musste auch die Anweisungen ErrorLog, TransferLog und CustomLog in gültige Pfade bearbeiten, sonst würde Apache nicht starten.
Tamlyn
1
Aus irgendeinem Grund funktionieren Anweisungen nicht mehr oder unvollständig
Jacobian
6
Ich musste auch Folgendes in meiner httpd.conf auskommentieren, damit es funktioniert: LoadModule socache_shmcb_module modules / mod_socache_shmcb.so
erik
1
Ich habe zwei weitere Schritte ausgeführt, damit es funktioniert. Fügen Sie das Modul LoadModule socache_shmcb_module modules / mod_socache_shmcb.so hinzu. In httpd-ssl.conf korrigiere ich den ssl-Protokollpfad in Zeile 250, CustomLog ".apache24 / logs / ssl_request.log" \
Wasim A. .
5
Um die .pem- und .key-Dateien zu generieren, musste ich in Schritt 2 zwei Umgebungsvariablen festlegen: OPENSSL_CONF = C: \ path \ to \ apache \ Apache2.4.4 \ conf \ openssl.cnf set RANDFILE = C: \ Pfad \ zu \ Apache \ Apache2.4.4 \ conf \ .rnd
Eosphere
57

Ich benutze dafür ngrok ( https://ngrok.com/ ). ngrok ist ein Befehlszeilenprogramm und erstellt einen Tunnel für localhost. Es wird sowohl eine http- als auch eine https-Verbindung hergestellt. Nach dem Herunterladen muss der folgende Befehl ausgeführt werden:

ngrok http 80

(In Version 2 lautet die Syntax: ngrok http 80. In Version 2 kann jeder Port getunnelt werden.)

Nach einigen Sekunden werden zwei URLs angezeigt:

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

Jetzt zeigen beide URLs auf den lokalen Host.

Sudip
quelle
1
@sudip, Funktioniert der OpenSource-Code von ngrok so, dass wir ihn ohne Änderungen auf unserem eigenen Server hosten können? Wenn nicht, ist es so ziemlich ein Showstopper, weil es nicht in Ordnung ist, Benutzeranforderungen an einen externen Host wie ngrok umzuleiten.
Pacerier
2
@ Pacerier Ich habe nicht vor, es auf dem Server zu verwenden. Ich benutze es auf localhost (Bcz mein Netzwerkanbieter gibt mir eine dynamische IP). Ich habe es zum ersten Mal für Paypal-IPN-Tests verwendet und es hat perfekt funktioniert. Ich frage mich, warum jemand es auf dem Server verwenden wird und zu welchem ​​Zweck.
Sudip
@sudip, Der Zweck liegt auf der Hand. Damit Code, der unter HTTP funktioniert, auch mit HTTPS funktioniert, ohne dass zusätzliche Codierung erforderlich ist.
Pacerier
1
Obwohl dies nützlich ist, scheint es unglaublich unsicher, den Zugriff auf Ihre Entwicklungsmaschine über das offene Internet zuzulassen. Wenn Sie so etwas verwenden, werden Sie bei einem sicherheitsbewussten Arbeitgeber entlassen.
Andy M
@Yum Yum yum . Es war zuvor in V 1 völlig kostenlos. In Version 2 sind jedoch die http- und https-Ports noch frei (ich weiß nicht, ob es eine Portbeschränkung gibt, es gibt einen kostenlosen Plan). Überprüfen Sie den kostenlosen Plan hier: ngrok.com/product#pricing
Sudip
24

Hier ist der einfachste Weg, dies zu tun

Kopieren Sie zuerst diese server.crt- und server.key- Dateien (finden Sie im Anhang) in Ihr Verzeichnis apache / conf / ssl

Öffnen Sie dann die Datei httpd.conf und fügen Sie die folgende Zeile hinzu

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
quelle
3
Ich musste auch das Modul LoadModule ssl_module libexec / apache2 / mod_ssl.so in der (/etc/apache2/httpd.conf)
Alexey
17
Ich frage mich, wie sicher / gefährlich es ist, * .crt * .key-Dateien von einer nicht vertrauenswürdigen Quelle herunterzuladen, anstatt eigene zu generieren.
Petr Peller
4
@PetrPeller wir richten https für die lokale Entwicklung ein, warum also für sicher / gefährlich wundern
Anil Gupta
7
Eine Erklärung, wie diese Dateien generiert werden, wäre großartig. Weil das Herunterladen von Dateien von einer unbekannten Quelle eine schlechte Praxis ist, aber auch, weil diese Art von Links irgendwann kaputt gehen.
Stephan Vierkant
2
Dieses Tutorial ist in Ordnung digitalocean.com/community/tutorials/…
Dhiraj
11

Um die Sicherheit von Informationen zu gewährleisten, die an und von Ihrem Webserver gesendet werden, empfiehlt es sich, die Verschlüsselung der Kommunikation zwischen Clients und Server zu aktivieren. Dies wird oft als SSL bezeichnet .

Richten wir also HTTPS mit einem selbstsignierten Zertifikat für Apache2 ein. Ich werde die Schritte auflisten, denen Sie folgen sollten:

  • Installieren Sie den Apache2-Webserver auf Ihrem Computer. Für Linux-Maschine öffnen Sie das Terminal und geben Sie ein

sudo apt-get install apache2

  • Überprüfen Sie nach erfolgreicher Installation den Status des Apache2-Dienstes, indem Sie den Befehl ausführen

sudo service apache2 status

Es sollte ausgegeben werden

Apache2-Dienststatus

  • Navigieren Sie zum Browser und geben Sie ein

http: // localhost: 80

Stellen Sie sicher, dass Sie die Standardseite für Apache2 wie folgt erhalten.

Standardausgabe von Apache2

  • Zum Verschlüsseln einer Webverbindung benötigen wir ein Zertifikat von CA (Zertifizierungsstelle) oder wir können selbstsignierte Zertifikate verwenden. Erstellen wir ein selbstsigniertes Zertifikat mit dem folgenden Befehl.

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

Bitte füllen Sie die Informationen entsprechend aus, wie unten gezeigt.

Erstellen Sie ein selbstsigniertes Zertifikat mit openssl

mykey.key und mycert.pem sollten in Ihrem aktuellen Arbeitsverzeichnis erstellt werden.

  • Es wäre schön, wenn wir Zertifikate und Schlüssel an einen gemeinsamen Ort verschieben würden, und es wird für den Apache2-Webserver leicht sein, sie zu finden. Führen wir also die folgenden Befehle aus

sudo cp mycert.pem / etc / ssl / certs

sudo cp mykey.key / etc / ssl / privat

  • Lassen Sie uns den SSL-Modus auf Ihrem Server aktivieren

sudo a2enmod ssl

Es sollte so ausgegeben werden

ssl aktivieren

  • Lassen Sie uns apache2 so konfigurieren, dass selbstsignierte Zertifikate und Schlüssel verwendet werden, die wir oben generiert haben.

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

Finden Sie diese beiden Zeilen und ersetzen Sie sie durch Ihre Zertifizierungs- und Schlüsselpfade.

Initiale

default-conf

Finale

nach Konfigurationsänderungen

  • Aktivieren Sie die Site

cd / etc / apache2 / sites-available /

sudo a2ensite default-ssl.conf

  • Starten Sie den Apache2-Dienst neu

sudo service apache2 neu starten

  • Überprüfen Sie den Apache2-Webserver unter HTTPS. Öffnen Sie Ihren Browser erneut und geben Sie ein

https: // localhost: 443

Es sollte so etwas mit einer Warnung ausgeben, dass die Seite, die Sie anzeigen möchten, nicht sicher ist, da wir den Server mit einem selbstsignierten Zertifikat konfiguriert haben.

Geben Sie hier die Bildbeschreibung ein

  • Herzlichen Glückwunsch, Sie haben Ihren Apache2 mit HTTPS-Endpunkt konfiguriert. Klicken Sie nun auf Erweitert -> Ausnahme hinzufügen -> Sicherheitsausnahme bestätigen. Die Standardseite wird erneut angezeigt.

Seite nach dem Hinzufügen einer Ausnahme

Dinesh Kumar
quelle
Ich bevorzuge es, keine Konfigurationsdatei zu bearbeiten, wenn ich kann, also habe ich default-ssl.confes so belassen, wie es ist. Ich wollte gerade umbenennen mycert, ssl-cert-snakeoilaber diese Datei existiert bereits, also habe ich sie einfach benutzt! So konnte ich zwei Schritte auf Debian sicher überspringen.
Rolf
@Rolf Ich stimme dir zu, aber in der Produktion ist es immer der Fall, ein neues Zertifikat und einen neuen Schlüssel zu verwenden. Um zu zeigen, wie sie erstellt werden können, habe ich zwei zusätzliche Schritte für Debian hinzugefügt. Danke :)
Dinesh Kumar
9

Windows + Apache 2.4 zum Beispiel:

  1. Kommentieren Sie ssl_module in Ihrer httpd.confDatei aus.

    LoadModule ssl_module modules/mod_ssl.so
    
  2. Hören Sie 443 Port genau wie 80 Port in Ihrer httpd.confDatei.

    Listen 80
    Listen 443
    
  3. auskommentieren Nehmen Sie virtuelle Hosts in Ihre httpd.confDatei auf.

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    
  4. Fügen Sie VirtualHost in Ihr 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>
    

Nur die Portnummer 443und die SSL......Leitungen unterscheiden sich von der normalen http-Konfiguration.

Speichern Sie Ihre Konfigurationsdatei und starten Sie den Apache-Dienst neu. dann können Sie https: // localhost / besuchen

Der Webbrowser warnt Sie, dass es beim ersten Mal unsicher ist. Wählen Sie einfach Weiter.

cuixiping
quelle
Dies hat bei XP Home, Apache 2.4 für mich funktioniert. Kopierte die 2 Zertifikatdateien aus dem vorherigen Beitrag (von Anil Gupta). Unkommentiert mod_ssl und httpd-vhosts.conf in httpd.conf eingefügt, fügte Anil Guptas VirtualHost-Direktive (mit einigen angepassten Pfaden) in httpd-vhosts.conf hinzu.
jogi99
7

Es ist eigentlich ganz einfach, vorausgesetzt, Sie haben eine OpenSSL-Installation zur Hand. (Auf welcher Plattform bist du?)

Angenommen, Sie arbeiten unter Linux / Solaris / Mac OS / X, hat Vans Apache SSL / TLS Mini-HOWTO eine hervorragende Anleitung, die ich hier nicht reproduzieren werde.

Die Zusammenfassung lautet jedoch, dass Sie ein selbstsigniertes Zertifikat erstellen müssen. Da Sie Apache für localhost vermutlich für die Entwicklung ausführen (dh keinen öffentlichen Webserver), wissen Sie, dass Sie dem selbstsignierten Zertifikat vertrauen und die Warnungen ignorieren können, die Ihr Browser auf Sie wirft.

Pete Clark
quelle
Hallo, ich arbeite unter Windows. Und was das selbstsignierte Zertifikat betrifft, muss ich es herunterladen oder auf andere Weise?
KennC.
3
Nee. Sie erstellen das selbstsignierte Zertifikat selbst. Haben Sie das Apache httpd + ssl Setup? Dazu benötigen Sie die SSL. Diese Seite: rubayathasan.com/tutorial/apache-ssl-on-windows bietet gute Informationen darüber, wie man SSL unter Windows zum Laufen bringt. Sie werden einige Kommandozeilenarbeiten ausführen, aber das ist trotzdem gut für Sie. :-)
Pete Clark
3
Die Links sind tot :(
kpuccino
Ja - es scheint tot zu sein. Das ist das Internet für Sie ... aber der Link zum CentOS Wiki unten durch @kayakinkoder referenziert ist auch gut: wiki.centos.org/HowTos/Https Wenn Sie auf einem Mac sind, diese Zuschreibung sieht auch vernünftig: Kern. github.com/nrollr/4daba07c67adcb30693e
Pete Clark
4

Dies sollte Ubuntu, Mint ähnlich wie Apache2 funktionieren

Es ist eine nette Anleitung, also folge dieser

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

und lassen Sie Ihre ssl.conf so oder ähnlich ähnlich

<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

Du kannst es bekommen.

Hoffe diese Hilfe für Linuxer

ackuser
quelle
2

Es ist sehr einfach,

Führen Sie einfach die folgenden Befehle aus

sudo a2enmod ssl

sudo service apache2 restart

sudo a2ensite default-ssl.conf

Das war's, du bist fertig.

Wenn Sie SSL erzwingen möchten (um immer https zu verwenden), bearbeiten Sie die Datei:

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

und fügen Sie diese eine Zeile hinzu

<VirtualHost *:80>
        . . .

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

        . . .
</VirtualHost>

dann neu starten

sudo service apache2 restart
Moh .S
quelle
Und Sie müssen laufen systemctl reload apache2nach sudo a2ensite default-ssl.conf.
Bis zum
2

Update 2019

Ich poste diese Antwort, da ich selbst damit zu kämpfen hatte und Chrome ihre Sicherheit dahingehend aktualisiert hat, dass ein alternativer Betreffname erforderlich ist, den viele Posts nicht haben, da dies nicht erforderlich war, als sie als Antwort veröffentlicht wurden. Ich gehe davon aus, dass WAMP bereits installiert ist.

SCHRITT 1

Laden Sie OpenSSL Light herunter und installieren Sie es


SCHRITT 2 (optional)

Dieser Teil ist zwar optional, erleichtert aber später die Ausführung von Befehlen. Wenn Sie diesen Schritt überspringen, müssen Sie den vollständigen Pfad zu openssl.exe angeben, in dem Sie den Befehl ausführen. Wenn Sie es lieber festlegen möchten, aktualisieren Sie den Pfad openssl.exe in Umgebungsvariablen.

Umgebungsvariablen -> Systemvariablen -> Pfad -> Bearbeiten -> Neu -> c: \ Programme \ OpenSSL-Win64 \ bin


SCHRITT 3

Erstellen Sie einen Ordner mit dem Namen "Schlüssel" im c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/Verzeichnis.

Erstellen Sie eine Konfigurationsdatei für Ihre CA MyCompanyCA.cnf mit Inhalten (Sie können sie an Ihre Bedürfnisse anpassen ):

[ 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

Erstellen Sie die Erweiterungskonfigurationsdatei MyCompanyLocalhost.ext für Ihr Webserverzertifikat:

subjectAltName = @alt_names
extendedKeyUsage = serverAuth

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


SCHRITT 4

Führen Sie diese Befehle in der angegebenen Reihenfolge aus, um den Schlüssel und die Zertifikate zu generieren:

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

Als Ergebnis verfügen Sie über die Dateien MyCompanyCA.cer , MyCompanyLocalhost.cer und MyCompanyLocalhost.pvk .


SCHRITT 5

Installieren Sie MyCompanyCA.cer unter

Systemsteuerung -> Benutzerzertifikate verwalten -> Vertrauenswürdige Stammzertifizierungsstellen -> Zertifikate

Um MyCompanyLocalhost.cer zu installieren, doppelklicken Sie einfach darauf.


SCHRITT 6

Öffnen Sie die folgenden 3 Zeilen c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/httpd.confund entfernen Sie den Kommentar (entfernen Sie das #) :

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


SCHRITT 7

Öffnen Sie c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.confalle Parameter und ändern Sie sie in die unten gezeigten:

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"

Hinweis: Dies ist der schwierige Teil. Wenn Sie beim Bearbeiten dieser Datei einen kleinen Fehler machen, funktioniert SSL nicht. Erstellen Sie eine Kopie davon, bevor Sie sie bearbeiten.


SCHRITT 8

Starten Sie Wamp und Chrome neu. Localhost ist jetzt sicher: https: // localhost

CodeWarrior
quelle
1

Dieses HowTo für CentOS war einfach zu befolgen und dauerte nur etwa 5 Minuten: https://wiki.centos.org/HowTos/Https

Ich werde hier nicht jeden Schritt detaillieren, aber die Hauptschritte sind:

1.) Installieren Sie das openssl-Modul für Apache, falls nicht bereits installiert

2.) Generieren Sie ein selbstsigniertes Zertifikat

- Zu diesem Zeitpunkt sollten Sie https: // localhost erfolgreich besuchen können

3.) Richten Sie bei Bedarf einen virtuellen Host ein

KayakinKoder
quelle
1

Dies funktionierte unter Windows 10 mit Apache24:

1 - Fügen Sie dies am unteren Rand von hinzu 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 - Fügen Sie die server.crtund server.key-Dateien in den C:/Apache24/conf/sslOrdner ein. Weitere Antworten finden Sie auf dieser Seite, um diese beiden Dateien zu finden.

Das ist es!

jogi99
quelle
Ja das funktioniert. Ich habe die Schritte 1 bis 3 von StephanieQ verwendet, um das Zertifikat zu generieren, und dann "openssl x509 -req -in server.csr -signkey server.key -out server.crt", um die * .crt-Datei mit cygwin zu generieren.
b3wii
1

tl; dr

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

Auf Ihre lokale Umgebung kann über https://youruniquesubdomain.serveo.net zugegriffen werden

Serveo ist das Beste

  • Keine Anmeldung.
  • Keine Installation.
  • Hat HTTPS.
  • Weltweit zugänglich.
  • Sie können einen benutzerdefinierten Fix und eine Subdomain angeben.
  • Sie können es selbst hosten, so dass Sie Ihre eigene Domain verwenden und zukunftssicher sein können, selbst wenn der Dienst ausfällt.

Ich konnte es nicht glauben, als ich diesen Service fand. Es bietet alles und ist am einfachsten zu bedienen. Wenn es für jedes Problem ein so einfaches und schmerzloses Werkzeug geben würde ...

totymedli
quelle
1

Hier wird Apache unter Windows 10 ausgeführt. Ich konnte Chrome nicht dazu bringen, dem Zertifikat zu vertrauen, das in der Top-Antwort von Simon erstellt wurde. Am Ende habe ich mit PowerShell ein selbstsigniertes Zertifikat erstellt.

Schritt 1 - Generieren Sie ein selbstsigniertes Zertifikat

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

Schritt 2 - Zertifikat konfigurieren und exportieren

Geben Sie Certificatein die Windows-Suchleiste ein und klicken Sie auf das Manage Computer Certificatesvorgeschlagene Element der Systemsteuerung.

Im daraufhin angezeigten Zertifikatverwaltungsprogramm (certlm) sollte jetzt ein localhostSchlüssel unter angezeigt werden Personal >> Certificates.

Ich habe dieses Zertifikat in kopiert Trusted Root Certification Authorities. Ich bin ehrlich, ich bin mir nicht sicher, ob das notwendig ist.

Doppelklicken Sie auf das neu kopierte Zertifikat (das localhost-Zertifikat). Klicken Sie im Modal Zertifikat auf die DetailsRegisterkarte und dann auf die Copy to File...Schaltfläche.

Dadurch wird der Export-Assistent aufgerufen. Ich habe mich für den Export des privaten Schlüssels entschieden und auf Weiter geklickt. Ich habe mich auch dafür entschieden Export all extended properties(auch hier bin ich mir nicht sicher, ob das notwendig war). Ich habe mich für ein einfaches Passwort ( pass) und die Standardverschlüsselung entschieden. Wählen Sie einen Ordner aus, in den exportiert werden soll, und benennen Sie die Datei. Sie können die Datei bei Bedarf jederzeit verschieben und umbenennen. Der Einfachheit halber kopieren wir es in Ihren conf-Ordner unter Ihrer Apache-Installation (in meinem Fall :) C:\apache\confund benennen die Datei myCert(die resultierende Datei ist eine .pfxDatei).

Schritt 3 - Konvertieren Sie die .pfxDatei zur Verwendung mit Apache

Von hier aus habe ich im Grunde das Tutorial hier befolgt , aber ich werde hier Anweisungen hinzufügen (angepasst für unsere Einstellungen), falls diese Seite ausfällt.

Öffnen Sie Ihre Eingabeaufforderung im /apache/conf/Ordner.
Führen Sie die folgenden Befehle aus: Hinweis: Dies setzt voraus, dass Sie sich openssl.exeim binOrdner im Apache-Stammordner befinden (dies sollte Standard / Standard sein).

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

Dadurch werden Sie zur Eingabe eines Kennworts aufgefordert. Geben Sie ein, was Sie beim Exportieren der .pfxDatei für Schritt 2 eingegeben haben . In meinem Fall ist dies pass. Ich habe das gleiche Passwort für die PEM-Phrase eingegeben und erneut überprüft. Dadurch wird eine neue Datei erstellt, die privateKey.pemin Ihrem conf-Ordner aufgerufen wird.

Dann renne

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

Sie werden erneut aufgefordert, ein Kennwort einzugeben ( Enter pass phrase for privateKey.pem:). Verwenden Sie das von Ihnen festgelegte Kennwort privateKey.pem. (In meinem Fall pass)
Sie sollten eine Meldung mit dem Titel writing RSA keyund eine neue Datei private.pemin Ihrem conf/Ordner sehen. Dies ist Ihre SSLCertificateKeyFile.

Generieren Sie nun das entsprechende Serverzertifikat. Lauf:

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

Dadurch werden Sie zur Eingabe eines Kennworts aufgefordert. Geben Sie ein, was Sie beim Exportieren der .pfxDatei für Schritt 2 eingegeben haben . Geben Sie es ein und Sie haben jetzt eine Datei EntrustCert.pemin Ihrem confOrdner. Dies ist Ihre SSLCertificateFile

Schritt 4 - Konfigurieren httpd.conf

Verwenden Sie die neuen Dateien, die als Schlüssel und Zertifikat Ihres Servers erstellt wurden. Stellen Sie sicher, dass Sie Ihr Dokumentenstammverzeichnis so ändern, dass sich Ihre Dateien dort befinden!

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>

Auch in httpd.conf:

  • Stellen Sie sicher, dass LoadModule ssl_module modules/mod_ssl.soes nicht kommentiert ist (nein #vorne)
  • Kommentar LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
  • Kommentar LoadModule http2_module modules/mod_http2.so
  • Kommentar entfernen ( HINWEIS Include conf/extra/httpd-ssl.conf : Stellen Sie sicher, dass sich dort die Datei befindet!)

Ich habe auch Curl- und Open-SSL-Bibliotheken enthalten:

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

Diese Module sollten nicht notwendig sein, aber ich werde feststellen, dass ich sie aktiviert habe:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so

Schritt 5 - Konfig httpd-ssl.conf

In dem extra/Ordner im conf/Ordner sollte eine Datei mit dem Namen angezeigt werden httpd-ssl.conf.

5a. Ändern Sie dasDocumentRoot - Ändern Sie das DocumentRootvon der Standardeinstellung in das Verzeichnis, in dem sich Ihre Dateien befinden.

5b. Ändern Sie dieServerName - Ändern Sie die ServerNamevon der Standardeinstellung (so etwas wie www.example.com:443) inlocalhost:443

5c. Ändern Sie dasSSLCertificateFile
Ändern Sie das SSLCertificateFilevon der Standardeinstellung ( ${SRVROOT}/conf/server.crt) in${SRVROOT}/conf/EntrustCert.pem

5c. Ändern Sie dasSSLCertificateKeyFile
Ändern Sie das SSLCertificateKeyFilevon der Standardeinstellung ( ${SRVROOT}/conf/server.key) in${SRVROOT}/conf/private.pem

Alles zusammen im <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"

Starten Sie Apache neu

Nachdem Sie diese Änderungen vorgenommen haben, sollten Sie in der Lage sein, Apache neu zu starten und ohne Sicherheitswarnung und ein kleines Vorhängeschloss zu https: // localhost zu navigieren !

Gesicherter localhost

Ich hoffe das hilft jemandem! 😊

Quellen:
1.) Antwort von Auri Rahimzadeh zum Erstellen eines selbstsignierten Zertifikats
2.) Entrust Datacard - Wie konvertiere ich eine PFX-Datei, die mit einem Apache-Server verwendet werden soll?

StephanieQ
quelle
0

Eine andere einfache Methode ist die Verwendung von Python Server in Ubuntu.

  1. Generieren Sie server.xml mit dem folgenden Befehl im Terminal:

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

    Hinweis: Angenommen, Sie haben openssl installiert.

  2. Speicher unter Code in einer Datei mit dem Namen simple-https-server.pyin jedem Verzeichnis , das Sie wollen den Server auszuführen.

    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. Führen Sie den Server vom Terminal aus:

    python simple-https-server.py

  4. Besuchen Sie die Seite unter:

    https://localhost:4443

Zusätzliche Hinweise: :

  1. Sie können den Port in der simple-https-server.pyDatei in Zeile ändern

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

  2. Sie können in derselben Zeile oben zu Ihrer IP wechselnlocalhost :

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

    und greifen Sie auf die Seite eines beliebigen Geräts zu, mit dem Ihr Netzwerk verbunden ist. Dies ist sehr praktisch in Fällen wie "Sie müssen die HTML5-GeoLocation-API in einem Mobiltelefon testen und Chrome schränkt die API nur in sicheren Verbindungen ein".

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

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

Asim KT
quelle
0

Für diejenigen, die macOS verwenden, ist dies eine großartige Anleitung https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions , um Ihre lokale Webentwicklungsumgebung einzurichten. In seinem dritten Teil https://getgrav.org/blog/macos-sierra-apache-ssl erklärt Andy Miller, wie man Apache mit einem selbstsignierten Zertifikat einrichtet:

Dies ist der Schlüsselbefehl:

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

Aber es gibt ein paar Schritte, die Sie befolgen müssen, also probieren Sie das aus und viel Glück! ;)

tiomno
quelle
0

Ich möchte der sehr guten Antwort von @CodeWarrior etwas hinzufügen, das unter Chrome perfekt funktioniert, für Firefox jedoch einen zusätzlichen Schritt benötigt.

Da Firefox keine CA-Zertifikate ausgibt, die Windows standardmäßig ausführt, müssen Sie fortfahren about:config, nach unten scrollen security.enterprise_roots.enabled und in true ändern.

Jetzt sollte Ihr Zertifikat auch in Firefox als gültig angesehen werden.

Dies dient natürlich nur zu Entwicklungszwecken, da SSL-Vertrauen ein kritisches Sicherheitsbedenken darstellt. Ändern Sie diese Einstellungen nur, wenn Sie die Auswirkungen kennen.

RDev
quelle