(Решено) Ошибка валидации XML TAG в ManagedOpenSsl
(0 чел.) 
  • Страница:
  • 1

ТЕМА: (Решено) Ошибка валидации XML TAG в ManagedOpenSsl

(Решено) Ошибка валидации XML TAG в ManagedOpenSsl 3 года, 10 мес. назад #1894

  • opewix
  • Осваиваюсь на форуме
  • Постов: 33
  • Репутация: 0
Мне необходимо провалидировать часть XML документа.

XmlClass.verifyTagXMLbytes(...)

При вызове метода постоянно получаю результат -1.
Вовремя валидации в консоль выводятся различные ошибки.
Пример из SDK не работает. Пробовал различные ЭЦП, старые и новые, CA файлы и CER и DER, всеравно получаю ошибку.

В чем может быть дело?

Вот вывод консоли примера из SDK:
verifyTagXMLbytes START.
func=xmlSecOpenSSLX509StoreVerify:file=x509vfy.c:line=360:obj=x509-store:subj=X5
09_verify_cert:error=4:crypto library function failed:subj=/serialNumber=IIN9517
35469875/CN=\xD0\x98\xD0\x92\xD0\x90\xD0\x9D\xD0\x9E\xD0\x92 \xD0\x98\xD0\x92\xD
0\x90\xD0\x9D/SN=\xD0\x98\xD0\x92\xD0\x90\xD0\x9D\xD0\x9E\xD0\x92/GN=\xD0\x98\xD
0\x92\xD0\x90\xD0\x9D\xD0\x9E\xD0\x92\xD0\x98\xD0\xA7/C=KZ;err=20;msg=unable to
get local issuer certificate
func=xmlSecOpenSSLX509StoreVerify:file=x509vfy.c:line=408:obj=x509-store:subj=un
known:error=71:certificate verification failed:err=20;msg=unable to get local is
suer certificate
func=xmlSecKeysMngrGetKey:file=keys.c:line=1370:obj=unknown:subj=xmlSecKeysMngrF
indKey:error=1:xmlsec library function failed:
func=xmlSecDSigCtxProcessKeyInfoNode:file=xmldsig.c:line=871:obj=unknown:subj=un
known:error=45:key is not found:
func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=565:obj=unknown:subj=
xmlSecDSigCtxProcessKeyInfoNode:error=1:xmlsec library function failed:
func=xmlSecDSigCtxVerify:file=xmldsig.c:line=366:obj=unknown:subj=xmlSecDSigCtxS
ignatureProcessNode:error=1:xmlsec library function failed:
Error: signature verify


Вот другая ошибка, возникает в моем коде:
verifyTagXMLbytes START.
func=xmlSecOpenSSLAppCertLoadBIO:file=app.c:line=1249:obj=unknown:subj=PEM_read_
bio_X509_AUX:error=4:crypto library function failed:
func=xmlSecOpenSSLAppKeysMngrCertLoadBIO:file=app.c:line=1134:obj=unknown:subj=x
mlSecOpenSSLAppCertLoadBIO:error=1:xmlsec library function failed:
func=xmlSecOpenSSLAppKeysMngrCertLoad:file=app.c:line=1033:obj=unknown:subj=xmlS
ecOpenSSLAppKeysMngrCertLoadBIO:error=1:xmlsec library function failed:filename=
Assets\2015 Production\CaCertificates\OldOids\new_NCA_GOST.cer;errno=2
Error: failed to load pem certificate from "╨kп═Р"
mngr is INVALID
func=xmlSecXPathDataExecute:file=xpath.c:line=273:obj=unknown:subj=xmlXPtrEval:e
rror=5:libxml2 library function failed:expr=xpointer(id('kalkanSignedBody'))
func=xmlSecXPathDataListExecute:file=xpath.c:line=373:obj=unknown:subj=xmlSecXPa
thDataExecute:error=1:xmlsec library function failed:
func=xmlSecTransformXPathExecute:file=xpath.c:line=483:obj=xpointer:subj=xmlSecX
PathDataExecute:error=1:xmlsec library function failed:
func=xmlSecTransformDefaultPushXml:file=transforms.c:line=2405:obj=xpointer:subj
=xmlSecTransformExecute:error=1:xmlsec library function failed:
func=xmlSecTransformCtxXmlExecute:file=transforms.c:line=1236:obj=unknown:subj=x
mlSecTransformPushXml:error=1:xmlsec library function failed:transform=xpointer
func=xmlSecTransformCtxExecute:file=transforms.c:line=1296:obj=unknown:subj=xmlS
ecTransformCtxXmlExecute:error=1:xmlsec library function failed:
func=xmlSecDSigReferenceCtxProcessNode:file=xmldsig.c:line=1571:obj=unknown:subj
=xmlSecTransformCtxExecute:error=1:xmlsec library function failed:
func=xmlSecDSigCtxProcessSignedInfoNode:file=xmldsig.c:line=804:obj=unknown:subj
=xmlSecDSigReferenceCtxProcessNode:error=1:xmlsec library function failed:node=R
eference
func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=547:obj=unknown:subj=
xmlSecDSigCtxProcessSignedInfoNode:error=1:xmlsec library function failed:
func=xmlSecDSigCtxVerify:file=xmldsig.c:line=366:obj=unknown:subj=xmlSecDSigCtxS
ignatureProcessNode:error=1:xmlsec library function failed:
Error: signature verify
func=xmlSecKeysMngrDestroy:file=keysmngr.c:line=82:obj=unknown:subj=mngr != NULL
:error=100:assertion:
Изменено: 3 года, 10 мес. назад от opewix.

Re: Ошибка валидации XML TAG в ManagedOpenSsl 3 года, 10 мес. назад #1897

  • opewix
  • Осваиваюсь на форуме
  • Постов: 33
  • Репутация: 0
up! У кого-нибудь работает пример подписания XmlTag в ManagedOpenSsl из SDK?

Re: Ошибка валидации XML TAG в ManagedOpenSsl 3 года, 10 мес. назад #1900

  • yerlan_kabylov
  • Новый участник
  • Постов: 3
  • Репутация: 0
Добрый день!
Метод XmlClass.verifyTagXMLbytes(...) из SDK возвращает -1, так как мы подписываем XMLTag RSA-шным сертификатом, а при верификации указываем ГОСТ-вые CA-шки, поэтому и получеам -1. Чтобы верификация прошла удачна нужно поменять в byte[] xmlMessageBytesOut = xmlEx.signTagXMLbytes(xmlMessageBytesIn, "Id", "body-sign-id", "Security", " docs.oasis-open.org/wss/2004/01/oasis-20...ecext-1.0.xsd", "..\\..\\pkcs12\\rsa_deist.p12", "123456", "sha256") на в byte[] xmlMessageBytesOut = xmlEx.signTagXMLbytes(xmlMessageBytesIn, "Id", "body-sign-id", "Security", " docs.oasis-open.org/wss/2004/01/oasis-20...ecext-1.0.xsd", "..\\..\\pkcs12\\gost_deist.p12", "123456", "sha256"), либо указать при вызове метода xmlEx.verifyTagXMLbytes(): sCertCA[0] = "..\\..\\ca_cert\\knca_root.cer";
sCertCA[1] = "..\\..\\ca_cert\\rca_gost.cer";
res = xmlEx.verifyTagXMLbytes(xmlMessageBytesOut, "Id", sCertCA);
RSA-шные CA-шки.

Используйте der кодированные сертификаты

Re: Ошибка валидации XML TAG в ManagedOpenSsl 3 года, 10 мес. назад #1902

  • opewix
  • Осваиваюсь на форуме
  • Постов: 33
  • Репутация: 0
Пробовал - не помогает

Re: Ошибка валидации XML TAG в ManagedOpenSsl 3 года, 10 мес. назад #1904

  • opewix
  • Осваиваюсь на форуме
  • Постов: 33
  • Репутация: 0
Нашел ошибку у себя. Теперь пример в SDK заработал! Спасибо!
Изменено: 3 года, 10 мес. назад от opewix.

Re: Ошибка валидации XML TAG в ManagedOpenSsl 3 года, 10 мес. назад #1913

  • opewix
  • Осваиваюсь на форуме
  • Постов: 33
  • Репутация: 0
Пример SDK заработал, а собственный пример - нет.
Начал выяснять...

Оказалось, метод "verifyTagXMLbytes" в качестве CA файлов принимает сертификаты в base64 формате. Те, что лежат в SDK в папке "Keys and Certs" не подходят.

Чтобы получить сертификат в base64 формате, берете CA сертификат, открываете его - появляется окошко с его информацией. Там во вкладке Details снизу есть кнопка "Copy To". По ее нажатию откроется мастер, в нем надо выбрать формат Base64.
  • Страница:
  • 1
FaLang translation system by Faboba