Назад | Перейти на главную страницу

Могу ли я повторно использовать SSL CSR?

Я создал самосертифицированный сертификат SSL для тестирования нового веб-сайта. Пришло время, чтобы сайт заработал, и теперь я хочу приобрести сертификат у GeoTrust. Могу ли я использовать тот же CSR, который я создал для собственного сертификата, или мне нужно создать новый?

Богатый

Если вы используете один и тот же ключ, домен (также известный как общее имя), контактные данные и срок действия, вы сможете использовать один и тот же CSR.

Хотя, честно говоря, создание CSR - довольно простая работа, поэтому, если вам нужно изменить контактные данные (к которым строго относятся многие провайдеры SSL), это не имеет большого значения.

В вашем примере я не думаю, что стоит пытаться повторно использовать CSR. Однако для большой разноплановой команды разработчиков Apple iOS (например, у меня) есть веская причина для этого. Мы создаем (фактически, просим Apple создать) все наши сертификаты подписи и отправляем сертификаты с одного и того же закрытого ключа. Таким образом, мы все сможем легко сотрудничать в наших более чем 85 приложениях. По этой причине мы храним один CSR и всегда используем его, пока ключ действителен.

Насколько мне известно, нет причин многократно генерировать CSR из одного закрытого ключа. Я бы хотел, чтобы меня поправили, если я ошибаюсь.

Основным преимуществом сертификатов с ограниченным сроком действия является уменьшение ущерба в случае утечки вашего закрытого ключа. Кто-то, владеющий закрытым ключом, может в противном случае выдать себя за вас навсегда, если вы повторно используете CSR, потому что повторное использование CSR также подразумевает повторное использование вашего закрытого ключа.

Пожалуйста, не делайте этого, лучше автоматизировать генерацию как закрытых ключей, так и CSR и найти удобные способы распространения постоянно меняющихся закрытых ключей на серверы сборки приложений и серверы push-уведомлений. Большинству простых смертных разработчиков, как правило, никогда не нужно делать сборку выпуска / распространения для магазина приложений, поэтому закрытые ключи не потребуются.

Теоретически вы действительно можете повторно использовать один и тот же CSR, поскольку это всего лишь контейнер для

  • ваш открытый ключ (только Числа используется для шифрования RSA (конкретная математика))
  • ваша "Тема" (кто вы, какой домен и т. д.) Текст используется для идентификации владельца этого открытого ключа

В конце концов, это и есть сертификат (сокращение от PublicKey Certificate)

Но, как отмечено в других ответах, рекомендуется регулярно менять закрытый ключ, так что это подразумевает новый сертификат и, следовательно, новый CSR для его получения.

Вы можете легко просмотреть содержание CSR

например

$ 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

И 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