So erstellen Sie eine TLS SHA256-Zertifikatanforderung

10

Einer unserer Geschäftspartner fordert uns auf, ein TLS SHA256-Zertifikat zu verwenden, um eine Verbindung zu ihren APIs herzustellen. Ich bin nicht sicher, wie ich diese Anfragen generieren soll. Ich habe in der Vergangenheit openssl verwendet, um diese Anforderungen zu erstellen, aber es wurde ein SSL-Zertifikat mit SHa1 generiert. Kann ich openssl verwenden, um diese Anfrage zu generieren? Wenn nicht, wie generiere ich das, wonach sie fragen?

Ich bin kein Experte auf diesem Gebiet, daher weiß ich nicht einmal, ob das, was ich frage, Sinn macht.


quelle
Es wäre amüsant für mich, wenn Sie einer der 12 Personen wären, denen ich heute sagen musste, dass sie mit einem SHA256 CSR anstelle von SHA1 zurückkehren sollen.
Hyppy
@Hyppy Ich hoffe, Sie finden es am Ende des Jahres immer noch amüsant :)
Maarten Bodewes

Antworten:

12

CSR-Hash und Cert-Hash sind nicht miteinander verbunden

Der Hash-Typ auf der Anforderung und auf dem tatsächlichen Zertifikat sind nicht miteinander verbunden.

Die Zertifizierungsstelle überprüft die Signatur auf dem CSR. Auf diese Weise kann die Zertifizierungsstelle überprüfen, ob die CSR während der Übertragung nicht geändert wurde. Das ist alles, was die Unterschrift auf dem CSR tut.

Es gibt keine offizielle (oder sogar halboffizielle) In-Band-Methode, um einer CA mitzuteilen, welchen Hash Sie möchten. Stattdessen kann ein CA-Unternehmen mehrere CAs ausführen, von denen eine ausschließlich SHA256 verwendet. Und wenn Sie SHA256 möchten, senden Sie Ihre CSR auf der Website dieser einen bestimmten SHA256-only-CA. (Und nicht auf der Website ihrer SHA1-CA.)

Was oft theoretisiert wird , ist ungefähr so: "Wenn ich eine mit SHA1 signierte CSR einreiche, wird mein Zertifikat mit SHA1 signiert." Dies wird normalerweise nicht gemacht. ( Die einzige CA, von der ich weiß, dass sie dies seit einiger Zeit getan hat, war Gandi.net .)

So signieren Sie eine CSR mit SHA256
Verwenden Sie jedoch den -sha256Parameter, um Ihre CSR mit SHA256 wie folgt zu signieren:

openssl req -new -newkey rsa: 2048 -nodes -sha256 -out www.example.com.sha256.csr -keyout www.example.com.key -subj "/ C = US / ST = ExampleState / L = ExampleLocation / O. = ExampleOrganisation / CN = www.example.com "

So überprüfen Sie den Hash-Typ eines CSR
Und so ermitteln Sie den Hash-Typ Ihres CSR:

$ openssl req -in www.example.com.sha256.csr -noout -text | grep Signature  
    Signature Algorithm: sha256WithRSAEncryption

Gut. Es verwendet SHA256 genau so, wie wir es wollten.

StackzOfZtuff
quelle
5

Wenn Sie OpenSSL verwenden, können Sie einfach die -sha256Befehlszeilenoption hinzufügen , die die CSR mit dem SHA-256-Signaturalgorithmus generiert.

Hyppy
quelle