Поле названия страны в CA, сгенерированное openssl, кодируется как PRINTABLESTRING, тогда как другие поля имеют UTF8STRING.
Я создаю сертификат CA с openssl версии 1.0.1e с помощью следующих команд:
openssl ecparam -out ec_key.pem -name secp384r1 -genkey openssl req -new -key ec_key.pem -x509 -nodes -days 1460 -out ec_ca_cert.pem
В конце этого процесса я ввожу поля DN следующим образом:
Country Name (2 letter code) [AU]:US State or Province Name (Full Name) [Some-State]:Florida Locality Name (eg, city)[]:Miami Organization Name (eg, company) [Internet Widgits Pty Ltd]:Coca Cola Organization Unit Name (eg, section) []:Drinks Common Name (e.g. server FQDN or YOUR name) []:Miki Email Address []:
Я конвертирую сертификат ec_ca_cert.pem в формат DER:
openssl x509 -in ec_ca_cert.pem -inform PEM -out ec_ca_cert.der -outform DER
Когда я редактирую файл ec_ca_cert.der с помощью HEX-редактора, я ясно вижу, что поле Страна кодируется как PRINTABLESTRING (Тип =0x13), тогда как все остальные поля (Название населенного пункта, Название организации, Название организационной единицы, Общее имя) кодируется как UTF8STRING (тип =0x0c).
Есть ли причина для этого, или проблема в моем процессе, или проблема openssl?
1 ответ
На форуме openssl-users я получил следующий ответ: "countryName ВСЕГДА является строкой PrintableString и ВСЕГДА длиной 2 символа. См. Нормативное определение X.520, включенное в RFC5280 для получения информации".