11 Stimmen

Extrahieren der angeforderten Gültigkeitsdauer aus einer Zertifikatsignierungsanforderung mit OpenSSL

Wir verwenden eine private Zertifizierungsstelle, die auf OpenSSL basiert, um unsere Kunden zu authentifizieren. Wir bieten ein einfaches webbasiertes Dienstprogramm, mit dem sie eine CSR-Datei hochladen können, die von der Zertifizierungsstelle signiert wird.

Zurzeit können wir nur Zertifikate für einen bestimmten Zeitraum ausstellen, derzeit 365 Tage. Unsere Kunden haben jedoch gefragt, ob sie stattdessen die Gültigkeitsdauer ihrer Zertifikate angeben können.

Ich würde es vorziehen, den Benutzer nicht fragen zu müssen, welche Gültigkeitsdauer er wünscht, da er eine Gültigkeitsdauer angeben muss, wenn er seine CSR erstellt, und es ist sinnvoll, diese Dauer aus der CSR zu extrahieren, wenn das Zertifikat signiert wird. Ich kann jedoch nicht herausfinden, wie man das macht: die normalen Dinge, die man mit OpenSSL tun kann, um CSRs, Zertifikate und Schlüssel zu debuggen, zeigen nicht die relevanten Informationen: hier ist ein Beispiel für die Ausgabe von "openssl req -text -noout < csrfile":

$ openssl req -text -noout < my.csr 
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=GB, L=London, O=example.com, CN=customer/emailAddress=ssl@example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:c4:3b:11:7f:61:31:19:97:b6:26:19:01:e7:c6:
                    c3:d5:03:a5:f6:5a:4d:e2:03:d0:4e:76:49:d0:7f:
                    59:92:bf:5e:12:b3:b0:7e:20:5b:d8:a2:3f:cb:50:
                    c1:64:e5:48:04:c3:b2:04:e3:f2:4c:2f:0e:e2:a6:
                    c3:7c:36:24:dc:97:c9:f0:ba:ad:87:0f:71:45:9c:
                    6a:7f:d4:4c:d5:31:8e:49:a8:e4:3d:c4:ec:5e:54:
                    bf:f9:ba:ce:21:4c:11:15:7d:f0:d3:7a:77:f6:66:
                    5d:07:4e:4a:d3:0e:f0:52:0d:d9:cf:81:86:fe:9b:
                    c8:f8:e4:8d:d6:d1:d0:85:7f
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha1WithRSAEncryption
        5e:4c:38:59:95:e5:11:b4:a3:d5:88:1f:3c:c0:33:67:cb:b2:
        14:85:73:c3:5a:b8:23:bf:1d:25:2b:a9:38:93:da:fb:67:17:
        26:6c:79:07:dd:7f:3c:3f:b0:33:17:d1:c2:41:f7:c9:ce:1e:
        32:1c:a1:a0:a3:50:67:56:1b:58:d9:b4:48:56:70:00:43:22:
        a9:0c:17:be:67:42:f4:98:d6:d8:c0:d0:4f:6a:73:d1:a8:57:
        91:3c:02:dc:dc:8f:e3:fb:48:28:06:a2:8e:8e:27:b2:39:d7:
        3e:ce:63:ae:66:9b:ec:38:ee:09:77:dc:0f:91:40:ab:28:0f:
        ae:a9

Die beantragte Gültigkeitsdauer wird nirgends erwähnt.

Irgendwelche Vorschläge?

9voto

Wim Lewis Punkte 91

Ich habe versucht, herauszufinden, wie man Anfrage eine bestimmte Gültigkeitsdauer in einem CSR, und soweit ich das beurteilen kann, enthält der CSR diese Information einfach nicht. Die CSR-Struktur ist in PKCS#10 / RFC2986 definiert, und sie enthält kein spezielles Feld für eine gewünschte Gültigkeitsdauer. Die Attribute und Erweiterungen, die in die CSR aufgenommen werden können, sind in PKCS#9 aufgeführt, und dort steht nichts über Gültigkeitszeiträume. Und schließlich kann ich eine openssl asn1parse auf meinen generierten CSRs und stelle fest, dass keine Informationen über den Gültigkeitszeitraum enthalten sind, egal, was ich an openssl req .

0 Stimmen

Ich habe eine selbstsignierte CA und durch die Bereitstellung der -days 3650 Argument an den Signierbefehl kann ich die Gültigkeit des erzeugten Zertifikats festlegen. Etwas in der Art von openssl ca -policy policy_anything -out newcert.pem -days 3650 -infiles newreq.pem

6voto

bennos Punkte 303

Ich bin über Ihre Frage gestolpert, als ich nach der Gültigkeit eines CSR recherchierte. Wie andere bereits erwähnt haben, ist die Gültigkeitsdauer nicht in der CSR enthalten, aber ich war neugierig auf die -days Option, die viele Menschen in ihre Beispiele für die Erstellung einer CSR aufnehmen. Nach der Lektüre der Dokumentation von OpenSSL Es ist ganz klar:

-Tage n

Wenn die Option -x509 verwendet wird, gibt dies die Anzahl der Tage an, für die das Zertifikat zertifiziert werden soll. Der Standardwert ist 30 Tage.

und die -x509 gibt ein selbstsigniertes Zertifikat anstelle einer Zertifikatsanforderung aus

-x509

diese Option gibt ein selbstsigniertes Zertifikat anstelle einer Zertifikatsanforderung aus. Dies wird in der Regel verwendet, um ein Testzertifikat oder eine selbstsignierte Root-CA zu erzeugen. Die dem Zertifikat hinzugefügten Erweiterungen (falls vorhanden) werden in der Konfigurationsdatei angegeben. Sofern nicht mit der Option set_serial angegeben, wird eine große Zufallszahl für die Seriennummer verwendet.

1voto

v3nM Punkte 902

Auch wenn Sie bei der Erstellung der CSR eine bestimmte Gültigkeitsdauer für Ihr Zertifikat beantragen, können Sie nicht davon ausgehen, dass diese Gültigkeit von der CA akzeptiert wird. Die meisten CAs würden eine vordefinierte Gültigkeitsdauer bevorzugen, und nur wenige CAs sind mit der angeforderten Gültigkeitsdauer einverstanden und erstellen die CSR entsprechend. Die ASN.1-Struktur der CSR nach PKCS#10-Standard enthält keine Angaben zur Gültigkeitsdauer. Daher können Sie diese Information nicht aus dem CSR extrahieren.

-2voto

Dmitry Khalatov Punkte 4153

Versuchen Sie hinzuzufügen -days xx Parameter für den Befehl zur Erstellung der Anfrage

0 Stimmen

Dmitry: Ihr Kommentar beantwortet meine Frage nicht ganz: Ich weiß bereits, wie man -days bei der Erstellung einer CSR verwendet, und auch, wie man es bei der Ausstellung eines Zertifikats verwendet. Was ich wissen möchte, ist, wie man den Wert für -days extrahiert, der bei der Erstellung der CSR verwendet wurde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X