Selbstsigniertes Zertifikat: DNSName-Komponenten müssen mit einem Buchstaben beginnen

8

Gibt es eine Möglichkeit für javas Keytool, ein selbstsigniertes Zertifikat mit einem Platzhalter im SAN (Subject Alternative Name) zu generieren? Ich verwende diesen Befehl, um Keystore zu generieren:

%Vor%

Aber ich bekomme IOException: DNSName components must begin with a letter

Offensichtlich ist das Problem *.example.com in SAN, aber ich sehe keine andere Möglichkeit, ein selbstsigniertes Zertifikat für example.com subdomains zu generieren.

Nach diesem sollte es möglich sein. Ist es Fehler in meiner Syntax, Fehler in Keytool, oder ich etwas falsch verstanden?

BTW, ich benutze keytool von JDK 1.8 update 60

BEARBEITEN Ich habe es geschafft, ein selbstsigniertes Zertifikat für alle example.com Subdomains über keytool zu generieren, indem ich CN=*.example.com angegeben habe und SAN leer gelassen habe. Nichtsdestoweniger werde ich die Antwort von Omikron als akzeptiert akzeptieren (da es eine tatsächliche Antwort und keine Umgehung von Einschränkungen ist).

    
zkristic 20.11.2015, 13:22
quelle

1 Antwort

12

Keytool verwendet intern die Klasse sun.security.x509.DNSName , um die Eingabe zu überprüfen. DNSName erzwingt die in RFC 1034 angegebene Syntax. Zitat aus seinem Javadoc-Kommentar:

  

Der Name MUSS in der "bevorzugten Namenssyntax" laut RFC stehen   1034.

Die bevorzugte Syntax lautet:

%Vor%

Nach dieser Syntax müssen Domainnamen mit einem Buchstaben beginnen (A-Z, a-z).

Neuere RFCs (zB RFC 2181 , RFC 1123 ) lockern diese Einschränkungen, daher kann dies als Fehler in Java betrachtet werden. Es gibt bereits einige verwandte Fehlerberichte:

Ссылка
Ссылка

Die Antwort lautet also Nein. Es gibt derzeit keine Möglichkeit, eine Wildcard-SAN-Erweiterung mit keytool zu erstellen.

Aber Sie könnten KeyStore Explorer dazu verwenden. Es ist im Grunde Keytool mit einer GUI und erzwingt diese Einschränkungen nicht.

    
Omikron 21.11.2015, 15:09
quelle