Heim >Backend-Entwicklung >PHP-Tutorial >NGINX-Konfiguration der SSL-Zertifikatserstellung HTTPS-Website-Tutorial

NGINX-Konfiguration der SSL-Zertifikatserstellung HTTPS-Website-Tutorial

WBOY
WBOYOriginal
2016-08-08 09:22:531612Durchsuche

1. Was ist HTTPS?

Laut Wikipedia:

超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器身份的鉴定。HTTPS连接经常被用于万维网上的交易支付和企业信息系统中敏感信息的传输。HTTPS不应与在RFC 2660中定义的安全超文本传输协议(S-HTTP)相混。

HTTPS ist mittlerweile die erste Wahl für alle Websites, die Wert auf Datenschutz und Sicherheit legen. Aufgrund der kontinuierlichen Weiterentwicklung der Technologie sind HTTPS-Websites keine großen Websites mehr. Mit dem Patent können alle normalen Webmaster und Blogger selbst eine sichere und verschlüsselte Website erstellen.

Wenn eine Website nicht verschlüsselt ist, werden alle Passwörter Ihres Kontos im Klartext übertragen. Man kann sich vorstellen, wie schrecklich die unverschlüsselte Übertragung aus Datenschutz- und Finanzgründen ist.

Da es sich bei den Lesern dieses Blogs allesamt um Profis handelt, gehen wir ohne Umschweife direkt zum Thema über.

2. Verwenden Sie OpenSSL, um SSL-Schlüssel und CSR zu generieren

Denn nur die vom Browser oder System vertrauenswürdige Zertifizierungsstelle kann allen Besuchern den reibungslosen Zugriff auf Ihre verschlüsselte Website ermöglichen. Überspringen wir also den Schritt des selbstsignierten Zertifikats und gehen direkt zum Signieren eines vertrauenswürdigen SSL-Zertifikats eines Drittanbieters über.

OpenSSL ist standardmäßig auf regulären Systemen wie Linux und OS

Gleichzeitig gibt es zwei Formen der gewöhnlichen SSL-Zertifikatauthentifizierung, eine ist DV (Domain Validated) und die andere ist OV (Organization Validated). Erstere muss nur den Domainnamen überprüfen Letzteres muss Ihre Organisation oder Ihr Unternehmen verifizieren. Aus Sicherheitsgründen ist Letzteres definitiv besser.

Unabhängig davon, ob Sie DV oder OV zum Generieren eines privaten Schlüssels verwenden, müssen Sie einige grundlegende Informationen eingeben. Hier gehen wir von Folgendem aus:

Domänenname, auch Common Name genannt, weil das Besondere Zertifikat ist nicht unbedingt ein Domainname:example.com

Organisation oder Firmenname (Organisation): Example, Inc.

Abteilung: Sie müssen es nicht ausfüllen, hier schreiben wir Web Security

Stadt: Beijing

Bundesstaat/Provinz: Beijing

Land: CN

Verschlüsselungsstärke: 2048 Bits, wenn Sie Wenn die Maschine eine starke Leistung hat, können Sie auch 4096-Bit wählen

Gemäß den obigen Informationen lauten die Befehle zur Verwendung von OpenSSL zum Generieren von Schlüssel und CSR wie folgt

openssl req -new -newkey rsa:2048 -sha256 -nodes -out example_com.csr -keyout example_com.key -subj "/C=CN/ST=Beijing/L=Beijing/O=Example Inc./OU=Web Security/CN=example.com"

PS: Wenn es sich um ein Pan-Domain-Name-Zertifikat handelt, sollten Sie *.example.com

ausfüllen. Sie können diesen Befehl an einer beliebigen Stelle im System ausführen, und die beiden Dateien example_com.csr und example_com.key werden angezeigt automatisch im aktuellen Verzeichnis generiert

Als nächstes können Sie es überprüfen example_com.csr und eine lange Textzeichenfolge wie diese erhalten

-----BEGIN CERTIFICATE REQUEST----- MIICujCCAaICAQAwdTELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB0JlaWppbmcxEDAOBgNVBAcTB0JlaWppbmcxFTATBgNVBAoTDEV4YW1wbGUgSW5jLjEVMBMGA1UECxMM V2ViIFNlY3VyaXR5MRQwEgYDVQQDEwtleGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPME+nvVCdGN9VWn+vp7JkMoOdpOurYMPvclIbsIiD7mGN982Ocl22O9wCV/4tL6DpTcXfNX+eWd7CNEKT4i+JYGqllqP3/CojhkemiY SF3jwncvP6VoST/HsZeMyNB71XwYnxFCGqSyE3QjxmQ9ae38H2LIpCllfd1l7iVpAX4i2+HvGTHFzb0XnmMLzq4HyVuEIMoYwiZX8hq+kwEAhKpBdfawkOcIRkbOlFew SEjLyHY+nruXutmQx1d7lzZCxut5Sm5At9al0bf5FOaaJylTEwNEpFkP3L29GtoU qg1t9Q8WufIfK9vXqQqwg8J1muK7kksnbYcoPnNgPx36kZsCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4IBAQCHgIuhpcgrsNwDuW6731/DeVwq2x3ZRqRBuj9/M8oONQen 1QIacBifEMr+Ma+C+wIpt3bHvtXEF8cCAJAR9sQ4Svy7M0w25DwrwaWIjxcf/J8U audL/029CkAuewFCdBILTRAAeDqxsAsUyiBIGTIT+uqi+EpGG4OlyKK/MF13FxDj /oKyrSJDtp1Xr9R7iqGCs/Zl5qWmDaLN7/qxBK6vX2R/HLhOK0aKi1ZQ4cZeP7Mr 8EzjDIAko87Nb/aIsFyKrt6Ze3jOF0/vnnpw7pMvhq+folWdTVXddjd9Dpr2x1nc y5hnop4k6kVRXDjQ4OTduQq4P+SzU4hb41GIQEz4 -----END CERTIFICATE REQUEST-----

Diese CSR-Datei müssen Sie an die senden Wenn Ihr Domainname oder Ihre Organisation die Überprüfung besteht, stellt Ihnen die Zertifizierungsstelle ein example_com.crt

aus. Und example_com.key muss in Verbindung mit example_com.crt verwendet werden sorgfältig aufzubewahren und dürfen nicht an Dritte weitergegeben werden.

3. Nginx konfiguriert die HTTPS-Website und fügt Sicherheitskonfigurationen hinzu.

Wie bereits erwähnt, müssen Sie eine CSR-Datei an eine SSL-Zertifizierungsstelle eines Drittanbieters senden Wenn Sie eine CRT-Datei haben, haben wir sie example_com.crt

genannt

同时,为了统一,你可以把这三个文件都移动到 /etc/ssl/private/ 目录。

然后可以修改 Nginx 配置文件

server { listen80; listen [::]:80 ssl ipv6>on; listen443 ssl; listen [::]:443 ssl ipv6>on; server_name example.com; sslon; ssl_certificate /etc/ssl/private/example_com.crt; ssl_certificate_key /etc/ssl/private/example_com.key; }

检测配置文件没问题后重新读取 Nginx 即可

nginx -t && nginx -s reload

但是这么做并不安全,默认是 SHA-1 形式,而现在主流的方案应该都避免 SHA-1,为了确保更强的安全性,我们可以采取迪菲-赫尔曼密钥交换

首先,进入 /etc/ssl/certs 目录并生成一个 dhparam.pem

cd /etc/ssl/certs openssl dhparam -out dhparam.pem 2048# 如果你的机器性能足够强大,可以用 4096 位加密

生成完毕后,在 Nginx 的 SSL 配置后面加入

ssl_prefer_server_cipherson; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers"EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"; keepalive_timeout70; ssl_session_cache shared:SSL:10m; ssl_session_timeout10m;

同时,如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问

add_header Strict-Transport-Security max-age=63072000; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff;

同时也可以单独开一个 Nginx 配置,把 HTTP 的访问请求都用 301 跳转到 HTTPS

server { listen80; listen [::]:80 ssl ipv6>on; server_name example.com; return301https://example.com$request_uri; }

四、可靠的第三方 SSL 签发机构

众所周知,前段时间某 NIC 机构爆出过针对 Google 域名的证书签发的丑闻,所以可见选择一家靠谱的第三方 SSL 签发机构是多么的重要。

目前一般市面上针对中小站长和企业的 SSL 证书颁发机构有:

StartSSL

Comodo / 子品牌 Positive SSL

GlobalSign / 子品牌 AlphaSSL

GeoTrust / 子品牌 RapidSSL

其中 Postivie SSL、AlphaSSL、RapidSSL 等都是子品牌,一般都是三级四级证书,所以你会需要增加 CA 证书链到你的 CRT 文件里。

以 Comodo Positive SSL 为例,需要串联 CA 证书,假设你的域名是 example.com

那么,串联的命令是

cat example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > example_com.signed.crt

在 Nginx 配置里使用 example_com.signed.crt 即可

如果是一般常见的 AplhaSSL 泛域名证书,他们是不会发给你 CA 证书链的,那么在你的 CRT 文件后面需要加入 AlphaSSL 的 CA 证书链

AlphaSSL Intermediate CA

五、针对企业的 EV SSL

EV SSL,是 Extended Validation 的简称,更注重于对企业网站的安全保护以及严格的认证。

最明显的区别就是,通常 EV SSL 显示都是绿色的条,比如本站的 SSL 证书就是 EV SSL。

如果贵公司想获取专业的 EV SSL,可以随时联系我们 info at cat dot net

六、本文参考文献

Apache + WordPress + SSL 完全指南

OpenSSL CSR Creation

NGINX - PhoenixWiki

转自:https://s.how/nginx-ssl/

以上就介绍了NGINX 配置 SSL 证书 + 搭建 HTTPS 网站教程,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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