Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline soir  
#1 Оставлено : 22 сентября 2010 г. 15:19:06(UTC)
soir

Статус: Новичок

Группы: Участники
Зарегистрирован: 22.09.2010(UTC)
Сообщений: 6

Здравствуйте.
Ситуация такая: есть большое веб-приложение (1), установленное в WebSphere 7.0.0.9, и маленькое десктоп-приложение(2), созданное для тестирования подписей. В плане подписей (1) и (2) имеют одинаковый исходный код:
Код:

final KeyStore floppy = KeyStore.getInstance(STORE_TYPE);
floppy.load(null, null);
Certificate c = floppy.getCertificate("ZU");
System.out.println("DECODED:" + c.toString());
final ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Certificate certificate =
new ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Certificate();
final Asn1BerDecodeBuffer decodeBuffer = new Asn1BerDecodeBuffer(c.getEncoded());
certificate.decode(decodeBuffer);

Код немного упрощен (try-catch и т.п.).
Проблема в том, что в веб-приложении, происходит падение на certificate.decode(decodeBuffer); , а в десктоп этого нет. Текст ошибки:
Код:

java.lang.NullPointerException
	at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.AttributeTypeAndValue.checkTC(AttributeTypeAndValue.java:121)
	at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.AttributeTypeAndValue.decode(AttributeTypeAndValue.java:89)
	at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.RelativeDistinguishedName.decode(RelativeDistinguishedName.java:52)
	at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.RDNSequence.decode(RDNSequence.java:52)
	at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Name.decode(Name.java:52)
	at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.TBSCertificate.decode(TBSCertificate.java:179)
	at ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Certificate.decode(Certificate.java:61)


Так вот, интерпретация загруженного происходит по разному у (1) и (2). Пример СистемАута в (1):
Код:

[
  Version: V3
  Subject: OID.1.2.840.113549.1.9.2="FIRST_NAME=Иван$MIDDLE_NAME=Петрович$LAST_NAME=Андреенко$POSITION=Пользователь$ROLE=S$INN=7416919552$ORG_FULL_NAME=Войсковая часть 55059$ORG_OGRN=1441692483355$ORG_ADDRESS=Москва ул Новая 103$ORG_ROLE=C$ORG_OKOGU=13230$ORG_SUB_ID=1$ORG_TYPE_ID=1$ORG_COUNTRY_ID=643$ORG_IDENT_ID=1523523", CN=ZU, O=ORGO, C=RU
  Signature Algorithm: 1.2.643.2.2.3, OID = 1.2.643.2.2.3

  Key:  ru.CryptoPro.JCP.Key.a
  Validity: [From: Fri Jun 04 12:13:10 MSD 2010,
               To: Sat Jun 04 12:23:10 MSD 2011]
  Issuer: CN=Test Center CRYPTO-PRO, O=CRYPTO-PRO, C=RU, EMAILADDRESS=info@cryptopro.ru
  SerialNumber: [149850414396404708434221]

Certificate Extensions: 6
[1]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  DigitalSignature
  Non_repudiation
  Key_CertSign
]

[2]: ObjectId: 2.5.29.37 Criticality=false
ExtKeyUsage [
 1.3.6.1.5.5.7.3.2]

[3]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: f9 f9 4c 75 7a b2 77 fa  a5 77 02 98 f6 eb 73 2b  ..Luz.w..w....s.
0010: 9d 0b 0d 27                                        ....
]
]

[4]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 6d 8f 5e 05 d9 5f ac 91  17 94 1e 95 9a 05 30 38  m.............08
0010: 37 7a 10 2a                                        7z..
]

]

[5]: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
1 CRL Distribution Points:

Distribution Point: [
 Distribution Point Name: [URIName: http://www.cryptopro.ru/certenroll/Test%20Center%20CRYPTO-PRO(2).crl]
 Reason Flags: null
 Issuer: null
]
]

[6]: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
AuthorityInfoAccess [
[accessMethod: 1.3.6.1.5.5.7.48.1
accessLocation: URIName: http://www.cryptopro.ru/ocspnc/ocsp.srf, accessMethod: 1.3.6.1.5.5.7.48.2
accessLocation: URIName: http://www.cryptopro.ru/CertEnroll/Crypto_Test%20Center%20CRYPTO-PRO(2).crt]]

]
  Algorithm: [1.2.643.2.2.3]
  Signature:
0000: 5d 4e 60 4b ba 4b 60 c9  6d ef 60 1c 09 67 23 b4  .N.K.K..m....g..
0010: a6 17 df d5 16 60 30 98  1c 7b be 41 b6 2d 56 17  ......0....A..V.
0020: b7 27 6c 52 01 2e 17 f4  44 fe c3 28 ba 66 40 b6  ..lR....D....f..
0030: d1 71 c0 68 ce 9f 89 4a  5c 64 f6 81 28 32 e2 88  .q.h...J.d...2..

]

(2):
Код:

[
  Version: V3
  Subject: OID.1.2.840.113549.1.9.2="FIRST_NAME=Иван$MIDDLE_NAME=Петрович$LAST_NAME=Андреенко$POSITION=Пользователь$ROLE=S$INN=7416919552$ORG_FULL_NAME=Войсковая часть 55059$ORG_OGRN=1441692483355$ORG_ADDRESS=Москва ул Новая 103$ORG_ROLE=C$ORG_OKOGU=13230$ORG_SUB_ID=1$ORG_TYPE_ID=1$ORG_COUNTRY_ID=643$ORG_IDENT_ID=1523523", CN=ZU, O=ORGO, C=RU
  Signature Algorithm: 1.2.643.2.2.3, OID = 1.2.643.2.2.3

  Key:  ru.CryptoPro.JCP.Key.a
  Validity: [From: Fri Jun 04 12:13:10 MSD 2010,
               To: Sat Jun 04 12:23:10 MSD 2011]
  Issuer: CN=Test Center CRYPTO-PRO, O=CRYPTO-PRO, C=RU, EMAILADDRESS=info@cryptopro.ru
  SerialNumber: [    1fbb6841 00020000 612d]

Certificate Extensions: 6
[1]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: F9 F9 4C 75 7A B2 77 FA   A5 77 02 98 F6 EB 73 2B  ..Luz.w..w....s+
0010: 9D 0B 0D 27                                        ...'
]
]

[2]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 6D 8F 5E 05 D9 5F AC 91   17 94 1E 95 9A 05 30 38  m.^.._........08
0010: 37 7A 10 2A                                        7z.*
]

]

[3]: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
  [DistributionPoint:
     [URIName: http://www.cryptopro.ru/certenroll/Test%20Center%20CRYPTO-PRO(2).crl]
]]

[4]: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
  clientAuth
]

[5]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
  DigitalSignature
  Non_repudiation
  Key_CertSign
]

[6]: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
AuthorityInfoAccess [
  [accessMethod: 1.3.6.1.5.5.7.48.1
   accessLocation: URIName: http://www.cryptopro.ru/ocspnc/ocsp.srf, accessMethod: 1.3.6.1.5.5.7.48.2
   accessLocation: URIName: http://www.cryptopro.ru/CertEnroll/Crypto_Test%20Center%20CRYPTO-PRO(2).crt]
]

]
  Algorithm: [1.2.643.2.2.3]
  Signature:
0000: 5D 4E 60 4B BA 4B 60 C9   6D EF 60 1C 09 67 23 B4  ]N`K.K`.m.`..g#.
0010: A6 17 DF D5 16 60 30 98   1C 7B BE 41 B6 2D 56 17  .....`0....A.-V.
0020: B7 27 6C 52 01 2E 17 F4   44 FE C3 28 BA 66 40 B6  .'lR....D..(.f@.
0030: D1 71 C0 68 CE 9F 89 4A   5C 64 F6 81 28 32 E2 88  .q.h...J\d..(2..

]

Из найденных мной отличий: представление серийника: SerialNumber: [ 1fbb6841 00020000 612d] против SerialNumber: [149850414396404708434221] , Signature - заглавные буквы против строчных, и справа абракадабра меняется из-за этого.
при этом, md5 хеш от с.getEncoded() одинаков у (1) и (2), т.е. raw представление, похоже, одинаковое.
Загруженные сертификаты одинаковы - у них один и тот же серийник + raw представление.

В общем, данная ошибка ставит меня в тупик, очень прошу помочь.
Спасибо.
Offline Iva  
#2 Оставлено : 22 сентября 2010 г. 18:54:05(UTC)
Iva

Статус: Активный участник

Группы: Участники
Зарегистрирован: 09.10.2008(UTC)
Сообщений: 181

Проверьте, что у вас есть права на чтение Preferences
Код:
Preferences pref = Preferences.systemNodeForPackage(ru.CryptoPro.JCP.ASN.PKIX1Explicit88._PKIX1Explicit88Values.class);
String res = pref.get(PKIX1Explicit88Values, DEFAULT_CONFIG);

Либо нет прав на чтение, либо при установке не было права на запись и JCP_ASN не сконфигурился.
Offline soir  
#3 Оставлено : 22 сентября 2010 г. 20:54:38(UTC)
soir

Статус: Новичок

Группы: Участники
Зарегистрирован: 22.09.2010(UTC)
Сообщений: 6

Код:

Preferences pref = Preferences.systemNodeForPackage(ru.CryptoPro.JCP.ASN.PKIX1Explicit88._PKIX1Explicit88Values.class);
String res = pref.get("PKIX1Explicit88Values", "DEFAULT_CONFIG");
System.out.println("sss:" + res);

в обоих программах выдал:
Код:
sss:ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Lite_PKIX1Explicit88Values,ru.CryptoPro.JCP.ASN.PKIX1Explicit88.JCP_PKIX1Explicit88Values


И можно уточнить, права на чтение чего?
Про:
Цитата:
при установке не было права на запись и JCP_ASN не сконфигурился.

Т.е. в одном случае он сконфигурирован, а в другом - нет? как такое возможно?

Отредактировано пользователем 22 сентября 2010 г. 20:58:20(UTC)  | Причина: Не указана

Offline Iva  
#4 Оставлено : 23 сентября 2010 г. 17:40:31(UTC)
Iva

Статус: Активный участник

Группы: Участники
Зарегистрирован: 09.10.2008(UTC)
Сообщений: 181

soir написал:
И можно уточнить, права на чтение чего?

Права на чтение Preferences. Java хранит настройки Preferences в зависимости от операционки. На Windows в реестре, на *nix в каталоге типа /etc/.java.
soir написал:
Т.е. в одном случае он сконфигурирован, а в другом - нет? как такое возможно?

Может при установке в Java, на которой WebSphere, у Вас не было прав на запись в Preferences.
Или Вы запускаете и WebSphere и "маленькое десктоп-приложение" на одной яве?

Проверьте наличие файла JCP_ASN.jar и прав на него.
Загрузите по имени классы, которые зарегистрированы
ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Lite_PKIX1Explicit88Values,ru.CryptoPro.JCP.ASN.PKIX1Explicit88.JCP_PKIX1Explicit88Values
Хорошо бы в отладчике посмотреть поле SupportedAttributes. :)
Offline soir  
#5 Оставлено : 27 сентября 2010 г. 18:56:35(UTC)
soir

Статус: Новичок

Группы: Участники
Зарегистрирован: 22.09.2010(UTC)
Сообщений: 6

Обнаружил, в чем была проблема. Извиняюсь за то, что ввел в заблуждение: в десктопном варианте отсутствовал блок static{}.
В связи с чем, хочу заметить следующее(собственно, назначение блока):
в rfc5126 стр.58, в описании archiveTimeStamp oid следующий:
Код:

id-aa-ets-archiveTimestampV2 OBJECT IDENTIFIER ::=
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
smime(16) id-aa(2) 48}

У вас в JCP oid оканчивается на 27. Статик блок менял оид, из-за чего некоторые сертификаты не распознавались.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.