Czy mogę ponownie użyć CSR SSL?

21

Wygenerowałem własny certyfikat SSL do testowania nowej strony internetowej. Nadszedł czas, aby strona została uruchomiona i chcę teraz kupić certyfikat od GeoTrust. Czy mogę użyć tego samego CSR, który wygenerowałem dla certyfikatu własnego, czy muszę utworzyć nowy?

Bogaty

kim3er
źródło

Odpowiedzi:

19

Tak długo, jak używasz tego samego klucza, domeny (zwanej też nazwą zwykłą), danych kontaktowych i okresu ważności, powinieneś być w stanie korzystać z tego samego CSR.

Szczerze mówiąc, generowanie CSR jest dość prostym zadaniem, więc jeśli chcesz zmienić dane kontaktowe (które jest ściśle przestrzegane przez wielu dostawców SSL), nie jest to wielka sprawa.

Coops
źródło
1
Zgadzam się. Generowanie CSR jest tak trywialnym zadaniem. Nie rozumiem, dlaczego w ogóle próbujesz go użyć.
joeqwerty
5
Po zainstalowaniu OpenSSL możesz wygenerować nowy CSR w około 30 sekund. A jeśli uważasz, że zajmie ci to znacznie dłużej - z pewnością zrób to, ponieważ potrzebujesz praktyki !!!!!
Austin „Danger” Powers
1
Nie dotyczy przypadku PO, ale jeśli chcesz użyć przypinania certyfikatów, bardziej praktyczne jest użycie tego samego CSR niż aktualizacja aplikacji po stronie klienta.
czarny
Jeśli klucz, domena i szczegóły są takie same, CSR będzie identyczny.
graywh
11

W twoim przypadku nie sądzę, że warto próbować ponownie wykorzystywać CSR. Jednak dla dużego, różnorodnego zespołu programistów Apple iOS (tak jak ja) istnieje dobry powód, aby to zrobić. Tworzymy (właściwie pytamy Apple o utworzenie) wszystkich naszych certyfikatów do podpisywania i wypychamy je z tego samego klucza prywatnego. W ten sposób wszyscy możemy łatwo współpracować w naszych ponad 85 aplikacjach. Z tego powodu utrzymujemy pojedynczy CSR i zawsze używamy tego samego, dopóki klucz jest ważny.

O ile mi wiadomo, nie ma powodu do wielokrotnego generowania CSR z jednego klucza prywatnego. Chciałbym być poprawiony, jeśli się mylę.

Bruno Bronosky
źródło
6
Minęły 4 lata bez korekty. Chyba się nie mylę.
Bruno Bronosky,
5

Główną zaletą posiadania certyfikatów o ograniczonym okresie ważności jest zmniejszenie szkód w przypadku wycieku klucza prywatnego. Ktoś posiadający klucz prywatny może w inny sposób podszywać się pod Ciebie, jeśli ponownie wykorzystasz CSR, ponieważ ponowne użycie CSR oznacza również ponowne użycie twojego klucza prywatnego.

Nie rób tego, lepiej zautomatyzować generowanie zarówno kluczy prywatnych, jak i CSR i znaleźć dogodne sposoby dystrybuowania ciągle zmieniających się kluczy prywatnych do serwerów budowania aplikacji i serwerów push. Większość zwykłych śmiertelnych programistów normalnie nigdy nie musiałaby tworzyć kompilacji wydania / dystrybucji dla sklepu z aplikacjami, więc nie potrzebuje kluczy prywatnych.

Stefan L.
źródło
1
Chociaż prawdą jest, że „ponowne użycie CSR oznacza również ponowne użycie twojego klucza prywatnego”, nie oznacza to, że „podszywanie się pod ciebie, jeśli ponownie wykorzystasz CSR”. Jeśli zdecydujesz się użyć klucza przez N miesięcy, możesz użyć tego samego CSR przez te N miesięcy.
Bruno Bronosky,
2
Tak, masz rację, Bruno. Zakładałem, że ludzie ponownie wykorzystujący CSR zrobili to z niewiedzy i dlatego kontynuowali tę praktykę „na zawsze”, jednak może być oczywiście kilku, którzy są świadomi problemów i robią to w oparciu o staranne planowanie przez ograniczony czas.
Stefan L
1

Teoretycznie możesz ponownie wykorzystać ten sam CSR, ponieważ jest to tylko kontener

  • Twój klucz publiczny (tylko liczby używane do szyfrowania RSA (określone matematyki))
  • Twoje dane „Podmiotu” (kim jesteś, jaką domenę itp.). Tekst używany do identyfikacji właściciela tego klucza publicznego

Właśnie o to chodzi w certyfikacie (skrót od PublicKey Certificate)

Ale jak zauważono w innych odpowiedziach, dobrą praktyką jest regularna zmiana klucza prywatnego, co oznacza nowy certyfikat, a więc nowy CSR, aby go uzyskać.

Możesz łatwo przejrzeć treść CSR

na przykład

$ 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

I 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
źródło