2013-05-20 2 views
7

Мне не хватает чего-то принципиального и очевидного о подписании CSR клиента с помощью команды openssl.Как подписать клиентскую CSR с openssl?

У меня (имитировано) две организации, одна - организация центра сертификации (существует в Калифорнии), а другая - клиентская организация, которая находится в состоянии WA.

Я создал центр сертификации в системе Linux с помощью команды openssl, выполнив следующие шаги. http://www.freebsdmadeeasy.com/tutorials/freebsd/create-a-ca-with-openssl.php

У меня есть два файла: 1. cakey.pem, содержащий закрытый ключ CA. Это частное также связано с парольной фразой. 2. cacert.pem, содержащий самоподписанный сертификат CA

Далее, я хочу подписать все CSR от клиентов. Клиент из штата Вашингтон отправляет мне файл client-csr.pem. Я читаю эту страницу о подписании CSR и примерах в конце. http://www.openssl.org/docs/apps/ca.html

Команда, которую я пытаюсь сделать, и сообщение об ошибке выглядит следующим образом: Я запускаю эти команды в системе CA, той же системе, где я создал cakey.pem (закрытый ключ CA) и cacert.pem (CA самостоятельно подписанный сертификат)

$ openssl ca -in demoCA/csrs/client-csr.pem -out client-cert.pem 
Using configuration from /usr/lib/ssl/openssl.cnf 
Enter pass phrase for ./demoCA/private/cakey.pem: 
Check that the request matches the signature 
Signature ok 
The stateOrProvinceName field needed to be the same in the 
CA certificate (California) and the request (WA) 

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

Клиент НЕ в «Калифорнии» и поэтому, когда они создают CSR, они помещают свое собственное имя состояния (WA). В качестве центра сертификации я проверил, что клиент действительно находится в WA, и файл CSR действительно пришел из им. Я хочу подписать эту CSR и вернуть сертификат клиенту.

+0

Проверьте конфигурационный файл. Это должно выполняться с помощью конфигурации, а не OpenSSL и X.509. – doptimusprime

ответ

6

Решено. Благодарю dbasic.

В системе ЦС, где происходит действие подписи, сделайте копию /etc/ssl/openssl.conf и измените ее и создайте новый файл конфигурации. Используйте эту измененную копию при подписании.

cp /etc/ssl/openssl.cnf ./openssl-for-signing-csrs.cnf 

И изменить 'COUNTRYNAME', или 'stateOrProvinceName OrganizationName' в 'поставляется. Это означает, что сертификат должен использовать значения из CSR и не пытаться сопоставляться с сертификатом (один попытался бы «совместить» только для самоподписывания, по умолчанию openssl.cnf по умолчанию был создан для самоподписывания и не для CA)

80,82c80,82 
< countryName   = match 
< stateOrProvinceName = match 
< organizationName  = match 
--- 
> countryName   = supplied 
> stateOrProvinceName = supplied 
> organizationName  = supplied