Puis-je réutiliser un CSR SSL?

21

J'ai généré un certificat SSL auto-certifié pour tester un nouveau site Web. Le moment est venu de mettre le site en ligne et je souhaite maintenant acheter un certificat auprès de GeoTrust. Puis-je utiliser le même CSR que j'ai généré pour l'auto-certification, ou dois-je en créer un nouveau?

Riches

kim3er
la source

Réponses:

19

Tant que vous utilisez la même clé, le même domaine (alias nom-commun), les coordonnées et la période de validité, vous devriez pouvoir utiliser le même CSR.

Bien que pour être honnête, générer un CSR soit un travail assez simple, donc si vous devez modifier les coordonnées (sur lesquelles de nombreux fournisseurs SSL sont stricts), ce n'est pas un gros problème.

Coops
la source
1
Je suis d'accord. Générer une CSR est une tâche si banale que je ne vois pas pourquoi vous vous donneriez la peine d'essayer de la réutiliser.
joeqwerty
5
Une fois OpenSSL installé, vous pouvez générer un nouveau CSR en 30 secondes environ. Et si vous pensez que cela vous prendra beaucoup plus de temps, alors faites-le, car vous avez besoin de la pratique !!!!!
Austin '' Danger '' Powers
1
Ne s'applique pas au cas de l'OP, mais si vous souhaitez utiliser l'épinglage de certificat, il est plus pratique d'utiliser la même CSR que de mettre à jour vos applications côté client.
noir
Si la clé, le domaine et les détails sont identiques, le CSR sera identique.
graywh
11

Pour votre exemple, je ne pense pas que cela vaille la peine d'essayer de réutiliser les CSR. Cependant, pour une grande équipe diversifiée de développeurs Apple iOS (comme moi), il y a une bonne raison de le faire. Nous créons (en fait, demandons à Apple de créer) tous nos certificats de signature et poussons les certificats hors de la même clé privée. De cette façon, nous pouvons tous collaborer facilement sur nos 85+ applications. Pour cette raison, nous gardons un seul CSR qui traîne et utilisons toujours le même aussi longtemps que la clé est valide.

Pour autant que je sache, il n'y a aucune raison de générer à plusieurs reprises des CSR à partir d'une seule clé privée. J'aimerais être corrigé si je me trompe.

Bruno Bronosky
la source
6
Cela fait 4 ans sans correction. Je suppose que je ne me trompe pas.
Bruno Bronosky
5

Le principal avantage d'avoir des certificats à durée limitée est de réduire les dommages en cas de fuite de votre clé privée. Une personne possédant la clé privée peut sinon se faire passer pour vous pour toujours si vous réutilisez la CSR, car la réutilisation de la CSR implique également la réutilisation de votre clé privée.

Veuillez ne pas le faire, il est préférable d'automatiser la génération des clés privées ainsi que des CSR et de trouver des moyens pratiques de distribuer les clés privées en constante évolution aux serveurs de génération d'applications et aux serveurs push. La plupart des simples développeurs mortels n'auraient normalement jamais besoin de faire une version / distribution-build pour l'App Store de toute façon, donc ils n'auront pas besoin des clés privées.

Stefan L
la source
1
Bien qu'il soit vrai que «réutiliser la CSR implique également la réutilisation de votre clé privée», cela ne signifie pas que «usurper l'identité de vous pour toujours si vous réutilisez la CSR». Si vous décidez d'utiliser une clé pendant N mois, c'est bien d'utiliser la même CSR pour ces N mois.
Bruno Bronosky
2
Oui, tu as raison Bruno. J'ai supposé que les personnes réutilisant la RSE l'ont fait par ignorance et j'ai donc continué cette pratique "pour toujours", mais il pourrait bien sûr y en avoir quelques-uns qui sont conscients des problèmes et qui le font sur la base d'une planification minutieuse pendant une durée limitée.
Stefan L
1

Vous pouvez en effet en théorie réutiliser le même CSR, car ce n'est qu'un conteneur pour

  • votre clé publique (uniquement les nombres utilisés pour le chiffrement RSA (mathématiques spécifiques))
  • vos détails "Sujet" (qui vous êtes, quel domaine, etc ...) Texte utilisé pour identifier le propriétaire de cette clé publique

Voilà à quoi sert un certificat (abréviation de PublicKey Certificate)

Mais comme indiqué dans d'autres réponses, c'est une bonne pratique de changer régulièrement de clé privée, ce qui implique un nouveau certificat, et donc une nouvelle CSR pour l'obtenir.

Vous pouvez facilement consulter le contenu d'un CSR

par exemple

$ 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

Et 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
la source