Heim >php教程 >php手册 >Nginx konfiguriert SSL unter Windows, um den HTTPS-Zugriff zu implementieren (einschließlich Zertifikatsgenerierung)

Nginx konfiguriert SSL unter Windows, um den HTTPS-Zugriff zu implementieren (einschließlich Zertifikatsgenerierung)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-09-09 08:13:361394Durchsuche

Nginx konfiguriert SSL unter Windows, um den HTTPS-Zugriff (einschließlich Zertifikatsgenerierung) zu implementieren

Zunächst einmal: Warum sollten wir https implementieren?

Der vollständige Name von HTTP ist Hypertext Transfer Protocol, wobei der Client Hypertext-Inhalte auf dem Server erhält. Hypertext-Inhalte bestehen hauptsächlich aus HTML. Nachdem der Client den HTML-Inhalt erhalten hat, kann er ihn gemäß den Spezifikationen analysieren und präsentieren. Daher ist HTTP hauptsächlich für das „Anfordern und Erhalten von Inhalten“ verantwortlich. Das Problem liegt in diesem Teil. Überwachung, Hijacking, Blockierung und andere Verhaltensweisen können leicht zu Website-Lecks führen, wie z. B. Anmeldekennwörter, die durch MD5 auf dem Client verschlüsselt werden Nur Passwörter. Es handelt sich auch um vertrauliche Informationen. Heutzutage haben Baidu, Google, Github und andere Websites https auf ihrer gesamten Website aktiviert. HTTPS verschlüsselt die Anfrage, um sie für Benutzer sicherer zu machen. Es schützt nicht nur die Interessen der Benutzer, sondern kann auch seine eigenen Interessen schützen, indem es verhindert, dass der eigene Datenverkehr gekapert wird. Meiner Meinung nach wird sich HTTPS eines Tages im gesamten Netzwerk durchsetzen.

Kommen wir zum Punkt.

 Hinweis: Dieses Tutorial ist für Studenten geeignet, die bereits die WNMP-Umgebung konfiguriert und Virtualhost für die Implementierung von Multi-Site konfiguriert haben. Wenn Sie es noch nicht konfiguriert haben, lesen Sie bitte meinen vorherigen Artikel, um es zu konfigurieren.

Um Https zu implementieren, müssen Sie zunächst ein Zertifikat bei der Verwaltungsagentur beantragen. Da dies zu Übungszwecken dient, haben wir das Zertifikat selbst über Openssl generiert. Zuerst müssen wir die OpenSSL-Software verwenden, die Zertifikate generiert.

Schritte:

1. Openssl installieren

 Download-Adresse: http://slproweb.com/products/Win32OpenSSL.html (wählen Sie je nach System die 32-Bit- oder 64-Bit-Version zum Herunterladen und Installieren aus).

Nachdem der Download abgeschlossen ist, installieren Sie es im Ordner C:wnmpOpenSSL-Win64.

2. Installieren Sie ActivePerl (der Zweck dieser Software besteht darin, PL-Dateien zu analysieren. Einige Systeme können die Funktionen dieses Tutorials realisieren, ohne es zu installieren. Der Zweck der Installation dieser Software besteht darin, Perl zu lernen).

 Download-Adresse: http://www.activestate.com/activeperl/downloads/ (Wählen Sie je nach System die Win32- oder Win64-Version zum Herunterladen und Installieren aus).

3. Umgebungsvariablen konfigurieren

 Umgebungsvariablen in Umgebungsvariablen hinzufügen

Variablenname: OPENSSL_HOME Variablenwert: C:wnmpOpenSSL-Win64bin (Der Variablenwert ist der OpenSSL-Installationsort)

Fügen Sie am Ende der Pfadvariablen Folgendes hinzu: %OPENSSL_HOME%;

4. Zertifikat erstellen

 (1) Erstellen Sie zunächst den SSL-Ordner im Nginx-Installationsverzeichnis , um das Zertifikat zu speichern. Mein Dateiverzeichnis ist beispielsweise C:wnmpnginxssl

Rufen Sie als Administrator den Befehlszeilenmodus auf und geben Sie den SSL-Ordner ein. Der Befehl lautet: cd c:/wnmp/nginx/ssl

(2) Erstellen Sie einen privaten Schlüssel

 Führen Sie den Befehl in der Befehlszeile aus: openssl genrsa -des3 -out lee.key 1024 (Der Name der Lee-Datei kann angepasst werden (Definition), wie in der folgenden Abbildung gezeigt:

 

 Geben Sie nach der Eingabe des Passworts das Passwort zur Bestätigung erneut ein. Merken Sie sich dieses Passwort, Sie werden es später benötigen.

 (3) Erstellen Sie ein CSR-Zertifikat

  Führen Sie den Befehl in der Befehlszeile aus: openssl req -new -key lee.key -out lee.csr (die Schlüsseldatei ist die Datei gerade generiert, lee ist der benutzerdefinierte Dateiname)

 

 Wie im Bild oben gezeigt, müssen Sie nach der Ausführung des obigen Befehls Informationen eingeben. Die wichtigste eingegebene Information ist der allgemeine Name. Der hier eingegebene Domänenname ist der Domänenname, auf den wir über https zugreifen möchten.

 Nachdem die obigen Schritte abgeschlossen sind, werden zwei Dateien im SSL-Ordner angezeigt:

  (4) Passwort entfernen.

 Entfernen Sie das erforderliche Passwort, wenn Sie Nginx mit SSL-Unterstützung laden und den oben genannten privaten Schlüssel verwenden. Andernfalls müssen Sie das Passwort beim Starten von Nginx eingeben.

Kopieren Sie lee.key und benennen Sie es in lee.key.org um

Sie können diese Befehlszeile oder die Maus verwenden, um lee.key lee.key.org kopieren

Um das Passwort zu entfernen, führen Sie diesen Befehl in der Befehlszeile aus: openssl rsa -in lee.key.org -out lee.key (lee ist der benutzerdefinierte Dateiname)

 

Wie in der Abbildung unten gezeigt, erfordert dieser Befehl die Eingabe des gerade festgelegten Passworts.

  

 

(5) CRT-Zertifikat generieren

 

Führen Sie diesen Befehl in der Befehlszeile aus: openssl x509 -req -days 365 -in lee.csr -signkey lee.key -out lee.crt (lee ist der benutzerdefinierte Dateiname)

  

 

Die Zertifikatserstellung ist abgeschlossen. Insgesamt werden die folgenden 4 Dateien im SSL-Ordner generiert. Was wir verwenden müssen, sind lee.crt und lee.key.

  

5. Ändern Sie die Datei nginx.conf

 nginx.conf-Datei befindet sich unter: C:wnmpnginxconf

Suchen Sie den Speicherort des folgenden Codes in der Datei und ändern Sie ihn:

<span style="color: #000000;"># HTTPS server
    #
    #server {
    #    listen       </span>443 ssl<span style="color: #008000;">;
</span>    #    server_name  localhost<span style="color: #008000;">;
</span><span style="color: #000000;">
    #    ssl_certificate      cert.pem</span><span style="color: #008000;">;
</span>    #    ssl_certificate_key  cert.key<span style="color: #008000;">;
</span><span style="color: #000000;">
    #    ssl_session_cache    shared:SSL:1m</span><span style="color: #008000;">;
</span>    #    ssl_session_timeout  5m<span style="color: #008000;">;
</span><span style="color: #000000;">
    #    ssl_ciphers  HIGH:!aNULL:!MD5</span><span style="color: #008000;">;
</span>    #    ssl_prefer_server_ciphers  on<span style="color: #008000;">;
</span><span style="color: #000000;">
    #    location / {
    #        root   html</span><span style="color: #008000;">;
</span>    #        index  index.html index.htm<span style="color: #008000;">;
</span><span style="color: #000000;">    #    }
    #}</span>
 

Geändert zu:

<span style="color: #000000;"># HTTPS server
    #
#modify by lee </span>20160907<span style="color: #000000;"> for https -s 
    server {
        listen       </span>443 ssl<span style="color: #008000;">;
</span>        server_name    www.lee.com<span style="color: #008000;">;
</span><span style="color: #000000;">    
        ssl_certificate      C:/wnmp/nginx/ssl/lee.crt</span><span style="color: #008000;">;
</span>        ssl_certificate_key  C:/wnmp/nginx/ssl/lee.key<span style="color: #008000;">;
</span><span style="color: #000000;">    
        ssl_session_cache    shared:SSL:1m</span><span style="color: #008000;">;
</span>        ssl_session_timeout  5m<span style="color: #008000;">;
</span><span style="color: #000000;">    
        ssl_ciphers  HIGH:!aNULL:!MD5</span><span style="color: #008000;">;
</span>        ssl_prefer_server_ciphers  on<span style="color: #008000;">;
</span><span style="color: #000000;">    
        location / {
            root   C:/wnmp/lee</span><span style="color: #008000;">;
</span>            index  index.html index.htm index.php<span style="color: #008000;">;
</span><span style="color: #000000;">        }

               root           C:/wnmp/lee</span><span style="color: #008000;">;
</span>               fastcgi_pass   127.0.0.1:9001<span style="color: #008000;">;
</span>               fastcgi_index  index.php<span style="color: #008000;">;
</span>               fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name<span style="color: #008000;">;
</span>               include        fastcgi_params<span style="color: #008000;">;
</span><span style="color: #000000;">        }
    }
#modify by lee </span>20160907 for https -s 

     重启nginx。

     在浏览器中,访问 https://www.lee.com。发现出现证书认证,并能够成功访问。(www.lee.com为生成证书时,Common Name输入的域名)

     (执行此步骤时,需要配置好Virtual Host,并且在www.lee.com开放目录中添加了index.php默认入口访问文件。)

      

     上面的https被红色划线是因为我们使用的是自己生成的证书,此证书不受浏览器信任,如果想使其变为绿色,则需要向证书管理机构进行申请。

6. 添加重定向,自动跳转使用https。

     在nginx.conf中virtual host中如下代码位置添加一行代码:

    listen       80<span style="color: #008000;">;</span>                    
    server_name   www.lee.com<span style="color: #008000;">;</span>                    
#modify by lee 20160907<span style="color: #000000;"> for https Redirect -s                        
    rewrite ^(.*) https://$server_name$</span>1 permanent<span style="color: #008000;">;</span>                    
#modify by lee 20160907 for https Redirect -e                        

     重启nginx。

     访问www.lee.com,会发现浏览器自动跳转到https://www.lee.com,并能够成功访问。

  至此,https访问配置成功完成。

  如有不明之处,欢迎留言,如有错误敬请指正。

 

  参考: http://blog.csdn.net/ztclx2010/article/details/6896336

 

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn