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