openSSL подписать сертификат клиента https с CA

мне нужно:

  • создать сертификат CA
  • создайте https_client-сертификат
  • подпишите https_client-сертификат CA

С помощью командной строки в Linux-openSUSE. Создаю сертификат CA:

 # openssl genrsa -out rootCA.key 2048
Generating RSA private key, 2048 bit long modulus
..........................................................+++
....................+++
e is 65537 (0x10001)
 # openssl req -x509 -new -nodes -key rootCA.key -days 3650 -out rootCA.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:AA
State or Province Name (full name) [Some-State]:A
Locality Name (eg, city) []:A
Organization Name (eg, company) [Internet Widgits Pty Ltd]:A
Organizational Unit Name (eg, section) []:A
Common Name (e.g. server FQDN or YOUR name) []:A
Email Address []:A
 #

работает нормально. Затем я создаю https_client-сертификат:

 # openssl genrsa -out client1.key 2048
Generating RSA private key, 2048 bit long modulus
............................+++
.............................................+++
e is 65537 (0x10001)
 #
 # openssl req -x509 -new -nodes -key client1.key -days 3650 -out client1.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:BB
State or Province Name (full name) [Some-State]:B
Locality Name (eg, city) []:B
Organization Name (eg, company) [Internet Widgits Pty Ltd]:B
Organizational Unit Name (eg, section) []:B
Common Name (e.g. server FQDN or YOUR name) []:B
Email Address []:B
 #

работает нормально. Теперь, когда я пытаюсь подписать https_client-сертификат с CA, я получаю некоторую ошибку здесь:

 # openssl ca -in client1.pem -out client11.pem
Using configuration from /etc/ssl/openssl.cnf
Error opening CA private key ./demoCA/private/cakey.pem
139667082016400:error:02001002:system library:fopen:No such file or directory:bss_file.c:404:fopen('./demoCA/private/cakey.pem','re')
139667082016400:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:406:
unable to load CA private key
 #

Я уже пробовал:

но не для меня. Я где-то читал, что определенные введенные атрибуты должны быть одинаковыми при создании CA, но, по крайней мере, при создании сертификатов в Windows с помощью XCA-Tool это неправильно. Я могу вводить совершенно разные вещи, пока я подписываю его с CA, я могу его использовать. Кто-нибудь может мне помочь?

обновление: Я только пользуюсь .ключ и. pem, потому что это работает для меня в Windows с помощью XCA-Tool ... Я действительно читаю поваренную книгу openSSL (https://www.feistyduck.com/library/openssl-cookbook/online/ch-openssl.html), чтобы увидеть, если я сделал что-то особенное неправильно. Первая мысль:я должен использовать .csr подписать сертификат, или я могу сделать это, используя любой другой формат тоже?

1 ответов


вы используете инструмент "openssl ca", который по умолчанию использует следующий файл конфигурации: /etc/ssl/openssl.cnf. Другими словами, вы не пытались подписать сертификат CA, а использовали значения по умолчанию из этого файла конфигурации. Вы также передавали параметр-x509 в запрос подписи сертификата клиента, который приводит к недопустимому csr.

пожалуйста, найдите ниже команды рабочего поколения и подписи.

генерация ключа CA и cert:

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.pem \
-subj '/C=AA/ST=AA/L=AA/O=AA Ltd/OU=AA/CN=AA/emailAddress=aa@aa.com'

создать ключ клиента и csr:

openssl genrsa -out client1.key 2048
openssl req -new -key client1.key -out client1.csr \
-subj '/C=BB/ST=BB/L=BB/O=BB Ltd/OU=BB/CN=BB/emailAddress=bb@bb.com'

создать сертификат клиента, подписанный сертификатом CA:

openssl x509 -req -days 365 -CA rootCA.pem -CAkey rootCA.key \
-CAcreateserial -CAserial serial -in client1.csr -out client1.pem

конечно, вы можете настроить файл конфигурации на использование правильных файлов CA и использовать инструмент "openssl ca" после этого.

вы можете проверить свой сертификат следующим образом:

openssl verify -verbose -CAfile rootCA.pem client1.pem