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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline eagames-ru  
#1 Оставлено : 25 декабря 2012 г. 9:59:07(UTC)
eagames-ru

Статус: Участник

Группы: Участники
Зарегистрирован: 30.11.2012(UTC)
Сообщений: 21
Откуда: Уфа

Поблагодарили: 1 раз в 1 постах
jcp.1.0.46 (без лицензии временно, будет закупать когда точно определимся с машинами)
jdk1.6.0_25
JCPxml.jar удален из каталога /ext/ и добавлен только в проект.
wss4j-1.6.3
в endorsed каталога JRE добавлен xercesImpl-2.9.1.jar
xmlsec-1.5.0.jar

сервер приложений JavaEE Oracle GlassFish Server 3.0.1 (build 22)

подписываю SOAP запрос согласно http://www.cryptopro.ru/...olzovaniem-kriptopro-jcp

Во время подписания, на строчке
Цитата:
XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", xmlDSigProvider);



вываливается экзепшин
javax.xml.crypto.NoSuchMechanismException: class configured for XMLSignatureFactory(provider: CryptoProXMLDSig)cannot be found


перед этим (но после создания объекта Provider) вывожу список провайдеров
Цитата:
Provider[] pr = Security.getProviders();
for (int i=0;i<pr.length;i++){
System.out.println();
System.out.print("\n"+pr[i].getName()+";!"+pr[i].getInfo()+";!"+pr[i].toString());
System.out.println();
}


получаю
Цитата:
SUN;!SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; JKS keystore; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration);!SUN version 1.6|#]
SunRsaSign;!Sun RSA signature provider;!SunRsaSign version 1.5|#]
SunJSSE;!Sun JSSE provider(PKCS12, SunX509 key/trust factories, SSLv3, TLSv1);!SunJSSE version 1.6|#]
SunJCE;!SunJCE Provider (implements RSA, DES, Triple DES, AES, Blowfish, ARCFOUR, RC2, PBE, Diffie-Hellman, HMAC);!SunJCE version 1.6|#]
SunJGSS;!Sun (Kerberos v5, SPNEGO);!SunJGSS version 1.0|#]
SunSASL;!Sun SASL provider(implements client mechanisms for: DIGEST-MD5, GSSAPI, EXTERNAL, PLAIN, CRAM-MD5; server mechanisms for: DIGEST-MD5, GSSAPI, CRAM-MD5);!SunSASL version 1.5|#]
XMLDSig;!XMLDSig (DOM XMLSignatureFactory; DOM KeyInfoFactory);!XMLDSig version 1.0|#]
SunPCSC;!Sun PC/SC provider;!SunPCSC version 1.6|#]
JCP;!CryptoPro Java Provider;!JCP version 1.0|#]
Crypto;!CryptoPro Java Cipher Provider.;!Crypto version 1.0|#]
RevCheck;!CryptoPro Java Revocation Checker.;!RevCheck version 1.0|#]


как видим в нем отсутствует CryptoProXMLDSig

эта проблема только на промышленном сервере

На технологическом все работает хорошо, отличие только в сервере приложения - стоит - Oracle GlassFish Server 3.1 (build 43)

и со списком зарегистрированных провайдеров все нормально
Цитата:
SUN;!SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; JKS keystore; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration);!SUN version 1.6|#]
SunRsaSign;!Sun RSA signature provider;!SunRsaSign version 1.5|#]
SunJSSE;!Sun JSSE provider(PKCS12, SunX509 key/trust factories, SSLv3, TLSv1);!SunJSSE version 1.6|#]
SunJCE;!SunJCE Provider (implements RSA, DES, Triple DES, AES, Blowfish, ARCFOUR, RC2, PBE, Diffie-Hellman, HMAC);!SunJCE version 1.6|#]
SunJGSS;!Sun (Kerberos v5, SPNEGO);!SunJGSS version 1.0|#]
SunSASL;!Sun SASL provider(implements client mechanisms for: DIGEST-MD5, GSSAPI, EXTERNAL, PLAIN, CRAM-MD5; server mechanisms for: DIGEST-MD5, GSSAPI, CRAM-MD5);!SunSASL version 1.5|#]
XMLDSig;!XMLDSig (DOM XMLSignatureFactory; DOM KeyInfoFactory);!XMLDSig version 1.0|#]
SunPCSC;!Sun PC/SC provider;!SunPCSC version 1.6|#]
JCP;!CryptoPro Java Provider;!JCP version 1.0|#]
Crypto;!CryptoPro Java Cipher Provider.;!Crypto version 1.0|#]
RevCheck;!CryptoPro Java Revocation Checker.;!RevCheck version 1.0|#]
CryptoProXMLDSig;!Crypto-Pro XMLDSig (DOM XMLSignatureFactory; DOM KeyInfoFactory; C14N 1.0, C14N 1.1, Exclusive C14N, Base64, Enveloped, XPath, XPath2, XSLT TransformServices);!CryptoProXMLDSig version 1.51|#]


Вернемся на промышленный сервер:
Пытался добавить в список требуемый провайдер Security.insertProviderAt(xmlDSigProvider, 0);


НЕ помогло. Конечно в списке Security.getProviders() - он появился! но экзепшин все равно происходит.

Цитата:

Provider xmlDSigProvider = new ru.CryptoPro.JCPxml.dsig.internal.dom.XMLDSigRI();

final Transforms transforms = new Transforms(doc);
transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);

Security.insertProviderAt(xmlDSigProvider, 0 ) ;
Provider[] pr = Security.getProviders();
for (int i=0;i<pr.length;i++){
System.out.println();
System.out.print("\n"+pr[i].getName()+";!"+pr[i].getInfo()+";!"+pr[i].toString());
System.out.println();
}

XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", xmlDSigProvider);

пысы: сорри, но оформить код не получилось, чото ваш движок форума не воспринимает символы "[" и "]" в коде.

Помогите решить проблему. Переустановить глассфиш - не очень легкая задача, в плане бюрократии и согласования - сервер останавливать нельзя.

Отредактировано пользователем 25 декабря 2012 г. 10:00:59(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 25 декабря 2012 г. 10:15:20(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,984
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 710 раз в 671 постах
Здравствуйте.
Попробуйте добавить перед использованием (см. ридми)
Код:

Provider p = new ru.CryptoPro.JCPxml.dsig.internal.dom.XMLDSigRI();
Security.addProvider(p);
Security.getProvider("XMLDSig").put("XMLSignatureFactory.DOM", "ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignatureFactory");
Security.getProvider("XMLDSig").put("KeyInfoFactory.DOM", "ru.CryptoPro.JCPxml.dsig.internal.dom.DOMKeyInfoFactory");

Отредактировано пользователем 25 декабря 2012 г. 10:16:20(UTC)  | Причина: Не указана

Offline eagames-ru  
#3 Оставлено : 25 декабря 2012 г. 10:46:41(UTC)
eagames-ru

Статус: Участник

Группы: Участники
Зарегистрирован: 30.11.2012(UTC)
Сообщений: 21
Откуда: Уфа

Поблагодарили: 1 раз в 1 постах
Автор: afev Перейти к цитате
Здравствуйте. Попробуйте добавить перед использованием (см. ридми)


Добрый день!

Код:

            Provider xmlDSigProvider = new ru.CryptoPro.JCPxml.dsig.internal.dom.XMLDSigRI();
            Security.addProvider(xmlDSigProvider);
            Security.getProvider("XMLDSig").put("XMLSignatureFactory.DOM", "ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignatureFactory");
            Security.getProvider("XMLDSig").put("KeyInfoFactory.DOM", "ru.CryptoPro.JCPxml.dsig.internal.dom.DOMKeyInfoFactory");

            final Transforms transforms = new Transforms(doc);
            transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);

            XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");



Не помогло! Think

Отредактировано пользователем 25 декабря 2012 г. 11:11:18(UTC)  | Причина: Не указана

Offline eagames-ru  
#4 Оставлено : 25 декабря 2012 г. 11:12:33(UTC)
eagames-ru

Статус: Участник

Группы: Участники
Зарегистрирован: 30.11.2012(UTC)
Сообщений: 21
Откуда: Уфа

Поблагодарили: 1 раз в 1 постах
Цитата:
javax.xml.crypto.NoSuchMechanismException: class configured for XMLSignatureFactory(provider: XMLDSig)cannot be found.
Offline Евгений Афанасьев  
#5 Оставлено : 25 декабря 2012 г. 11:18:57(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,984
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 710 раз в 671 постах
А сам объект xmlDSigProvider инициализируется?
Попробуйте положить xmlsec-1.5.0 в lib/ext (+serializer, commons-logging, xalan).
Offline eagames-ru  
#6 Оставлено : 25 декабря 2012 г. 11:42:42(UTC)
eagames-ru

Статус: Участник

Группы: Участники
Зарегистрирован: 30.11.2012(UTC)
Сообщений: 21
Откуда: Уфа

Поблагодарили: 1 раз в 1 постах
Автор: afev Перейти к цитате
А сам объект xmlDSigProvider инициализируется?
Попробуйте положить xmlsec-1.5.0 в lib/ext (+serializer, commons-logging, xalan).


Цитата:
А сам объект xmlDSigProvider инициализируется?


Да, конечно, все сделано как в статье.

вот функция http://paste.org.ru/?k71cjx

Цитата:
Попробуйте положить xmlsec-1.5.0 в lib/ext (+serializer, commons-logging, xalan).


для этого потребуется перезагружать сервер приложений?
я помещал их в каталог домена (domain1/lib/ext), без перезагрузки, но редеплоим приложения. Не помогло.
Offline Евгений Афанасьев  
#7 Оставлено : 25 декабря 2012 г. 12:02:26(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,984
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 710 раз в 671 постах
1) Попробуйте положить xmlsec, xalan, serializer, commons-logging, xmldsig в JRE/lib/ext, которую использует сервер, не в domain1/lib/ext.
(не обнаруживается библиотека).
2) Можно попробовать прописать ru.CryptoPro.JCPxml.dsig.internal.dom.XMLDSigRI вместо security.provider.X=org.jcp.xml.dsig.internal.dom.XMLDSigRI в java.security.
3) попробуйте вывести все библиотеки, которые загружаются.
Offline eagames-ru  
#8 Оставлено : 26 декабря 2012 г. 16:18:40(UTC)
eagames-ru

Статус: Участник

Группы: Участники
Зарегистрирован: 30.11.2012(UTC)
Сообщений: 21
Откуда: Уфа

Поблагодарили: 1 раз в 1 постах
все перепробовал - не помогло.
на своей машине снес глассфиш 3.1 и поставил 3.0.1 - удалось воспроизвести ошибку. А вот путь решения найти - нет.
придется обновляться...

Отредактировано пользователем 26 декабря 2012 г. 16:19:30(UTC)  | Причина: Не указана

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