Hinzufügen von SAN (Subject Alternate Names) zu einer vorhandenen CSR (Cert Signing Request)


9

Kann mir jemand sagen, wie ich einer vorhandenen CSR eine Reihe von alternativen Betreffnamen hinzufüge?

Ich spreche nicht davon, eine CSR mit SANs zu generieren oder SANs zum Zeitpunkt der Signatur hinzuzufügen - ich weiß, wie man diese beiden Dinge macht.

Hintergrund: Das Problem, das wir haben, ist, dass Sie mit HP Blade-Chassis CSRs generieren können, aber nur ein einziges SAN zulassen. Wir können keine CSR verwenden, die an anderer Stelle generiert wurde, da wir das resultierende Zertifikat nicht verwenden konnten, da es keine Möglichkeit gibt (die ich finden kann), den Schlüssel auf das Blade-Chassis hochzuladen.

Der Standardprozess unserer Zertifizierungsstelle ermöglicht nicht das Hinzufügen von SANs zur Signaturzeit. Sie sind bereit zu experimentieren, aber ich versuche, am Ende eine Lösung zu finden, da dies bedeutet, dass wir uns nicht darauf verlassen müssen, dass sie einen nicht standardmäßigen Prozess für uns haben - meiner Erfahrung nach, wenn sie einen nicht standardmäßigen Prozess verwenden müssen Das Leben wird irgendwann schwierig. ZB wenn ein Mitarbeiter, der den nicht standardmäßigen Prozess kennt, aufgrund von Urlaub usw. nicht anwesend ist.

Die derzeitige Methode besteht darin, über die Web-GUI eine Verbindung zum integrierten Administrator des Bladechassis herzustellen und die CSR mit einem einzigen CN zu generieren.

Die Web-GUI erlaubt nur ein einziges SAN in der CSR.

Dann signieren wir es selbst mit der folgenden Zeilengruppe in der openssl-Konfiguration:

[ v3_ca ]
subjectAltName = "DNS:bladesystem8,DNS:bladesystem8.services.adelaide.edu.au,DNS:bladesystem8-backup,DNS:bladesystem8-backup.services.adelaide.edu.au"

Das resultierende Zertifikat verfügt über die zusätzlichen SANs.


Wie generieren Sie derzeit die Zertifikate auf dem Blade-Chassis? Welche Methode verwenden Sie, um usw. zu verbinden? Welches Modell Blade-Chassis?
Eli

Chassis ist ein c7000. Ja, wir erstellen derzeit CSRs auf dem Gehäuse und fügen das SAN zur Signierzeit hinzu, aber das gilt für selbstsignierte Zertifikate.
Jason Tan

Mit welcher Methode stellen Sie derzeit eine Verbindung her und wie generieren Sie Zertifikate dafür?
Eli

Ich habe die Hauptfrage so bearbeitet, dass sie die aktuelle Methode enthält.
Jason Tan

1
Können Sie den Cert & Private Key importieren, wenn Sie ihn auf einem anderen Computer generieren und exportieren?
Clint

Antworten:


15

Wenn Ihr Gehäuse das Hinzufügen von SANs nicht unterstützt, müssen Sie den Schlüssel vom Gehäuse abziehen und die CSR mit openssl generieren.

Stellen Sie sicher, dass req_extensions = v3_reqder [ req ]Abschnitt nicht kommentiert ist .

Fügen Sie das subjectAltNamedem [ v3_req ]Abschnitt hinzu.

Generieren Sie eine neue CSR.

openssl req -new -key extracted_c7000.key -out your_new.csr

Sie können eine vorhandene CSR nicht bearbeiten.


Was Cakemox gesagt hat. Wenn Sie ein Zertifikat (dh eine signierte CSR) nach der Signierung bearbeiten könnten, würde dies den gesamten Zweck der Zertifizierungsstellen zunichte machen.
MadHatter

Ich möchte den CSR nach seiner Unterzeichnung nicht mehr bearbeiten - das würde, wie Sie sagen, die Puprose besiegen. Ich möchte die CSR nach der Generierung bearbeiten, aber BEVOR sie signiert ist. Es ist definitiv möglich, Teile eines CSR vor dem Signieren mit openssl zu bearbeiten.
Jason Tan

Wenn ich den Schlüssel herunterladen könnte, würde ich. Entschuldigung, das habe ich in der ursprünglichen Frage nicht erwähnt, aber ich konnte es nicht finden, um den Schlüssel herunterzuladen. Ich würde das Kopfgeld genauso gerne an jemanden zahlen, der mir sagen könnte, wie ich den Schlüssel herunterladen soll.
Jason Tan

Zu Ihrer Information - Es ist definitiv möglich, Teile einer CSR vor dem Signieren mit openssl zu bearbeiten, insbesondere die Option "openssl req -subj". Soweit ich jedoch die SAN-Erweiterung v3 hinzufügen kann, können Sie hiermit lediglich eine neue Betreffzeile mit zusätzlichen CNs angeben.
Jason Tan

2
Der CSR wird vom privaten Schlüssel des Computers signiert, sodass Sie ihn nach der Generierung nicht mehr bearbeiten können (andernfalls kann er nicht mehr signiert werden). Es ist jedoch möglich, dass die Zertifizierungsstelle die im öffentlichen Zertifikat enthaltenen Felder bearbeitet. Dies ist die einzige Möglichkeit, das SAN-Feld zu ändern (über das Sie keine Kontrolle haben, wenn Sie es an eine öffentliche Zertifizierungsstelle senden).
Chris S

0

Wichtiger Hinweis: All dies ist etwas spekulativ. Wenn Sie also tief im Code stecken und nicht mit dem übereinstimmen, was ich sage, glauben Sie dem Code. Ich bin kein CA-Experte, ich spiele nur einen im Fernsehen. Das gesagt:

Als Merkmal von CSRs wird es schwierig. Der letzte Schritt beim programmgesteuerten Generieren einer CSR besteht darin, alles, was Sie erstellt haben, zu hashen und dann mit dem privaten Schlüssel zu signieren. Während Sie diese Attribute zum Text der CSR hinzufügen könnten, würde die Signatur nicht mit dem Inhalt übereinstimmen, sodass keine Zertifizierungsstelle sie signieren würde.

In Ihrem Fall kontrollieren Sie jedoch die Zertifizierungsstelle (oder stehen zumindest in Kontakt mit ihr). Dies gibt Ihnen zwei Möglichkeiten:

  1. Sie können die Zertifizierungsstelle anweisen, die Signatur auf dem CSR leichtfertig zu ignorieren und trotzdem ein Zertifikat auszustellen.
  2. Sie können von der Zertifizierungsstelle ein anderes Zertifikat als das angeforderte ausstellen lassen (z. B. durch Hinzufügen von Attributen).

Von diesen scheint # 1 bei weitem die einfachste zu sein. Sie müssen das manipulationssichere Siegel von OpenSSL aufbrechen, um dies zu erreichen. Es verfügt jedoch über einige Funktionen, die die Arbeit erheblich erleichtern sollen. Ich würde mit asn1parse beginnen, das Ihnen zeigt, wie Sie die CSR aufteilen können.


Bei weiteren Untersuchungen ist Option 2 eigentlich auch recht einfach und wird von einer Reihe von Zertifizierungsstellen durchgeführt (z. B. zum Hinzufügen site.comzu einem www.site.comZertifikat als SAN).
BMDan

0

Während die Antwort von cakemox definitiv die einfachste ist, wenn Sie irgendwie eine Kopie des privaten Schlüssels erhalten können, gibt es eine andere Möglichkeit, wenn Sie dies nicht können, indem Sie den CSR im Grunde mit einem "Enrollment Agent" -Zertifikat neu signieren.

Dieser Blog-Beitrag von css-security.com enthält alle wichtigen Details. Die allgemeine Übersicht über den Prozess sieht jedoch folgendermaßen aus:

  • Erwerben Sie ein Enrollment Agent-Zertifikat
  • Ändern Sie eine SSL-Zertifikatvorlage so, dass für die Ausstellung ein EA-Zertifikat erforderlich ist
  • Erwerben Sie einen CSR, der SAN-Informationen benötigt
  • Verwenden Sie das EA-Zertifikat, um die CSR beim Hinzufügen der SAN-Informationen zu kündigen

Als ich das persönlich ausprobiert habe, bin ich mir ziemlich sicher, dass ich den Teil über das Ändern der Zertifikatvorlage übersprungen habe. Vorausgesetzt, Sie können ein Enrollment Agent-Zertifikat für sich selbst erstellen, sieht der eigentliche Prozess ungefähr so ​​aus.

Erstellen Sie eine san.inf mit den darin enthaltenen SAN-Erweiterungsinformationen

[Extensions]
2.5.29.17="{text}dns=mysan1.example&dns=mysan2.example"

Unterschreiben Sie die Anfrage erneut

certreq -policy -config "myca.example\CA" orig-request.csr san.inf corrected-request.csr

Senden Sie die korrigierte Anfrage

certreq -submit -config "myca.example\CA" -attrib "CertificateTemplate:MyTemplate" corrected-request.csr

Fahren Sie dann wie gewohnt mit dem Ausstellungsprozess fort.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.