OCSP-Heften mit Nginx

7

Ich habe Probleme mit der OCSP-Heftung in Nginx. Also starte ich den openssl ocsp Daemon und besuche dann meine Site. Dann heißt es Ungültige Anfrage. Ich verwende eine private PKI und CA. SSL-Schlüssel: 8192-Bit-DH-Schlüssel 2048-Bit

root@wilhelm:/etc/ocsp# openssl ocsp -index index.txt -port 9999 -rsigner oscp.crt -rkey oscp.key -CA cacert.pem -text -out log.txt
Waiting for OCSP client connections...
Invalid request
root@wilhelm:/etc/ocsp# ls
cacert.pem  index.txt  index.txt.attr  index.txt.attr.old  index.txt.old  log.txt  ocsp.crt  ocsp.key  oscp.crt  oscp.key
root@wilhelm:/etc/ocsp# 

Der Server funktioniert jedoch, ich habe ihn mit openssl ocsp -CAfile ../cacert.pem -issuer ../cacert.pem -url http: // * url *: 9999 -resp_text -cert mycert.crt getestet und es funktioniert einwandfrei .

Nginx-Konfiguration:

set_real_ip_from   199.27.128.0/21;
set_real_ip_from   173.245.48.0/20;
set_real_ip_from   103.21.244.0/22;
set_real_ip_from   103.22.200.0/22;
set_real_ip_from   103.31.4.0/22;
set_real_ip_from   141.101.64.0/18;
set_real_ip_from   108.162.192.0/18;
set_real_ip_from   190.93.240.0/20;
set_real_ip_from   188.114.96.0/20;
set_real_ip_from   197.234.240.0/22;
set_real_ip_from   198.41.128.0/17;  
set_real_ip_from   162.158.0.0/15;  
set_real_ip_from   104.16.0.0/12;
set_real_ip_from   172.64.0.0/13;
real_ip_header     X-Forwarded-For;
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s;
limit_conn conn_limit_per_ip 5;
limit_req zone=req_limit_per_ip burst=10 nodelay;   

server_tokens off;

add_header X-Frame-Options SAMEORIGIN;

add_header X-Content-Type-Options nosniff;

add_header X-XSS-Protection "1; mode=block";


server {
  listen 80;
  server_name mail.wilhelm.co.za;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl;
  ssl on;
  server_name mail.wilhelm.co.za;

  if ($http_referer ~* "(semalt|buttons-for|best-seo)") { return 444; }
  if ($http_host = '') { return 444; }
  if ($host !~* ^mail\.wilhelm\.co\.za$ ) { return 444; }
  if ($request_method !~ ^(GET|HEAD)$ ) { return 444; }

  ssl_certificate /etc/nginx/ssl/mail.wilhelm.co.za.key.crt;
  ssl_certificate_key /etc/nginx/ssl/mail.wilhelm.co.za.key;
  ssl_client_certificate /etc/nginx/ssl/cacert.pem;
  ssl_verify_client optional; 
  ssl_session_cache shared:SSL:50m;
  ssl_session_timeout 5m;

  ssl_dhparam /etc/nginx/ssl/dhparam.pem;

  ssl_prefer_server_ciphers on;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

  resolver 8.8.8.8 valid=300s;
  resolver_timeout 10s;
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_trusted_certificate /etc/nginx/ssl/mail.wilhelm.co.za.crt;

  add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
  root /var/www/mail.wilhelm.co.za/public_html;
  access_log /var/www/mail.wilhelm.co.za/logs/access.log;
  error_log /var/www/mail.wilhelm.co.za/logs/error.log;
  index index.php;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ \.php$ {
    fastcgi_index index.php;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_keep_conn on;
    include /etc/nginx/fastcgi_params;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

  location ~ /\.ht {
    deny all;
  }

  location ^~ /data {
    deny all;
  }
}
Wilhelm Erasmus
quelle
Könnten Sie bitte die Nginx-Konfiguration in Ihre Frage aufnehmen? Und müssen Sie wirklich Ihren eigenen OCSP-Server einrichten? Ich meine, wenn Sie ein reguläres vertrauenswürdiges Zertifikat haben, sollte nginx den OCSP-Server verwenden, wie im CA-Zertifikat angegeben. Ich denke, das Einrichten eines eigenen OCSP-Servers ist nur erforderlich, wenn Sie eine eigene PKI ausführen. Geben Sie daher bitte einige Kontextinformationen darüber an, was Sie erreichen möchten und wie Sie vorgehen.
Gertvdijk
@gertvdijk hat die Frage aktualisiert, außer dass ich keine Anleitung befolge. Ich habe aber nach einem gesucht
Wilhelm Erasmus
OK großartig. Interessante Frage. Ich habe Erfahrung mit der Einrichtung einer privaten PKI, aber nie mit der Einrichtung eines privaten OCSP-Responders. Ich denke, Ihre Frage könnte mehr Aufmerksamkeit auf ServerFault als auf AskUbuntu lenken, da ich nicht denke, dass dies Ubuntu-spezifisch ist.
Gertvdijk
Können Sie uns das Zertifikat zeigen, das Sie überprüfen möchten? Möglicherweise fehlt AIA oder etwas anderes, das Nginx benötigt.
womble

Antworten:

1

Für OCSP-Anforderungen, die für das OCSP-Heften verwendet werden, verwendet nginx GET-Anforderungen, wie in RFC 2560 beschrieben .

Andererseits unterstützt OpenSSL ab dem zuletzt veröffentlichten OpenSSL 1.0.2d nur POST-Anforderungen im OCSP-Responder-Daemon, die über verfügbar sind openssl ocsp. Es erkennt keine GET-Anforderungen und druckt Invalid requestfür solche Anforderungen.

Damit dies funktioniert, können Sie OpenSSL vom Hauptzweig aus ausprobieren. Es scheint einen Versuch zu enthalten, den OCSP-Respondercode zu verbessern, und sollte GET-Anforderungen jetzt ordnungsgemäß verarbeiten. Ich habe es jedoch noch nie versucht und es gibt möglicherweise andere Probleme. Bitte beachten Sie auch, dass es sich um unveröffentlichten Code handelt.

Sie können auch einen anderen OCSP-Responder verwenden.

Maxim Dounin
quelle