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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Marko13  
#1 Оставлено : 12 февраля 2014 г. 16:28:43(UTC)
Marko13

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

Группы: Участники
Зарегистрирован: 11.02.2014(UTC)
Сообщений: 11
Российская Федерация
Откуда: Уфа

Сказал(а) «Спасибо»: 2 раз
Здравствуйте. Пытаюсь написать ЭП для СМЭВ.

Поставил вот это Jdk 1.6.0_45 + wss4j1_5_11 + jcp 1.0.54

При попытке запустить вот это
Код:

 if (!JCPXMLDSigInit.isInitialized()) {
            JCPXMLDSigInit.init();
        }
 KeyStore keyStore = KeyStore.getInstance("OCFStore");
 PrivateKey privateKey = (PrivateKey) keyStore.getKey(ALIAS, password);
 X509Certificate cert = (X509Certificate) keyStore.getCertificate(ALIAS);
 MessageFactory mf;
 mf = MessageFactory.newInstance();
 SOAPMessage message = mf.createMessage();
 SOAPPart soapPart = message.getSOAPPart();
 FileInputStream is = new FileInputStream("message.xml");
 soapPart.setContent(new StreamSource(is));
 message.getSOAPPart().getEnvelope().addNamespaceDeclaration("ds", "http://www.w3.org/2000/09/xmldsig#");
 Document doc = message.getSOAPPart().getEnvelope().getOwnerDocument();

Выдает
Код:

SEVERE: null
java.security.KeyStoreException: Uninitialized keystore
	at java.security.KeyStore.getKey(KeyStore.java:761)
	at ru.afbank.TryMe.main(TryMe.java:49)

Подскажите как можно решить?
Offline Евгений Афанасьев  
#2 Оставлено : 12 февраля 2014 г. 16:53:49(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 713 раз в 673 постах
Здравствуйте.
Нужен keyStore.load()
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Marko13 оставлено 13.02.2014(UTC)
Offline Marko13  
#3 Оставлено : 13 февраля 2014 г. 9:58:47(UTC)
Marko13

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

Группы: Участники
Зарегистрирован: 11.02.2014(UTC)
Сообщений: 11
Российская Федерация
Откуда: Уфа

Сказал(а) «Спасибо»: 2 раз
Спасибо помогло.

Начал разбирать класс WSS4J_SignVerifySOAP.
Как я понял это пример как подписывать XML.

Вот в этом куске выдает exception
Код:
SignatureManager manager = 
			new SOAPXMLSignatureManager_1_5_11(SpecUtility.DEFAULT_CRYPTO_PROPERTIES, 
				SpecUtility.DEFAULT_ALIAS, SpecUtility.DEFAULT_PASSWORD);

Код:
java.lang.ClassNotFoundException: wss4j.wss4j1_6_3.ws.security.components.crypto.MerlinEx
	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)


properties
Код:
org.apache.ws.security.crypto.provider=ru.wss4j1_5_11.ws.security.components.crypto.MerlinEx
org.apache.ws.security.crypto.merlin.keystore.type=OCFStore
org.apache.ws.security.crypto.merlin.keystore.password=OIdew23
org.apache.ws.security.crypto.merlin.keystore.alias=GISGMP_TEST
cert.file=home/gisgmp/cert/afTest.cer
ca.file=home/gisgmp/cert/cert.p7b
crl.file=home/gisgmp/cert/certcrl.crl






Offline Marko13  
#4 Оставлено : 13 февраля 2014 г. 13:50:38(UTC)
Marko13

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

Группы: Участники
Зарегистрирован: 11.02.2014(UTC)
Сообщений: 11
Российская Федерация
Откуда: Уфа

Сказал(а) «Спасибо»: 2 раз
Другая попытка.

JDK 1.7.0_03
модуль поддержки eToken
JCP 1.0.54

ОС CentOS
В JDK 1.7.0_03/jre/ext/lib


IDE NetBeans
ClassPath


TestDubl.java

Ошибка, не может расспознать что с этим делать
Код:
com.sun.org.apache.xml.internal.security.Init.init();






Offline Евгений Афанасьев  
#5 Оставлено : 13 февраля 2014 г. 14:20:43(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 713 раз в 673 постах
Автор: Marko13 Перейти к цитате
Другая попытка.

JDK 1.7.0_03
модуль поддержки eToken
JCP 1.0.54

ОС CentOS
В JDK 1.7.0_03/jre/ext/lib


IDE NetBeans
ClassPath


TestDubl.java

Ошибка, не может расспознать что с этим делать
Код:
com.sun.org.apache.xml.internal.security.Init.init();








Попробуйте добавить xmlsec-1.4.X.jar (X = 4 или 5).
Offline Marko13  
#6 Оставлено : 14 февраля 2014 г. 9:51:02(UTC)
Marko13

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

Группы: Участники
Зарегистрирован: 11.02.2014(UTC)
Сообщений: 11
Российская Федерация
Откуда: Уфа

Сказал(а) «Спасибо»: 2 раз
Поставил все библиотеки согласно readme.
Ошибка
Код:
com.sun.org.apache.xml.internal.security.Init.init();
возникала изза NetBeans + Centos
Поставил Eclipse, ошибки нет. Код компилируется.

Результат запуска SMEVExample
Код:
log4j:WARN No appenders could be found for logger (org.apache.xml.security.algorithms.JCEMapper).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
java.lang.IllegalArgumentException: InputStream cannot be null
	at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:117)
	at org.apache.xml.security.Init.init(Unknown Source)
	at ru.CryptoPro.JCPxml.XmlInit.init(Unknown Source)
	at ru.CryptoPro.JCPxml.XmlInit.init(Unknown Source)
	at ru.CryptoPro.JCPxml.xmldsig.JCPXMLDSigInit.init(Unknown Source)
	at wss4j.wss4j1_6_3.tests.forum.SMEVExample.main(SMEVExample.java:92)
Feb 14, 2014 11:37:37 AM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 1.0.54 36641
Feb 14, 2014 11:37:37 AM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.

Exception in thread "main" java.lang.NullPointerException
	at org.apache.xml.security.transforms.Transform.getTransformSpi(Unknown Source)
	at org.apache.xml.security.transforms.Transform.<init>(Unknown Source)
	at org.apache.xml.security.transforms.Transform.getInstance(Unknown Source)
	at org.apache.xml.security.transforms.Transform.getInstance(Unknown Source)
	at org.apache.xml.security.transforms.Transforms.addTransform(Unknown Source)
        at wss4j.wss4j1_6_3.tests.forum.SMEVExample.main(SMEVExample.java:144)


Ошибка на строке
Код:
transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);


Входящий Document doc
Код:
<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<S:Header>
<wsse:Security S:actor="http://smev.gosuslugi.ru/actors/smev" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="SenderCertificate">
</wsse:BinarySecurityToken>
</wsse:Security>
</S:Header>
<S:Body wsu:Id="body">
<!-- Здесь идёт тело запроса-->
</S:Body>
</S:Envelope>


Помогите разобраться.
И еще куда прописать конфиг log4j, чтобы не было варнингов по аппендерам?



Offline Евгений Афанасьев  
#7 Оставлено : 14 февраля 2014 г. 10:04:49(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 713 раз в 673 постах
Автор: Marko13 Перейти к цитате

И еще куда прописать конфиг log4j, чтобы не было варнингов по аппендерам?


http://stackoverflow.com...-turn-off-log4j-warnings

Смотрели раздел "Работа с электронной подписью для XML-документов" в progguide.html?

Отредактировано пользователем 14 февраля 2014 г. 10:36:45(UTC)  | Причина: Не указана

Offline Marko13  
#8 Оставлено : 14 февраля 2014 г. 15:32:46(UTC)
Marko13

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

Группы: Участники
Зарегистрирован: 11.02.2014(UTC)
Сообщений: 11
Российская Федерация
Откуда: Уфа

Сказал(а) «Спасибо»: 2 раз
Посмотрел спасибо.
Проблема решилась добавлением JCPxml.jar

Сейчас ошибка на этой строке,
Код:
sig.sign(signContext);


Код:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.xml.security.utils.resolver.ResourceResolver.getInstance(Lorg/w3c/dom/Attr;Ljava/lang/String;Z)Lorg/apache/xml/security/utils/resolver/ResourceResolver;
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMURIDereferencer.dereference(DOMURIDereferencer.java:95)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.dereference(DOMReference.java:395)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.digest(DOMReference.java:329)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.digestReference(DOMXMLSignature.java:453)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:352)
	at wss4j.wss4j1_6_3.tests.forum.SMEVExample.main(SMEVExample.java:202)


читаю progguide.html, там обработка данных, и формирование ЭП по другому описана.
Offline Евгений Афанасьев  
#9 Оставлено : 14 февраля 2014 г. 15:50:20(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 713 раз в 673 постах
Добавьте в проект также xmlsec-1.5.0.jar.
Offline Marko13  
#10 Оставлено : 20 февраля 2014 г. 15:49:24(UTC)
Marko13

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

Группы: Участники
Зарегистрирован: 11.02.2014(UTC)
Сообщений: 11
Российская Федерация
Откуда: Уфа

Сказал(а) «Спасибо»: 2 раз
Спасибо почти разобрался.
Проверку ЭП локально проходит.
Если сохранить сообщение и проверить вот тут(Проверка СМЭВ), говорит что Электронная подпись ЭП-ОВ сообщения корректна.

При онлайн проверке валится на этом.
Код:
SignatureTool st = sts.getSignatureToolPort(new URL(smevService));

Логи

Отредактировано пользователем 20 февраля 2014 г. 15:55:52(UTC)  | Причина: Не указана

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