Создайте собственный модуль ASN.1 для пользовательского расширения в инструментах командной строки OpenSSL - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь создать PKI, используя инструменты командной строки OpenSSL. Сертификаты конечного объекта должны иметь пользовательское расширение с пользовательским OID, который будет содержать некоторую дополнительную информацию. До сих пор мне удавалось получить собственное расширение с моим собственным OID в сертификатах, единственная проблема, с которой я сталкиваюсь, состоит в том, что это добавляет только одно поле. Мне нужен целый модуль ASN.1, как мы видим со стандартными расширениями, такими как Basic Constraints. Есть ли способ сделать это, используя инструменты командной строки OpenSSL и файлы конфигурации?

Следующий документ показывает, что можно указать собственные модули ASN.1, но я не могу найти способ вставить это в CSR и оттуда в сертификат. https://www.openssl.org/docs/man1.0.2/man3/ASN1_generate_v3.html

1 Ответ

0 голосов
/ 05 июля 2019

Нашел это.В конфигурации, используемой для создания сертификата или CSR, можно использовать информацию, приведенную на указанной выше справочной странице.Модуль ASN.1 описан как заявлено, и можно указать OpenSSL написать расширение согласно этому описанию, начиная с ASN1:Type:NextSection.В разделах, описывающих каждый уровень модуля ASN.1, ключевое слово ASN1 больше не требуется.

...

[ usr_ext ]
# Extensions for client certificates (`man x509v3_config`).
keyUsage = digitalSignature
1.2.3.4.5.6.7.8.9 = ASN1:SEQUENCE:CustomExt
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer

[CustomExt]
wrappingSeq = SEQUENCE:ExtOid
key = FORMAT:HEX,BITSTRING:abcdef1234556789

[ExtOid]
oid = OID:1.3.101.110

В итоге кодируется следующим образом:

SEQUENCE
    OBJECT IDENTIFIER 1.2.3.4.5.6.7.8.9
    OCTET STRING
        SEQUENCE
            OBJECT IDENTIFIER 1.3.101.110
        BITSTRING 0xabcdef1234556789
...