Posso riutilizzare un CSR SSL?


21

Ho generato un certificato SSL autocertificato per testare un nuovo sito Web. È giunto il momento per il sito di andare in diretta e ora voglio acquistare un certificato da GeoTrust. Posso usare lo stesso CSR che ho generato per il self cert o devo crearne uno nuovo?

Ricco

Risposte:


19

Fintanto che utilizzi la stessa chiave, dominio (aka nome comune), dettagli di contatto e periodo di validità, dovresti essere in grado di utilizzare lo stesso CSR.

Sebbene sia sincero generare un CSR è un lavoro piuttosto semplice, quindi se devi modificare i dettagli di contatto (su cui molti provider SSL sono severi) non è un grosso problema.


1
Sono d'accordo. Generare un CSR è un compito così banale che non vedo perché ti dovresti nemmeno preoccupare di riutilizzarne uno.
joeqwerty,

5
Una volta installato OpenSSL, è possibile generare un nuovo CSR in circa 30 secondi. E se pensi che ci vorrà molto più tempo, allora fallo sicuramente perché hai bisogno della pratica !!!!!
Austin '' Pericolo '' Powers

1
Non applicabile al caso del PO, ma se stai cercando di utilizzare il pinning del certificato, è più pratico usare lo stesso CSR che aggiornare le app lato client.
nero,

Se la chiave, il dominio e i dettagli sono gli stessi, il CSR sarà identico.
graywh

11

Per il tuo esempio, non penso che valga la pena provare a riutilizzare i CSR. Tuttavia, per un gruppo diversificato di sviluppatori Apple iOS (come ho fatto io) c'è una buona ragione per farlo. Creiamo (in realtà, chiediamo ad Apple di creare) tutti i nostri certificati di firma e rimuoviamo i certificati dalla stessa chiave privata. In questo modo tutti possiamo collaborare facilmente sulle nostre oltre 85 app. Per questo motivo, manteniamo un singolo CSR in giro e utilizziamo sempre lo stesso per tutto il tempo in cui la chiave è valida.

Per quanto ne so, non c'è motivo di generare ripetutamente CSR da una singola chiave privata. Mi piacerebbe essere corretto se sbaglio.


6
Sono passati 4 anni senza correzione. Immagino di non sbagliarmi.
Bruno Bronosky,

5

Il vantaggio principale di disporre di certificati a durata limitata è la riduzione del danno in caso di perdita della chiave privata. Qualcuno che possiede la chiave privata può altrimenti impersonare di essere te per sempre se riutilizzi il CSR, perché il riutilizzo del CSR implica anche il riutilizzo della tua chiave privata.

Per favore, non farlo, è meglio automatizzare la generazione sia delle chiavi private che dei CSR e trovare modi convenienti per distribuire le chiavi private in continua evoluzione ai server di build delle applicazioni e ai server push. La maggior parte dei semplici sviluppatori mortali normalmente non dovrebbe mai fare una versione di rilascio / distribuzione per l'app store, quindi non avrà bisogno delle chiavi private.


1
Sebbene sia vero che "riutilizzare il CSR implica anche il riutilizzo della tua chiave privata", ciò non significa che "impersonare di essere te per sempre se riutilizzi il CSR". Se decidi di usare una chiave per N mesi, è bene usare lo stesso CSR per quegli N mesi.
Bruno Bronosky,

2
Sì, hai ragione Bruno. Supponevo che le persone che riusavano il CSR lo facessero per ignoranza e quindi continuavo quella pratica "per sempre", tuttavia alcuni potrebbero essere consapevoli dei problemi e farlo basandosi su un'attenta pianificazione per un periodo di tempo limitato.
Stefan L

1

In teoria si può davvero riutilizzare lo stesso CSR, poiché questo è solo un contenitore per

  • la tua chiave pubblica (solo i numeri utilizzati per la crittografia RSA (matematica specifica))
  • i dettagli "Oggetto" (chi sei, quale dominio, ecc ...) Testo utilizzato per identificare il proprietario di quella chiave pubblica

Questo è tutto ciò che riguarda un certificato (abbreviazione di PublicKey Certificate)

Ma come notato in altre risposte, è buona norma cambiare regolarmente la chiave privata, in modo da implicare un nuovo certificato e quindi un nuovo CSR per ottenerlo.

Puoi facilmente guardare il contenuto di un CSR

per esempio

$ 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

E 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.