Ошибки LibreSSL при попытке скопировать расширения из CSR в x509 Cert

Я пытаюсь создать сертификат x509 с очень специфическим набором расширений x509v3 из CSR (у которого уже есть эти расширения). У меня есть CSR в форме PEM (?). Это выглядит так:

-----BEGIN CERTIFICATE REQUEST-----
MIIEjDCCAnQCAQAwFT...
...EQFqw==
-----END CERTIFICATE REQUEST-----

Я пытаюсь подписать его, пропуская его через libressl (у меня Mac) и использую установленный инструмент openssl, чтобы подписать запрос с помощью сертификата корневого центра сертификации, которому я уже доверял. моя машинка. Процесс выглядит следующим образом:

echo "-----BEGIN CERTIFICATE REQUEST-----\nMIIE...qw==\n-----END CERTIFICATE REQUEST-----\n" | openssl x509 -req -days 3650 -CA trusted_cert.pem -CAkey trusted_key.pem -CAcreateserial -out output_crt.pem -sha512 -extfile /usr/local/etc/openssl/openssl.cnf -extensions my_ca

libressl не на 100% "оверлейно совместим" с openssl (что может быть причиной этой головной боли). Таким образом, там, где openssl будет иметь флаг -config , libressl, похоже, будет иметь флаг -extfile . Меня это уже укусило при переносе кода с libressl на openssl.

Раздел my_ca в openssl.cnf выглядит так:

[ my_ca ]

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

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

Насколько я понимаю openssl (и, читая строки, libressl), copy_extensions = copy в этом разделе должен вызвать копирование расширений в CSR в выходной сертификат x509. Однако, когда libressl вызывается с приведенной выше формой echo , я получаю следующие ошибки:

Error Loading extension section my_ca
4592432748:error:22FFF082:X509 V3 routines:func(4095):unknown extension name:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22.260.1/libressl-2.6/crypto/x509v3/v3_conf.c:127:
4592432748:error:22FFF080:X509 V3 routines:func(4095):error in extension:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22.260.1/libressl-2.6/crypto/x509v3/v3_conf.c:96:name=copy_extensions, value=copy

Я предполагал, что как только я смогу заставить libressl загрузить этот раздел, он поймет ] copy_extensions - похоже, это не так. Как я могу создать файл конфигурации, чтобы libressl копировал расширения из CSR в полученный сертификат?

Для справки, моя версия libressl выглядит следующим образом:

openssl version -a
LibreSSL 2.6.5
built on: date not available
platform: information not available
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: information not available
OPENSSLDIR: "/private/etc/ssl"
0
задан 4 January 2020 в 04:11
1 ответ

Итак, @ dave_thompson_085 указал мне правильное направление, и Я понял, как заставить это работать, хотя это немного разочаровало.

copy_extensions не работает так, как я думал. Похоже (по словам Дэйва), что он вообще не работает с x509 -req .

Вместо этого я решил обойти эту проблему, создав небольшой раздел файла openssl conf с соответствующими разрешениями, а затем подписал CSR с новым разделом, переданным в аргумент extensions . Ниже приводится усеченный пример:

echo "-----BEGIN CERTIFICATE REQUEST-----\nMI...E=\n-----END CERTIFICATE REQUEST-----\n" | openssl x509 -req -days 3650 -CA my_cert.pem -CAkey my_key.pem -CAcreateserial -out new_cert.pem -sha512 -extfile /usr/local/etc/openssl/openssl.cnf -extensions my_ca

Раздел из файла openssl.cnf:

...
####################################################################
[ my_ca ]

basicConstraints = critical,CA:TRUE
keyUsage = critical, digitalSignature, keyEncipherment, keyCertSign
####################################################################
...
1
ответ дан 6 January 2020 в 22:50

Теги

Похожие вопросы