Как подписать CSR клиента с openssl?

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

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

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

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

затем я хочу подписать все CSR от клиентов. Клиент из штата Вашингтон прислал мне файловый клиент-csr.УГР. Я читаю эту справочную страницу о подписании CSRs и примерах в конце. 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 и вернуть сертификат обратно клиенту.

1 ответов


решена. Спасибо dbasic.

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

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

и измените "countryName", stateOrProvinceName или "organizationName" на "supplied". Это указывает на то, что сертификат должен использовать значения из CSRs и не пытаться сопоставить с сертификатом (можно было бы попытаться "сопоставить" только для собственной подписи, по умолчанию в OpenSSL.cnf, похоже, был сделан для самоподписывания, а не для CA)

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