So konfigurieren Sie das OCSP-Heften unter Apache und Nginx

Einführung

OCSP-Heftung ist eine TLS / SSL-Erweiterung, mit der die Leistung der SSL-Aushandlung bei gleichzeitiger Wahrung der Privatsphäre der Besucher verbessert werden soll. Bevor Sie mit der Konfiguration fortfahren, erhalten Sie eine kurze Einführung in die Funktionsweise der Zertifikatsperrung. Dieser Artikel verwendet free certificates, ausgestellt von StartSSL zur Demonstration.

In diesem Tutorial wird die unten beschriebene Basiskonfiguration für Apache und Nginx verwendet:

Über OCSP

OCSP (Online Certificate Status Protocol) ist ein Protokoll zur Überprüfung, ob ein SSL-Zertifikat gesperrt wurde. Es wurde als Alternative zur CRL erstellt, um die SSL-Aushandlungszeit zu verkürzen. Mit CRL (Certificate Revocation List) lädt der Browser eine Liste der gesperrten Zertifikatseriennummern herunter und überprüft das aktuelle Zertifikat, wodurch die SSL-Aushandlungszeit verlängert wird. In OCSP sendet der Browser eine Anforderung an eine OCSP-URL und empfängt eine Antwort mit dem Gültigkeitsstatus des Zertifikats. Der folgende Screenshot zeigt den OCSP-URI von digitalocean.com.

image: https: //assets.digitalocean.com/articles/OCSP_Stapling/1.png [OCSP URI]

Informationen zum OCSP-Heften

OCSP hat zwei Hauptprobleme: Datenschutz und hohe Auslastung der CA-Server.

Da bei OCSP der Browser die CA kontaktieren muss, um die Gültigkeit des Zertifikats zu bestätigen, ist die Privatsphäre gefährdet. Die Zertifizierungsstelle weiß, auf welche Website zugegriffen wird und wer darauf zugegriffen hat.

Wenn eine HTTPS-Website viele Besucher hat, muss der OCSP-Server der Zertifizierungsstelle alle von den Besuchern gestellten OCSP-Anforderungen verarbeiten.

Wenn die OCSP-Heftung implementiert ist, fragt der Zertifikatsinhaber (Lese-Webserver) den OCSP-Server selbst ab und speichert die Antwort im Cache. Diese Antwort wird mit dem TLS / SSL-Handshake über die * Certificate Status Request * -Erweiterungsantwort „geheftet“. Dadurch werden die Server der Zertifizierungsstelle nicht mit Anfragen belastet, und die Browser müssen die Surfgewohnheiten der Benutzer nicht mehr an Dritte weitergeben.

Überprüfen Sie, ob die OCSP-Heftung unterstützt wird

OCSP-Heftung wird am unterstützt

  • Apache HTTP Server (> = 2.3.3)

  • Nginx (> = 1.3.7)

Bitte überprüfen Sie die Version Ihrer Installation mit den folgenden Befehlen, bevor Sie fortfahren.

Apache:

apache2 -v

Nginx:

nginx -v

CentOS / Fedora-Benutzer ersetzen "+ apache2 " durch " httpd +".

Rufen Sie das CA-Bundle ab

Rufen Sie die Stammzertifizierungsstelle und das Zertifikat der Zwischenzertifizierungsstelle im PEM-Format ab und speichern Sie sie in einer einzelnen Datei. Dies gilt für die Root- und Intermediate-CA-Zertifikate von StartSSL.

cd /etc/ssl
wget -O - https://www.startssl.com/certs/ca.pem https://www.startssl.com/certs/sub.class1.server.ca.pem | tee -a ca-certs.pem> /dev/null

Wenn Ihre Zertifizierungsstelle Zertifikate im DER-Format bereitstellt, konvertieren Sie diese in PEM. Beispielsweise bietet DigiCert Zertifikate im DER-Format an. Verwenden Sie die folgenden Befehle, um sie herunterzuladen und in PEM zu konvertieren:

cd /etc/ssl
wget -O - https://www.digicert.com/CACerts/DigiCertHighAssuranceEVRootCA.crt | openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem> /dev/null
wget -O - https://www.digicert.com/CACerts/DigiCertHighAssuranceEVCA-1.crt | openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem> /dev/null

Beide Befehlssätze verwenden "+ tee ", um in die Datei zu schreiben. Sie können also " sudo tee +" verwenden, wenn Sie als Nicht-Root-Benutzer angemeldet sind.

Konfigurieren der OCSP-Heftung in Apache

Bearbeiten Sie die Datei mit den virtuellen SSL-Hosts und platzieren Sie diese Zeilen * innerhalb * der Direktive + <VirtualHost> </ VirtualHost> +.

sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf
SSLCACertificateFile /etc/ssl/ca-certs.pem
SSLUseStapling on

Ein Cache-Speicherort muss * außerhalb * + <VirtualHost> </ VirtualHost> + angegeben werden.

sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)

Wenn Sie https://www.digitalocean.com/community/articles/how-to-set-up-multiple-ssl-certificates-on-one-ip-with-apache-on-ubuntu-12-04 diese Anleitung befolgt haben article] um SSL-Sites auf Apache einzurichten, sieht die virtuelle Host-Datei folgendermaßen aus:

+ / etc / apache2 / sites-enabled / example.com-ssl.conf +

<IfModule mod_ssl.c>
   SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
   <VirtualHost *:443>

           ServerAdmin webmaster@localhost
           ServerName example.com
           DocumentRoot /var/www

           SSLEngine on

           SSLCertificateFile /etc/apache2/ssl/example.com/apache.crt
           SSLCertificateKeyFile /etc/apache2/ssl/example.com/apache.key

           SSLCACertificateFile /etc/ssl/ca-certs.pem
           SSLUseStapling on
   </VirtualHost>
</IfModule>

Machen Sie einen Configtest, um nach Fehlern zu suchen.

apachectl -t

Laden Sie neu, wenn "+ Syntax OK +" angezeigt wird.

service apache2 reload

Greifen Sie auf die Website unter IE (unter Vista und höher) oder Firefox 26+ zu und überprüfen Sie das Fehlerprotokoll.

tail /var/log/apache2/error.log

Wenn die in der Direktive "+ SSLCACertificateFile +" definierte Datei fehlt, wird ein Zertifikat mit einem Fehler angezeigt, der dem folgenden ähnlich ist.

[Fri May 09 23:36:44.055900 2014] [ssl:error] [pid 1491:tid 139921007208320] AH02217: ssl_stapling_init_cert: Can't retrieve issuer certificate!
[Fri May 09 23:36:44.056018 2014] [ssl:error] [pid 1491:tid 139921007208320] AH02235: Unable to configure server certificate for stapling

Wenn keine derartigen Fehler angezeigt werden, fahren Sie mit dem letzten Schritt fort.

Konfigurieren der OCSP-Heftung unter Nginx

Bearbeiten Sie die Datei mit den virtuellen SSL-Hosts und fügen Sie die folgenden Anweisungen in den Abschnitt + server {} + ein.

sudo nano /etc/nginx/sites-enabled/example.com.ssl
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;

Wenn Sie https://www.digitalocean.com/community/articles/how-to-set-up-multiple-ssl-certificates-on-one-ip-with-nginx-on-ubuntu-12-04 verfolgt haben, gilt dies article] zum Einrichten von SSL-Hosts auf Nginx sieht die vollständige virtuelle Hostdatei folgendermaßen aus:

+ / etc / nginx / sites-enabled / example.com.ssl +

server {

       listen   443;
       server_name example.org;

       root /usr/share/nginx/www;
       index index.html index.htm;

       ssl on;
       ssl_certificate /etc/nginx/ssl/example.org/server.crt;
       ssl_certificate_key /etc/nginx/ssl/example.org/server.key;

       ssl_stapling on;
       ssl_stapling_verify on;
       ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;
}

Führe ein "+ configtest +" durch, um zu sehen, ob alles korrekt ist.

service nginx configtest

Laden Sie dann den Dienst + nginx neu.

service nginx reload

Greifen Sie auf die Website unter IE (unter Vista und höher) oder Firefox 26+ zu und überprüfen Sie das Fehlerprotokoll.

tail /var/log/nginx/error.log

Wenn in der in + ssl_trusted_certificate + definierten Datei ein Zertifikat fehlt, wird ein Fehler ähnlich dem folgenden angezeigt:

2014/05/09 17:38:16 [error] 1580#0: OCSP_basic_verify() failed (SSL: error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:Verify error:unable to get local issuer certificate) while requesting certificate status, responder: ocsp.startssl.com

Wenn keine derartigen Fehler angezeigt werden, fahren Sie mit dem nächsten Schritt fort.

Testen des OCSP-Heftens

Zwei Methoden werden erläutert, um zu testen, ob das OCSP-Heften funktioniert: das Befehlszeilentool "+ openssl +" und der SSL-Test bei Qualys.

Der OpenSSL-Befehl

Die Ausgabe dieses Befehls zeigt einen Abschnitt an, in dem angegeben ist, ob Ihr Webserver mit OCSP-Daten geantwortet hat. Wir + grep + diesen bestimmten Abschnitt und zeigen ihn an.

echo QUIT | openssl s_client -connect www.digitalocean.com:443 -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update'

Ersetzen Sie + www.digitalocean.com + durch Ihren Domainnamen. Wenn das OCSP-Heften ordnungsgemäß funktioniert, wird die folgende Ausgabe angezeigt.

OCSP response:
======================================
OCSP Response Data:
   OCSP Response Status: successful (0x0)
   Response Type: Basic OCSP Response
   Version: 1 (0x0)
   Responder Id: 4C58CB25F0414F52F428C881439BA6A8A0E692E5
   Produced At: May  9 08:45:00 2014 GMT
   Responses:
   Certificate ID:
     Hash Algorithm: sha1
     Issuer Name Hash: B8A299F09D061DD5C1588F76CC89FF57092B94DD
     Issuer Key Hash: 4C58CB25F0414F52F428C881439BA6A8A0E692E5
     Serial Number: 0161FF00CCBFF6C07D2D3BB4D8340A23
   Cert Status: good
   This Update: May  9 08:45:00 2014 GMT
   Next Update: May 16 09:00:00 2014 GMT

Wenn das OCSP-Heften nicht funktioniert, wird keine Ausgabe angezeigt.

Qualys Online-SSL-Test

Um dies online zu überprüfen, gehen Sie zu this website und geben Sie Ihren Domainnamen ein. Sobald der Test abgeschlossen ist, lesen Sie den Abschnitt * Protokolldetails *.

Zusätzliche Lektüre

Related