Статус: Участник
Группы: Участники
Зарегистрирован: 03.09.2009(UTC) Сообщений: 18
|
Добрый день. Необходимо получить значение поля сертификата SubjectAlternativeName. Поля можно получить из сертификата методом getSubjectAlternativeNames(). Как получить(декодировать) значение поля с помощью библиотек JCP? Особенно интересует значение атрибута OtherName. Спасибо
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.10.2008(UTC) Сообщений: 181
|
На моем тестовом сертификате getSubjectAlternativeNames выдает нечто невразумительное. С помощью JCP можно раскодировать сертификат и получить список расширений Код: Asn1BerDecodeBuffer asnBuf = new Asn1BerDecodeBuffer(buffer);
Certificate cert = new Certificate();
cert.decode(asnBuf);
Extension[] extList = cert.tbsCertificate.extensions.elements;
В списке расширений ищем subjectAltName Код: byte[] encodedAltName = null;
int[] id_ce_subjectAltName = { 2, 5, 29, 17 };
for(int i = 0; i < extList.length; i++){
if(Arrays.equals(extList[i].extnID.value, id_ce_subjectAltName)){
encodedAltName = extList[i].extnValue.value;
break;
}
}
Раскодируем subjectAltName Код: asnBuf = new Asn1BerDecodeBuffer(encodedAltName);
GeneralNames altNames = new GeneralNames();
altNames.decode(asnBuf);
Name name = (Name)altNames.elements[0].getElement();
Это имя имеет сложную структуру. Его можно продолжать обрабатывать средствами JCP Код: RelativeDistinguishedName[] list = ((RDNSequence)name.getElement()).elements;
и разбираться с этим списком. А можно обрабатывать средствами java Код: Asn1BerEncodeBuffer encoder = new Asn1BerEncodeBuffer ();
name.encode(encoder);
byte[] encoded = encoder.getMsgCopy();
X500Principal principal = new X500Principal(encoded);
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.09.2009(UTC) Сообщений: 18
|
При выполнении Код:Name name = (Name)altNames.elements[0].getElement();
оператор возвращает класс ru.CryptoPro.JCP.ASN.CertificateExtensions.GeneralName_otherName, а не Name. Какое полное имя класса Name, которое мы ожидаем получить? Может как-то можно распарсить GeneralName_otherName?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close