Skip to content

nginx: ECDH mit mehreren Kurven

Erst letztlich habe ich ein Distributions-Upgrade meines Servers durchgeführt und nun kann ich mich an den vielen neuen Features erfreuen. Bisher konnte ich nginx nur eine ECDH-Kurve nutzen lassen. Das hat sich geändert.

Der Webserver nginx kann mit Version 1.11.0+ in Verbindung mit OpenSSL 1.0.2+ den TLS-Schlüsselaustausch abhängig von den Fähigkeiten der sich verbindenden Clients mit unterschiedlichen Kurven durchführen. Das ist eine positive Entwicklung, weil man sich nicht mehr auf einen kleinsten gemeinsamen Nenner als Kompromiss einigen muss.

Konfiguration

Standardmäßig überlässt nginx die Entscheidung, welche Kurven zu verwenden sind, OpenSSL. Der Default ist:

ssl_ecdh_curve auto;

Bei mir hat dies jedoch dazu geführt, dass die Kurven in der Prioritätenreihenfolge x25519, secp256r1, secp384r1, secp521r1 stehen. Das mag aus Performancesicht Sinn ergeben, aber wenn man die Transportsicherheit auf 11 drehen möchte, braucht es imho eine andere Reihenfolge.

Ich nutze diese Konfiguration:

ssl_ecdh_curve X25519:secp521r1:secp384r1:prime256v1;

Das belohnt natürlich jeder vernünftige TLS-Tester und vor allem fortschrittliche Clients, die NIST-Kurven für vertrauensunwürdig halten, freuen sich.

Fazit

Sinnvolle Defaults sind gut und wichtig für jedes Stück Software. Man sollte aber jeden noch so guten Default hinterfragen, ob er zu den Anforderungen passt. ;-)

Kommentare

Noch keine Kommentare

Kommentar schreiben