Каталоги по умолчанию не работают в файле конфигурации OpenSSL

Каталоги по умолчанию не работают в файле конфигурации OpenSSL

Я установил каталог в файле /etc/ssl/openssl.cnf, но каждый раз, когда я ввожу команду

openssl req -x509 -newkey rsa:4096 -keyout cakey.pem -out cacert.pem -days 3650

он помещает файлы в корневой каталог каталога, в котором я работаю.

[ CA_default ]

dir     = /home/will/myCA   # Where everything is kept
certs       = $dir/certs        # Where the issued certs are kept
crl_dir     = $dir/crl      # Where the issued crl are kept
database    = $dir/index.txt    # database index file.
#unique_subject = no            # Set to 'no' to allow creation of
                    # several certs with same subject.
new_certs_dir   = $dir/newcerts     # default place for new certs.

certificate = $dir/cacert.pem   # The CA certificate
serial      = $dir/serial       # The current serial number
crlnumber   = $dir/crlnumber    # the current crl number
                    # must be commented out to leave a V1 CRL
crl     = $dir/crl.pem      # The current CRL
private_key = $dir/private/cakey.pem# The private key
RANDFILE    = $dir/private/.rand    # private random number file

x509_extensions = usr_cert      # The extensions to add to the cert

# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt    = ca_default        # Subject Name options
cert_opt    = ca_default        # Certificate field options

# Extension copying option: use with caution.
# copy_extensions = copy

# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions    = crl_ext

default_days    = 365           # how long to certify for
default_crl_days= 30            # how long before next CRL
default_md  = default       # use public key default MD
preserve    = no            # keep passed DN ordering

# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy      = policy_match

Если бы каталоги работали, я бы ожидал этого.

Generating a 2048 bit RSA private key
.................................+++
.................................................................................................+++
writing new private key to '/home/will/myCA/private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----

запись нового закрытого ключа в '/home/will/myCA/private/cakey.pem'

Я обновил свою версию OpenSSL прямо с сайта, используя двоичные файлы, и теперь она установлена ​​в /etc/local/ssl. К сожалению, я все еще не понимаю, почему файлы, которые я генерирую с помощью OpenSSL, не сортируются по папкам/каталогам.

Кто-нибудь знает, почему не работают каталоги по умолчанию?

Большое спасибо

Воля

ОБНОВЛЕНИЕ 11:00 30/05/2019

Я выполнил команду

openssl req -x509 -newkey rsa:4096 -days 3650

но он просто печатает ключ в окне терминала и не выводит его в файл.

Я добавил -noout к команде, но файл сохранился в ~privkey.pem, а не в каталоге, который я указал в файле openssl.cnf /home/will/demoCA.

Я заметил, что файл сохраняется в рабочем каталоге, в котором открыт терминал.

при использовании команды openssl version -dотображается местоположение файла конфигурации по умолчанию, в котором я задаю каталогиOPENSSLDIR: "/usr/local/ssl"

решение1

Файлы, на которые указывает команда [ CA_defaults ], используются внутри нее openssl ca.

Если вы заглянете внутрь, то new_certs_dirувидите все сертификаты, подписанные ЦС при использовании openssl caкоманды, с именами файлов, состоящими из серийного номера сертификата с .pemдобавленным к нему именем.

В вашем случае openssl reqэти файлы не используются.

На странице руководства по этой reqкоманде написано следующее:

-out имя файла

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

Поэтому запись будет производиться в указанный файл, расположенный в каталоге, из которого вы запускаете команду; или в стандартный вывод.

-keyout имя файла

Это дает имя файла для записи нового созданного закрытого ключа. Если эта опция не указана, то используется имя файла, присутствующее в файле конфигурации.

Это приведет к записи в указанное имя файла, опять же расположенного в каталоге, из которого вы запускаете команду; или запись будет произведена в имя файла, указанное в опции default_keyfile( [ req ]конечно, ниже).

В обоих случаях вы можете указать абсолютный путь к файлам в своих командах, если вы не хотите, чтобы они помещались в текущий каталог.


Структура, которую вы настроили в .confфайле, будет работать, когда вы используете openssl caкоманду для подписи запроса от подчиненного (CA или конечного объекта). Однако, чтобы довести ее до стадии, когда вы можете подписывать сертификаты, ей нужны сертификат CA и ключ на месте. Ваша openssl reqкоманда генерирует их. Чтобы получить разумные значения в сертификате CA, вам нужно добавить больше в свой .confфайл.

Для начала вам подойдет что-то вроде следующего:

[ req ]

# Don't prompt for the DN, use configured values instead
# This saves having to type in your DN each time.

prompt             = no
string_mask        = default
distinguished_name = req_dn

# The size of the keys in bits:
default_bits       = 4096

[ req_dn ]

countryName            = GB
stateOrProvinceName    = Somewhere
organizationName       = Example
organizationalUnitName = PKI
commonName             = Example Test Root CA

[ ca_ext ]

# Extensions added to the request

basicConstraints =  critical, CA:TRUE
keyUsage =          critical, keyCertSign, cRLSign

Создайте сертификат CA, используя слегка измененную версию предыдущей команды:

openssl req -x509 -newkey rsa:4096 -keyout /home/will/myCA/private/cakey.pem -out /home/will/myCA/cacert.pem -days 3650 -nodes -config <path-to>/openssl.cnf -extensions ca_ext

Примечание: эта опция вам понадобится только -configв том случае, если вы не используете/не редактируете файл конфигурации по умолчанию.

Если все работает, у вас будет правильный сертификат и ключ для вашей конфигурации CA выше. Прежде чем вы сможете подписать какие-либо сертификаты с помощью команды openssl ca, вам нужно убедиться, index.txtчто они существуют, и создать их serialс начальным серийным номером (например, 01).

OpenSSL — это швейцарский нож криптографии, поэтому у него много вариантов. К сожалению, чтение man-страниц — единственный способ понять его.

Связанный контент