Es gibt unterschiedliche Implementierungen der verschiedenen Standards für die Erstellung von Zertifikaten und die Verschlüsselung von Daten und Netzwerkverkehr. Nach Sicherheitslücken in der Implementierung der OpenSSL Software Foundation, die bekannteste ist wohl Heartbleed, gab es zwei größere Forks: LibreSSL und BoringSSL. Die Bibliotheken implementieren mehr als 30 RFCs und Standards und bieten somit ein Werkzeug, das bei Alltagsaufgaben nützliche Dienste leistet. Unsere Beispiele verwenden die klassische OpenSSL-Implementierung, LibreSSL unterstützt die Befehle aber analog.
Viele kennen das OpenSSL-Kommandozeilenwerkzeug von der Zertifikat-Erstellung zur E-Mail- oder HTTP-Verschlüsselung. Es bietet aber noch viele weitere Funktionen, die sich in unterschiedlichen Arbeitssituationen sinnvoll nutzen lassen. In diesem Security-Tipp skizzieren wir solche Situationen und beschreiben die verwendeten Kommandos. Viele davon lassen sich beispielsweise zum Monitoring von Clients und Servern und der Überprüfung eingesetzter Zertifikate einsetzen.
Bei der Benutzung von SSL/TLS können Sie unterschiedliche Cipher-Suites auswählen. Eine Cipher-Suite besteht aus Algorithmen zum Schlüsseltausch, zur Authentifizierung, Hash-Erzeugung und Verschlüsselung. Eine Liste der von OpenSSL unterstützten Cipher-Suites erhalten Sie mit dem Kommando »ciphers
«
. Möchten Sie sich auf bestimmte SSL/TLS-Versionen beschränken, können Sie die Ausgabe weiter eingrenzen. Alle TLS1.2-Cipher-Suites listen Sie durch Doppelpunkte getrennt auf mit
$> openssl ciphers 'TLSv1.2'
Da nicht alle Cipher-Suites denselben Schutzlevel bieten, sollten Sie diejenigen deaktivieren, die dem geforderten Sicherheitsniveau nicht entsprechen. Dafür können Sie die Cipher als Argumente übergeben. Server-Software, die wie Apache oder NGINX OpenSSL als Bibliothek verwendet, erlaubt meist die Einschränkung der unterstützten Cipher-Suites in der Konfiguration. Dabei bietet die Übersicht von ssllabs.com [1] einen guten Einstieg für die Auswahl sowie Best Practices.
OpenSSL greift Ihnen auch unter die Arme, wenn Sie Informationen zur Performance Ihres Webservers bei der Auslieferung von SSL/TLS-verschlüsselten Inhalten benötigen. Sie können zwischen den unterschiedlichen von OpenSSL unterstützten Cipher-Suites wählen. Die Performance der TLSv1.2-Cipher beim Abruf der Indexseite von example.com erhalten Sie beispielsweise mit
$> openssl s_time -cipher 'TLSv1.2' -new -www / -connect example.com:443
Dabei können Sie statt "-new" auch "-reuse" nutzen, wenn Sie Sessions wiederverwenden möchten. Das kann die SSL-Aushandlung zwischen Browser und Server beschleunigen. Den SSL-Session-Cache können Sie zur Performance-Optimierung in der Konfiguration Ihres Webservers aktivieren.