Parameter zum Erstellen eines selbstsignierten DSA-Zertifikats unter Ubuntu 12.04?

4205

Ich möchte unter Ubuntu 12.04 ein selbstsigniertes DSA-Zertifikat für die Verwendung mit einem Webserver und einer TLS 1.2-Verbindung (HTTPS) erstellen.

Ich habe festgestellt, dass Sie den folgenden Befehl ausführen können, um einen RSA-Befehl zu erstellen:

openssl genrsa -out server.key 3072 

Ich brauche jedoch folgende Eigenschaften:

  • 3072 Bit Schlüssellänge unter Verwendung des regulären DSA-Algorithmus (nicht ECDSA)
  • Verwendung der SHA2-Verschlüsselungs-Hash-Funktion mit 384 Bit
  • Verwenden der Option "Perfektes Vorwärtsgeheimnis"
  • Weisen Sie AES 256 als erste Präferenzordnung für die symmetrische Chiffre zu
  • Es ist keine Verschlüsselung für den privaten Schlüssel erforderlich (um unbeaufsichtigte Neustarts zu ermöglichen).

Kann mir jemand mit den Parametern helfen, die folgenden Optionen oben auszuführen?

Wie stellen Sie sicher, dass beim Starten einer TLS-Sitzung jedes Mal ein neuer zufälliger Signaturwert k generiert wird? Dies ist offensichtlich kritisch für die Sicherheit des Algorithmus. Oder ist das bei OpenSSL automatisch?

Ich habe diese TLS 1.2-Chiffre-Suite TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 hier gefunden. Wie kann ich sie dazu verwenden?

Danke im Voraus.

0

2 Antworten auf die Frage

6
tylerl

Was auch immer Sie tun, es besteht eine ziemlich gute Chance, dass Sie es falsch machen, je nachdem, wie Sie diese Frage formuliert haben. Wenn Sie irgendwo einen Blogeintrag gefunden haben, der Ihnen mitteilt, dass Sie dies oder das tun müssten, folgen Sie ihm nicht einfach, ohne wirklich zu wissen, was er sagt. Der Grund, warum ich dies sage, ist, dass die meisten der von Ihnen gewünschten Funktionen nichts mit der Erstellung eines selbstsignierten DSA-Zertifikats zu tun haben.

Stellen Sie stattdessen eine Frage, in der Sie fragen, was Sie tatsächlich erreichen möchten. Es kann sein, dass die Lösung nicht so ist, wie Sie glauben.

Aber da Sie gefragt haben, erstellen Sie ein selbstsigniertes DSA-Zertifikat mit 3072 Bit:

openssl dsaparam 3072 -out params.pem openssl gendsa -out key.pem params.pem openssl req -new -key key.pem -out req.pem openssl x509 -req -in req.pem -signkey key.pem -out certificate.cer 
0
Tom Leek

Obwohl der SHA-384 mit DSA verwendet werden kann, gibt es für eine solche Kombination keine Standard-OID. Daher kann OpenSSL den "Signaturalgorithmus" - Teil Ihres selbstsignierten Zertifikats nicht codieren . Die Standard-OID wurde nur für DSA mit SHA-1, SHA-224 und SHA-256 definiert. Für Ihre Selbstunterschrift müssen Sie die Anforderung "Nur SHA-384" lockern. Da die Selbstsignatur ohnehin genau null kryptografischen Wert hat ( nur weil ein Zertifikat ein nicht-optionales Feld für die "Signatur" hat) und durch einige zufällige Bytes von ungefähr der richtigen Größe ersetzt werden könnte, sollte dies keine Schwierigkeiten darstellen .

In ähnlicher Weise wurde DSA zuerst so definiert, dass ein Modul im Bereich von 512 bis 1024 Bits verwendet wurde, dann ein Modul von genau 1024 Bits, nicht weniger und nicht mehr . Neuere Versionen des Standards (FIPS 186-4) ermöglichen einen längeren Modul mit einschränkenden Optionen: Nur 1024, 2048 und 3072 Bits mit einer Untergruppengröße von 160, 224 oder 256 Bits (zulässige Kombinationen siehe Seite 15). Grundsätzlich impliziert die Verwendung eines anderen Moduls als 1024 Bit Interoperabilitätsprobleme (bereits die Verwendung von DSA impliziert Interoperabilitätsprobleme, da dies in der Praxis niemand tut. Daher wird diese Unterstützung in implementierten Implementierungen bestenfalls schlecht getestet).

(Dies bedeutet im Übrigen, dass die Verwendung einer Hash-Funktion mit DSA mit einem Ausgang größer als 256 Bit völlig unbrauchbar ist, da die Sicherheit auf die einer 256-Bit-Gruppe beschränkt ist, dh die äußerst vernünftige Sicherheitsstufe "128 Bit".)

Die Generierung des zufälligen k- Werts für jede Signatur wird automatisch von OpenSSL ausgeführt, sodass Sie sich nicht darum kümmern müssen (es ist bereits schwierig, dies richtig zu tun; wenn Bibliotheksbenutzer dies selbst tun müssten, würde dies einfach nie korrekt geschehen).

OpenSSL ermöglicht die Konfiguration vieler Chiffriersätze. siehe die Dokumentation . In SSL folgt der Server traditionell den Client-Voreinstellungen für die Auswahl der Chiffriersammlung, OpenSSL (die Bibliothek) erzwingt jedoch die Servervorgaben (dh, die Cipher-Suite muss eine bestimmte sein, sofern der Client dies unterstützt, auch wenn dies der Fall ist) es wurde nicht an erster Stelle in der vom Client gesendeten Liste angezeigt). Beachten Sie, dass OpenSSL a Bibliothek : Sie verwenden nur durch einige Anwendungscode, der verwendet OpenSSL, und Sie können nur über die Konfigurationsoptionen des Anwendungscodes OpenSSL Verhalten konfigurieren, die nicht Hebelwirkung geben kann oder Sie beliebige SSL-Level - Optionen anzuwenden .