CSR - Certificate Signing Request

Um ein Zertifikat zu erhalten, muss man einige Angaben machen und diese von der Zertifizierungsstelle "signieren" lassen. Wenn Sie von einem Windows Client sich ein Zertifikat mit einer integrierten Windows CA holen, dann merken Sie in der Regel gar nicht, was im Hintergrund abläuft weil alles automatisch passiert.

Anders ist es, wenn Sie ein öffentliches Zertifikat benötigen. Dann müssen Sie eine "Zertifikatsanforderung" schreiben und diese von der Zertifizierungsstelle beglaubigen lassen. Diese Seite soll ihnen helfen diese Anforderung zu verstehen und dass ein CSR keine "geheimen" Daten enthält. Allerdings muss die Zertifizierungsstelle natürlich schon sicher stellen. dass die Anforderung auch wirklich von einer berechtigten Quelle stammt. Das wird sie aber schon aus monetären Gründen tun, da die Ausstellung eines Zertifikats natürlich auch berechnet wird.

Was ist ein CSR ?

Ein CSR ist die Vorstufe eines Zertifikats und ein Zertifikat ist eine kryptografisch gesicherte Datei, die die Identität eines Systems belegt und anhand des ebenfalls hinterlegten Schlüssel eine Signierung und Verschlüsselung der Daten erlaubt.

Wichtig:
Das Zertifikat selbst ist von Natur aus "öffentlich" und enthält natürlich keine privaten Schlüssel.

Der CSR enthält nicht mehr sondern eher weniger Informationen als das später ausgestellte Zertifikat. Der CSR enthält natürlich alle Informationen, die für die Ausstellung des Zertifikats erforderlich sind wie:

  • Hostname
  • Antragsteller
  • Zertifikatvorlage bzw. Typ
  • PublicKey
  • eventuell noch andere Felder

Das es ja sehr viele Betriebssysteme und Plattformen mit unterschiedlichen Codierungsverfahren (Es gibt mehr als ASCII, ANSI, UNICODE) gibt, werden die Anfragen meist als "ASCII Text" mit BASE64 codiert erstellt. Das sieht dann etwas wie folgt aus

-----BEGIN NEW CERTIFICATE REQUEST-----
MIIGWzCCBEMCAQAwezEeMBwGA1UEAxMVY29tbW9ubmFtZS5kb21haW4udGxkMRMw
EQYDVQQLEwpPcmdFaW5oZWl0MRUwEwYDVQQKEwxPcmdhbmlzYXRpb24xEjAQBgNV
BAcTCVBhZGVyYm9ybjEMMAoGA1UECBMDTlJXMQswCQYDVQQGEwJERTCCAiIwDQYJ
KoZIhvcNAQEBBQADggIPADCCAgoCggIBALeYjVL2ZkFa8CVgM1pV2d/JAMPt/RWp
Epo34luiTMA92a4l4IWUca1HTXvgSC9bmLVw4dBCYt3MbxOYHRm/d00f4UhHX01E
sfvInqz1hy1TQfJSJfXqcl6BysIeeYVT1+12vkulfItN3WRcbQ/CCAwYWc+UlSaU
WUQz/ulGkA8/0wvYDzMQjj1rmnV/fq58ONvY5gcz11PHwE6ELmaRsx5EA8+1kiHR
PDiorFN8J1Rdekkwx4kPygSQl+UFCJZJ7W+KvVFwu8ulVEzhBU+tSE8IcGejeTxa
lsqdRKFt2+qPRoGKV5+SNN8l+/eDXET3cNZp2k4q4bT4KQuqxiFPFH49obuNWqz8
GRKdmj7wzvvXthsq74MnbiWni6DzkNnAmtZQWJOgpv1uaF21khig1dGzT4nR5GT4
wjRrFXsUU+vwR80n01pQJsd4StkbpeXN+BzwQefYpwR+uPX5uYouL7uivArRvVAx
Yyi/bpryKxSRswNs136lk4c3gNWZ1IVxrB5QkvKTa64ErptX5D7UieA8emhuXE8D
SoXKDimuL/3TDBtu2Asi5F5IN/VPePtCjZ7wPd2KvKQrJt2c9iTU4t3ZPLrwTpHw
CWXfNq+4qftnyfhgcgw92tELB6F6kVxe4ryz66B0qUCl4xR/4PVYGOVKgxP4s8fs
RDtD/po5NF+BAgMBAAGgggGZMBoGCisGAQQBgjcNAgMxDBYKNS4wLjIxOTUUMjB7
BgorBgEEAYI3AgEOMW0wazAOBgNVHQ8BAf8EBAMCBPAwRAYJKoZIhvcNAQkPBDcw
NTAOBggqhkiG9w0DAgICAIAwDgYIKoZIhvcNAwQCAgCAMAcGBSsOAwIHMAoGCCqG
SIb3DQMHMBMGA1UdJQQMMAoGCCsGAQUFBwMBMIH9BgorBgEEAYI3DQICMYHUMIHr
AgEBHloATQBpAGMAcgBvAHMAbwBmAHQAIABSAFMAQQAgAFMAQwBoAGEAbgBuAGUA
bAAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHID
gYkAJ1L9qpiQmoL5dNlVLkM2P6UFcMYME1cUMidPEUHEGfxOB1eTGXu8rhguJfDS
cUiy9h1SOkHO8CnjCQFoYPhb/iRhaCbbu1UsNfoJG1imCP07Lr8k8gOW76zuvn+z
fU5AbSQjJf/SbXyLZO9TDbe4Y2aklRo2aeZBVm2GXz3ezjYAAAAAAAAAADANBgkq
hkiG9w0BAQUFAAOCAgEAhc1vPp2iH8lpEFN6Sb/cXbErepcI+5ypk3t2/x0dtQIm
nb5Jx6PCWcTMsIzyvFoCHYcm/xhmItxnYChITmndGR3n7d21NlwmsDd1ANkd11KX uqCOrftVHw9H3D5zs2ginR7s7P07V5MKmPYkQXaJ8jnaSBhISB9Kw3NlwSO22dE7
wZhILh1Cxcjz/IjPul8MvUIfpub06eE/UWsSn0zwvTCz8BIvpTldMi6BTogQufmE
QyJVH6XSjUjWSUGmEKUFnLFLqGrefFOGlmL2MQTzbdKwRThklD0WME2B5gb2mS0+
ZHx5x6Fx01KoTp9P/dhmOiD+w2RkE4Ukz9ia5ed9Yfjh/DZAE+tRIYBSJ2XUihJE
6IQia4ja72eoGn4x2YWl3u29zRDh4l9FWZ73/hYzN+vEhTTwmlvGOQnY1cPVA9OH
5uRUDfUSBhjt+ySbNIlooyqf4PZoSV6c1WfDKTWsBlqOtqGChw5HAeMf6DFbwzcY
9QXcPurJZNvlsyyj8Xon+jX18Z8xanZbxvOY7b7Gfg4YZPGDMZVBOHzqHdoH1XP9
0l+7gRZJ7lrYxMJ5BUoZyYOAe+Gg94KALqnZfRWol8M01FRCCgLrda7hPDJ59ZRm
yFXe6y3yFbjoRv5xEq2ybgsjJbIIF2SIPPMpjybEzFrw6P+zmGy3q2wZtHlRfIA=
-----END NEW CERTIFICATE REQUEST-----

Dies ist ein Request eines Windows 2000 IIS für eine TestVM. Sie können diese Date gerne für weitere Experimente verwenden. Die Zertifizierungsstelle macht nichts anderes, als diese Informationen mit einer Prüfsumme (Hash) zu versehen, mit dem privaten Schlüssel der CA zu signieren und ihre Ausstellerinformationen zu addieren.

CSR analysieren

Nun mag es ja ganz nett sein, wenn ein Assistent des IIS (z.B. Zertifikat mit IIS7 anfordern) oder einer anderen Anwendung einen solchen "Request" schon fix und fertig zur Einreichung als Datei abspeichert. Es ist aber gar nicht schwer den Inhalt eines CSR wieder zu decodieren. Natürlich erwarte ich nicht von ihnen, dass Sie nun als BASE64-Decoder arbeiten; das machen schon viele Webseiten, in denen Sie den CSR einfach rein kopieren können:

Die Seite von Commodo würde ich vorziehen, das es sich dabei selbst um eine Zertifizierungsstelle handelt. Einige Zertifizierungsstellen analysieren den CSR ebenfalls bei der Einreichung und zeigen ihnen vorher noch an, welche Daten Sie an die CA senden. Dann sind diese manuellen Prüfungen nicht mehr erforderlich. Die die Daten lieber selbst "offline" prüfen will, kann dies wieder mit OpenSSL tun. Aber dazu besteht fast nie ein Bedarf. Der CSR enthält nur dann "geheime Informationen", wenn z.B.: der Hostname o.ä. nicht bekannt werden darf. Aber Sicherheit durch verbergen ("Security by Obscurity") war noch nie ein guter Ratgeber. Dazu gibt es zu viele automatischen Prozesse, um Dienste zu erforschen.

CSR verarbeiten

Nachdem Sie ein Schlüsselpaar errechnet haben, muss der CSR einige Stufen durchlaufen.

  1. Generierung des Request
    Über einen Assistenten, OpenSSL oder auch einfach durch die Anforderung über die Webseite der CA wird auf dem Endgeräte ein Schlüsselpaar errechnet. Der private Schlüssel verbleibt dabei auf Client (Ausnahme CA mit Private Key Archiv-Anforderung). Die weiterhin eingegebenen Daten zum Hostname aber auch Aussteller etc. werden als Request in der Regel in eine Datei geschrieben oder auf dem Bildschirm zu Übernahme in die Zwischenablage ausgegeben.
  2. CSR einreichen
    Diese Information, welches fast immer einfach eine Textinformation ist, wird auf einem sicheren Weg zur Zertifizierungsstelle gebracht. Das kann einfach eine SSL-Verbindung mit einer erfolgreichen Anmeldung sein.
  3. Signierung des CSR
    Die Zertifizierungsstelle nimmt nun die Anforderung an, prüft die gemachten Angaben und wenn die Anforderung i.O. ist, dann wird daraus ein Zertifikat erstellt, indem die CA sich als "Aussteller" samt weiterer Felder addiert und digital mit ihrem privaten Schlüssel signiert. Nun kann jeder Empfänger prüfen, das das Zertifikat gültig ist.
  4. Zurück zum Anfordernden
    Als Administrator holen Sie sich nun das Zertifikat ab und übertragen es auf den Client. Wichtig ist hierbei, dass es genau der gleichen PC ist, da nur hier der zum Zertifikat passende private Schlüssel wartet.
  5. Das Zertifikat wird installiert
    Mit der Installation des Zertifikats im passenden Zertifikatsspeicher (meist "Lokaler Computer/Registry") kann der Dienst nun endlich das Zertifikat auch den Clients zusenden, damit diese den darin enthaltenen PublicKey verwenden. Der passende private Schlüssel verlässt in der Regel nie das System
  6. Stamm-CAs
    Eventuell reicht es nicht nur das Zertifikat einzuspielen sondern auch das Zertifikat der Stammzertifizierungsstelle und eventuell vorhandener Zwischenzertifizierungsstellen zu addieren. (Zertifikatskette)

Die Ausgabe auf dem Bildschirm oder die herunter geladene Datei sieht dann ähnlich dem Beispiel aus (gekürzt):

-----BEGIN CERTIFICATE-----
MIIGazCCBVOgAwIBAgIHBITDTjI2bzANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAY
.........
mi7ycagDXzcGE8Xod/KeggyOkjOZ95Tije1ih85ooT8IBtIRoxrTFpxwBitGCRIf
rUrcqm/BDDHKJdfx+Ebh
-----END CERTIFICATE-----

Diese Funktionsweise ist für alle Systeme gleich, egal ob es ein PC mit Windows, Linux oder anderen Betriebssystem  ist. Auch Systeme wie Router, Firewalls, Managementboards in PCs arbeiten nach dem gleichen Prinzip.

Troubleshooting

Oft fragen Sie sich vielleicht, wie man erkennen kann, ob auf einem PC noch eine Zertifikatsanforderung vorliegt. Dabei ist es ganz einfach, wenn sie sich noch mal vor Augen führen, was da genau wann passiert

  1. Zertifikat Request
    Technisch wird dabei ein private und Public Key errechnet. Der Private Key liegt in dem lokalen Zertifikatsspeicher
    der Public Key wird als Request weiteren Daten an die CA. gesendet.
    Normalerweise kann den „ausstehenden Request“ auch in der MMC sehen (MMC starte, Zertifikate einbinden und schauen)

    Diese ausstehende Anforderung ist eigentlich schon ein "selbst zertifiziertes" Zertifikat, aber das tut hier nichts zur Sache. Wichtig ist nur, dass hier eben so ein Eintrag vorliegt und wenn man drauf
  2. Zertifikat wird von der CA ausgestellt
    Das ist faktische die CER-Datei mit dem Public Key unterschrieben von der CA. Bei den meisten Zertifizierungsstellen kann man sich den Key auch immer wieder herunter laden. Je nach Betriebssystem gibt es den DER oder Base64-codiert. Dieses Zertifikat muss auf dem PC installiert werden.
    Den kannst du in der Regel von der CA. auch immer wieder runterladen aber das hilft natürlich nur etwas, solange sie noch den privaten Schlüssel haben.
    Nachdem das Zertifikat in den "richtigen" Speicher importiert wurde (Das macht normal der Assistent des IIS oder Exchange richtig, aber sie können mit der MMC das Zertifikat auch problemlos "verschieben", liegt das Zertifikat nun im richtigen Speicher (Rot)

    Kontrollieren Sie aber den Zertifizierungspfad, denn wenn es Zwischenzertifizierungsstellen gibt, dann müssen diese auch auf dem Server in den Zertifikatsspeicher an die richtige Stelle. Ansonsten kann die Anwendung dies nicht finden und kann die Kette nicht an den Client senden.
    In Exchange wird so ein Zertifikat als "ungültig" angezeigt.
    Einige Zertifizierungsstellen erlauben daher auch den Download der Zertifikats "samt" der kompletten Kette

Wenn Sie als sicher sind, eine Zertifikatsanforderung erstellt zu haben und das Zertifikat von der CA auch haben, dann können Sie mit der MMC nachschauen, warum die nicht zueinander finden.

Weitere Links