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.
Antworten:
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
-sha256
Parameter, um Ihre CSR mit SHA256 wie folgt zu signieren:So überprüfen Sie den Hash-Typ eines CSR
Und so ermitteln Sie den Hash-Typ Ihres CSR:
Gut. Es verwendet SHA256 genau so, wie wir es wollten.
quelle
Wenn Sie OpenSSL verwenden, können Sie einfach die
-sha256
Befehlszeilenoption hinzufügen , die die CSR mit dem SHA-256-Signaturalgorithmus generiert.quelle