2014-12-16 3 views
4

при конвертации некоторых сертификатов из хранилища ключей в openssl/pem. Я впервые заметил, что есть атрибуты «Сумка», добавленные к сертификатам.Что такое атрибуты сумки и как я могу их создать?

Внешний вид, как это:

Bag Attributes 
    friendlyName: CN=PositiveSSL CA,O=Comodo CA Limited,L=Salford,ST=Greater Manchester,C=GB 
subject=/C=GB/ST=Greater Manchester/L=Salford/O=Comodo CA Limited/CN=PositiveSSL CA 
issuer=/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware 

ли они служат какой-либо функции?

Я заметил, что мне они нравятся, потому что они делают мои цепочки-файлы (конкатенация сертификатов) более ясными. К сожалению, у сертификатов ca у меня их нет.

Так как я их создаю?

ответ

12

Чтобы быть точным, вы, по-видимому означает, преобразование (или только чтение) с openssl pkcs12 (import) полезности PKCS # 12 файл, который может поддерживаться Java в хранилище ключей, но не по умолчанию (обновление) до Java9 в 2017. PKCS # 12 был спроектирован и обычно используется для закрытого ключа и сертификата (обычно несколько) для этого ключа, хотя формат достаточно гибкий, чтобы позволить одиночный сертификат (ы). OpenSSL commandlinepkcs12 -export требует отдельного ключа, хотя он добавит «дополнительные» сертификаты, а программа, вызывающая API, может, по-видимому, не делать никакой секретной клавиши. По моему опыту, Java не поддерживал одиночный сертификат (ы) в PKCS # 12 до версии 8, а в моих 8 и 9 имеет два атрибута: pkcs9.friendlyName и 2.16.840.1.113894.746875.1.1, который, по-видимому, является Oracle -defined trustedKeyUsage. Большинство одиноких сертификатов не хранятся или не загружаются, как PKCS # 12.

PKCS # 12 определен в терминах нескольких (немного отличающихся) «мешков» структур, которые содержат различные вещи, в первую очередь, частные ключи и сертификаты с дополнительными атрибутами, которые неудивительно называются «атрибутами сумки»; ваш случай (по-видимому) имеет только сертификат (ы). Эти атрибуты соответствуют общепринятой структуре произвольного количества пар значения OID плюс в зависимости от OID. Примечание на вашем дисплее только friendlyName - это атрибут мешка, указанный, потому что он имеет отступ под заголовком.

В subject= и issuer= линии поля от самого серт которой openssl pkcs12 (import) утилита извлекает и печатает для удобства. Если этого достаточно, вы можете отобразить их для любого сертификата с помощью утилиты x509; в частности, если вы хотите иметь их перед закодированным PEM сертификатом «blob» способом pkcs12, используйте openssl x509 -in infile -subject -issuer -out outfile. Это делает один cert, поэтому, если у вас есть цепочка в файле PEM, вам нужно разделить ее на части и выполнить каждый сертификат отдельно и, возможно, снова объединить; например, что-то вроде

$ awk <chainfile -va="openssl x509 -subject \ 
    -issuer >cert_" '/^-----BEGIN/{b=a (++n);x=1}x{print|b}/^-----END/{close(b);x=0}' 

$ cat cert_* >newchain # if desired; or just don't redirect 
          # in the above and use its aggregated stdout 

В качестве сравнения, openssl s_client -showcerts делает что-то очень похожее: он выводит субъект и эмитент с каждым Cert сгустка из полученной цепи, маркируя их с номером уровня «с:» и «I: ».

+0

Спасибо! Это более полный ответ, чем я надеялся. – Scheintod

Смежные вопросы