Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Wie Nginx die OpenSSL-Bibliothek für eine sicherere Kommunikation nutzt

Wie Nginx die OpenSSL-Bibliothek für eine sicherere Kommunikation nutzt

王林
王林Original
2023-06-10 13:51:072730Durchsuche

Nginx ist eine Software, die häufig in Webservern, Load Balancern, Reverse-Proxys und Caches verwendet wird. Bei der Netzwerkübertragung wird zunehmend auf Datenverschlüsselung und -sicherheit geachtet. Um die Sicherheit der Kommunikation zu verbessern, kann die OpenSSL-Bibliothek zur Implementierung des SSL/TLS-Protokolls zum Schutz der Übertragung sensibler Daten genutzt werden. In diesem Artikel wird erläutert, wie Sie mit Nginx und der OpenSSL-Bibliothek eine sicherere Kommunikation erreichen.

  1. Installieren und konfigurieren Sie die OpenSSL-Bibliothek

Zuerst müssen Sie die OpenSSL-Bibliothek auf dem Server installieren. Für die Installation können Sie beispielsweise den Paketmanager verwenden: Für Ubuntu- und Debian-Systeme können Sie den folgenden Befehl verwenden:

sudo apt-get install libssl-dev

Nehmen Sie nach Abschluss der Installation die entsprechenden Einstellungen in der Nginx-Konfiguration vor. Sie müssen den SSL-Zertifikatspfad und den Schlüsselpfad auf die entsprechenden Dateien verweisen. Gleichzeitig müssen Sie auch das SSL-Protokoll und die zugehörigen Sicherheitsoptimierungseinstellungen aktivieren:

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;

    #优化SSL加密方式
    ssl_protocols TLSv1.3;
    ssl_ciphersuites TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256;
    ssl_prefer_server_ciphers on;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;

    #提高安全性
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload;" always;
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Xss-Protection "1; mode=block";

    #其他配置
    location / {
        ...
    }   
}

In der obigen Konfiguration wird der Befehl „listen“ verwendet, um das SSL-Protokoll zu aktivieren und gleichzeitig das http2-Protokoll zu laden, um es zu verbessern Effizienz. „ssl_certificate“ und „ssl_certificate_key“ sind die Pfade zu den entsprechenden Zertifikaten. Darüber hinaus müssen auch Einstellungen wie Verschlüsselungsalgorithmus und Sitzungszeitlimit festgelegt werden.

Um die Sicherheit zu verbessern, können Sie auch einige HTTP-Antwortheader hinzufügen, z. B. „Strict-Transport-Security“, „X-Content-Type-Options“, „X-Frame-Options“ und „X-Xss- „Schutz“ usw., um Ihre Website vor böswilligen Angriffen zu schützen.

  1. SSL-Zertifikat generieren

SSL-Zertifikat ist ein wichtiges Werkzeug zur Sicherung der Kommunikation. Im Allgemeinen können Sie bei der Zertifizierungsstelle (CA) den Erhalt eines SSL-Zertifikats beantragen. Wir können jedoch auch selbst ein selbstsigniertes SSL-Zertifikat zum Testen oder zur privaten Website-Nutzung generieren.

Unter Ubuntu- und Debian-Systemen können Sie die folgenden Schritte ausführen, um ein SSL-Zertifikat zu generieren:

1) Zertifikat und Schlüssel erstellen

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

Dieser Befehl generiert ein selbstsigniertes SSL-Zertifikat und den entsprechenden privaten Schlüssel. Während des Generierungsprozesses werden Sie aufgefordert, einige notwendige Informationen einzugeben, z. B. Organisationseinheit, öffentlicher Name usw.

2) Nginx konfigurieren

Folgen Sie den vorherigen Konfigurationsschritten und geben Sie die Pfade zu den Zertifikats- und Schlüsseldateien in der Nginx-Konfiguration an.

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

    ...
}
  1. SSL-Leistungsoptimierung konfigurieren

Verschlüsselte Kommunikation basierend auf dem SSL-Protokoll erhöht die Belastung des Servers und die Netzwerkverzögerung. Daher muss bei der Verwendung des SSL-Protokolls für die Kommunikation die Leistung optimiert werden.

Einige häufig verwendete Optimierungseinstellungen sind wie folgt:

1) Aktivieren Sie den SSL-Beschleuniger.

Der SSL-Beschleuniger kann den Handshake-Prozess, die Verschlüsselungs- und Entschlüsselungsverarbeitung des SSL-Protokolls usw. beschleunigen. Die OpenSSL-Engine-Technologie kann in Nginx verwendet werden, um eine hardwarebeschleunigte SSL-Verarbeitung zu erreichen. Die spezifische Auswahl muss mit der tatsächlichen Situation kombiniert werden. Sie können die folgenden Einstellungen befolgen:

ssl_engine on;
ssl_engine_device /dev/pkcs11engine;
ssl_engine_param "/path/to/config.xml";

2) Zertifikatskette zusammenführen

Speichern Sie das SSL-Zertifikat und das Stammzertifikat der ausstellenden Behörde in derselben Zertifikatsdatei, um den Bedarf zu verringern für den Client, um das Zertifikat zu überprüfen. Anzahl der Male und Speicheraufwand:

cat your_domain.crt ca_bundle.crt > your_domain_ca.crt 

3) OCSP-Stapling aktivieren

OCSP-Stapling ist eine Optimierungstechnologie, die zur Überprüfung der Legitimität des Serverzertifikats verwendet wird. Wenn ein Client ein Serverzertifikat erhält, fordert er eine Verifizierung vom OCSP-Server der ausstellenden Behörde an, wodurch die Netzwerklatenz erhöht wird. Die OCSP-Stapling-Technologie kann diese Verzögerung reduzieren, die OCSP-Antwort auf der Serverseite zwischenspeichern und sie direkt zurückgeben, wenn der Client sie anfordert, wodurch Netzwerkverzögerungen und QPST-Anfragen reduziert werden.

In Nginx können Sie OCSP-Stapling wie folgt aktivieren:

server {
    ...
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /path/to/chain.pem;
    resolver DNS_SERVER;
    ...
}
  1. SSL-Verbindungen überwachen

Abschließend müssen wir SSL-Verbindungen überwachen und verwalten. Sie können das von Nginx bereitgestellte SSL-Erweiterungsmodul ngx_http_ssl_module zur detaillierten Überwachung und Protokollierung von SSL-Verbindungen verwenden.

Kann mit anderen Überwachungstools kombiniert werden, z. B. Prometheus zur Überwachung und Alarmierung von SSL-Indikatoren und ELK zur SSL-Protokollierung und statistischen Analyse.

Fazit

In diesem Artikel haben wir vorgestellt, wie Sie mit der OpenSSL-Bibliothek eine sicherere Kommunikation erreichen. Durch die Konfiguration von SSL-Zertifikaten, Verschlüsselungsalgorithmen, Optimierungseinstellungen und Überwachungsmanagement können die Sicherheit und Leistung der Kommunikation erheblich verbessert werden. Gleichzeitig müssen wir weiterhin auf die neueste SSL-Sicherheitstechnologie achten und diese erlernen, um unsere Website und Daten zu schützen.

Das obige ist der detaillierte Inhalt vonWie Nginx die OpenSSL-Bibliothek für eine sicherere Kommunikation nutzt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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