Как я могу использовать инструмент openssl x509, чтобы увидеть, кодируются ли мои строки T61 или UTF8 в сертификате? Есть ли способ лучше?
1 ответ
openssl x509: Если вы имеете в виду поля «Тема» и / или «Эмитент», самый простой и читаемый способ (ИМО)
openss x509 -in certpemfile -noout -text -nameopt multiline,show_type
или если вы хотите, чтобы только поля имени изменили -text
на -subject
и / или -issuer
. Существуют и другие форматы, и если вы хотите, чтобы нетривиально закодированные данные отображались для удобства, вам могут потребоваться дополнительные опции; см. справочную страницу в вашей системе или по адресу https://www.openssl.org/docs/apps/x509.html#NAME-OPTIONS . Если вы вводите "DER" (двоичный файл), а не более распространенный "PEM" (текстовый), добавьте -inform der
.
Если вы имеете в виду расширения, которые могут содержать (отличительные) поля имени - я считаю SAN/IAN, NameConstraints, CRLDP, AIA/SIA, хотя я не понимаю, как DN будет полезен в последних трех, и, безусловно, их больше - - это не поддерживается, что я знаю. Но посмотрим дальше.
другое: openssl asn1parse
точные типы, длины и, в основном, значения любой структуры BER/DER ASN.1, включая сертификат. Для расширений формы X.509 (обернутых в OCTET STRING) вы можете использовать -strparse offset
для ASN.1-декодирования вложенной структуры. Идентификация и выбор нужных полей - ваша работа, и в целом это может быть затруднительно, но поскольку DN и расширения маркируют каждый из своих элементов предшествующим OID (который OpenSSL называет просто OBJECT), а asn1parse
декодирует все OID, известные openssl (и вы можете дать это дополнительные), вы обычно можете просто визуально сканировать для поиска countryName
, commonName
и тому подобное. Примечание по PEM: многие функции openssl
создают или принимают и игнорируют "комментарии" в данных формата PEM, но asn1parse
этого не делает. Он будет обрабатывать строки dash-BEGIN и dash-END, но почти все остальное будет обрабатываться как часть данных, вызывающих неверные результаты. Убедитесь, что ваш входной файл (или канал или что-то еще) содержит только один сертификат.