Kann ich eine SSL-CSR wiederverwenden?

21

Ich habe ein selbstzertifiziertes SSL-Zertifikat zum Testen einer neuen Website erstellt. Die Zeit ist reif für die Website und ich möchte jetzt ein Zertifikat von GeoTrust erwerben. Kann ich dieselbe CSR verwenden, die ich für das Selbstzertifikat erstellt habe, oder muss ich eine neue erstellen?

Reich

kim3er
quelle

Antworten:

19

Solange Sie denselben Schlüssel, dieselbe Domain (alias Common-Name), dieselben Kontaktdaten und denselben Gültigkeitszeitraum verwenden, sollten Sie in der Lage sein, denselben CSR zu verwenden.

Um ehrlich zu sein, ist das Generieren einer CSR eine ziemlich einfache Aufgabe. Wenn Sie also die Kontaktinformationen ändern müssen (was bei vielen SSL-Anbietern streng ist), ist dies keine große Sache.

Coops
quelle
1
Genau. Die Erstellung einer CSR ist eine so einfache Aufgabe, dass ich nicht verstehe, warum Sie sich überhaupt die Mühe machen würden, eine CSR wiederzuverwenden.
Joeqwerty
5
Sobald Sie OpenSSL installiert haben, können Sie in ca. 30 Sekunden einen neuen CSR generieren. Und wenn Sie glauben, dass es viel länger dauert, dann tun Sie es auf jeden Fall, weil Sie die Übung brauchen !!!!!
Austin '' Danger '' Powers
1
Gilt nicht für den OP-Fall, aber wenn Sie das Anheften von Zertifikaten verwenden möchten, ist es praktischer, dieselbe CSR zu verwenden, als Ihre clientseitigen Apps zu aktualisieren.
schwarz
Wenn der Schlüssel, die Domäne und die Details identisch sind, ist der CSR identisch.
Graywh
11

Für Ihren Beispielfall halte ich die Wiederverwendung von CSRs nicht für sinnvoll. Für ein großes Team von Apple iOS-Entwicklern (wie ich) gibt es jedoch einen guten Grund, dies zu tun. Wir erstellen alle unsere Signaturzertifikate (und bitten Apple, sie zu erstellen) und stoßen die Zertifikate von demselben privaten Schlüssel ab. Auf diese Weise können wir alle problemlos an unseren über 85 Apps zusammenarbeiten. Aus diesem Grund halten wir einen einzelnen CSR herum und verwenden immer den gleichen, solange der Schlüssel gültig ist.

Soweit ich weiß, gibt es keinen Grund, CSRs wiederholt aus einem einzelnen privaten Schlüssel zu generieren. Ich würde gerne korrigiert werden, wenn ich falsch liege.

Bruno Bronosky
quelle
6
Es ist 4 Jahre ohne Korrektur gewesen. Ich glaube, ich liege nicht falsch.
Bruno Bronosky
5

Der Hauptvorteil von Zertifikaten mit begrenzter Laufzeit besteht darin, den Schaden zu verringern, wenn Ihr privater Schlüssel durchgesickert ist. Jemand, der den privaten Schlüssel besitzt, kann sich andernfalls für immer als Sie ausgeben, wenn Sie den CSR wiederverwenden, da die Wiederverwendung des CSR auch die Wiederverwendung Ihres privaten Schlüssels impliziert.

Tun Sie das bitte nicht, es ist besser, die Generierung sowohl der privaten Schlüssel als auch der CSRs zu automatisieren und bequeme Möglichkeiten zu finden, um die sich ständig ändernden privaten Schlüssel auf Anwendungserstellungsserver und Push-Server zu verteilen. Die meisten einfachen Entwickler müssten normalerweise ohnehin nie ein Release / Distribution-Build für den App Store erstellen, daher werden die privaten Schlüssel nicht benötigt.

Stefan L
quelle
1
Es stimmt zwar, dass "die Wiederverwendung des CSR auch die Wiederverwendung Ihres privaten Schlüssels impliziert", dies bedeutet jedoch nicht, dass Sie sich für immer ausgeben, wenn Sie den CSR wiederverwenden ". Wenn Sie sich entscheiden, einen Schlüssel für N Monate zu verwenden, ist es in Ordnung, für diese N Monate denselben CSR zu verwenden.
Bruno Bronosky
2
Ja, du hast recht, Bruno. Ich ging davon aus, dass die Leute, die die CSR wiederverwenden, dies aus Unwissenheit taten, und setzte daher diese Praxis "für immer" fort. Es könnte jedoch einige geben, die sich der Probleme bewusst sind und dies auf der Grundlage einer sorgfältigen Planung für eine begrenzte Zeit tun.
Stefan L
1

Sie können in der Tat theoretisch denselben CSR wiederverwenden, da dies nur ein Container für ist

  • Ihr öffentlicher Schlüssel (nur Zahlen, die für die RSA-Verschlüsselung verwendet werden (spezifische Mathematik))
  • Ihre "Betreff" -Details (wer Sie sind, welche Domain usw.) Text zur Identifizierung des Besitzers dieses öffentlichen Schlüssels

Darum geht es schließlich bei einem Zertifikat (kurz für PublicKey Certificate)

Wie in anderen Antworten erwähnt, ist es jedoch eine gute Praxis, den privaten Schlüssel regelmäßig zu ändern, sodass ein neues Zertifikat und damit eine neue CSR erforderlich sind, um es zu erhalten.

Sie können den Inhalt eines CSR ganz einfach anzeigen

z.B

$ openssl req -new -batch -subj "/CN=My Common Name/OU=My Org Unit/O=My Organisation" -sha256 -newkey rsa:2048 -keyout private.key -nodes -out request.csr
Generating a 2048 bit RSA private key
.............................................................................................+++++
.........+++++
writing new private key to 'private.key'
-----

$ ls
private.key  //  keep that private, the PublicKey side is easily be generated from this
request.csr // your PublicKey + Subject details

CSR

$ openssl req -in request.csr -text -noout
Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: CN = My Common Name, OU = My Org Unit, O = My Organisation
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:                    ///////// Matches the PrivateKey modulus
                    00:b1:e8:de:e6:bf:21:45:51:75:15:23:5e:6e:7a:
                    7d:95:53:e5:d5:ec:5b:38:cd:7f:38:2d:53:8a:54:
...
                    fe:b5:78:de:9b:c1:ee:c1:51:6f:fd:fb:0e:62:09:
                    03:87
                Exponent: 65537 (0x10001)   ///////// Matches the PrivateKey publicExponent
        Attributes:
            a0:00
    Signature Algorithm: sha256WithRSAEncryption
         a1:44:1f:b2:ec:c0:82:bc:99:da:69:ce:3e:77:9f:46:51:95:
...
         3b:2d:84:e3:73:ac:be:c8:da:29:fd:62:90:11:dd:8a:a6:4f:
         7b:f8:ac:f1

Und PrivateKey

$ openssl rsa -in private.key -text -noout
// all the below are numbers that takes part in Mathematical encryption (search for RSA maths)
RSA Private-Key: (2048 bit, 2 primes)

// The Numbers that can be freely published
modulus:
    00:b1:e8:de:e6:bf:21:45:51:75:15:23:5e:6e:7a:
    7d:95:53:e5:d5:ec:5b:38:cd:7f:38:2d:53:8a:54:
...
    fe:b5:78:de:9b:c1:ee:c1:51:6f:fd:fb:0e:62:09:
    03:87
publicExponent: 65537 (0x10001)

// The Numbers that must be kept private !
privateExponent:
    0a:81:73:d8:30:65:28:90:bc:d7:38:b5:74:d4:aa:
...
    b1:9b:30:2e:a2:dd:46:c1:10:0f:b0:da:ac:b6:ea:
    01
prime1:
    00:e0:28:01:87:95:70:d0:b8:21:07:e0:4f:96:a6:
...
    66:28:8f:3d:d7:eb:e6:b4:81
prime2:
    00:cb:2e:fe:1b:b6:30:ea:8d:9e:6d:23:83:d8:b6:
...
    4d:64:39:5c:9c:18:a0:14:07
exponent1:
    22:e2:36:f2:b9:af:f7:db:5f:d0:90:f8:f1:d1:ff:
...
    3a:31:a8:87:2c:c0:17:81
exponent2:
    5a:8b:3d:77:f1:ef:c8:86:85:a4:13:20:8d:31:a4:
...
    a5:ba:1e:37:fd:8d:50:7f
coefficient:
    00:d3:d3:b6:81:4b:a9:c2:aa:ff:e1:07:cb:de:ea:
...
    5c:e9:3b:d3:f7:67:82:c3:7f
Julien
quelle