Добрый день! Срочно нужна помощь. Подскажите, пожалуйста, в чем может быть проблема.Не удается проверить присоединенную подпись. Не проверяются файлы, подписанные конкретным ключом. Пока это единичный случай.
Системные параметры:-Dru.CryptoPro.reprov.enableCRLDP=true
-Dcom.sun.security.enableCRLDP=true
-Dcom.ibm.security.enableCRLDP=true
-Dru.cryptopro.notThrowIfChainIsInvalid=true
-Docsp.enable=false
Код проверки подписи: Collection<X509Certificate> xChain = new ArrayList<X509Certificate>();
Collection<X509CRL> x509CRLs = new ArrayList<X509CRL>();
CAdESSignature cadesSignature;
// Инициализация подписи try {
cadesSignature = new CAdESSignature(signature, null, CAdESType.CAdES_BES);
} catch (Throwable e) {
throw new RuntimeException("Cannot initialize signature.\n" + e.getMessage());
}
// Загрузка СОС try {
String crlUrl = "http://ca.ekey.ru/cdp/ekeyCA.crl";
//Это адрес, взятый из сертификата для именно этого контейнера HttpURLConnection connection = (HttpURLConnection) new URL(crlUrl.replace("&", "&").replace(" ", "%20")).openConnection();
connection.connect();
InputStream iStream = connection.getInputStream();
if (iStream != null) {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509CRL crl = (X509CRL) cf.generateCRL(iStream);
x509CRLs = Collections.singletonList(crl);
}
connection.disconnect();
} catch (Exception err) {
logger.error(err);
}
// Проверка подписи try {
if (x509CRLs != null && x509CRLs.size() > 0){
cadesSignature.verify(xChain, x509CRLs);
} else {
cadesSignature.verify(xChain);
}
} catch (Throwable e) {
throw new RuntimeException("Invalid signature\n" + e.getMessage());
}
РезультатДоходит до проверки подписи и говорит:
фев 05, 2014 10:41:34 AM ru.CryptoPro.CAdES.exception.CAdESException <init>
SEVERE: Error building certification path for C=RU, GIVENNAME=...и т.д..., SURNAME=...: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
ERROR 05.02 10:51:01,962 http-8080-1 (ru.mdi.irmdev.elib.crypt.JCPCryptService.verifyAndGetSignInfo():410) [] - sign_is_invalidError building certification path for C=RU, GIVENNAME=..., OID.1.2.840.113549.1.9.2="INN=........и т.д..... г. Москва, SURNAME=...: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Error building certification path for C=RU, GIVENNAME=Андрей Борисович, ........и т.д....., SURNAME=...: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target, errors: 'PKIX failure: invalid parameters of certificate' (33)
Корневой сертификат загружен в cacerts используемой jre. Другие файлы проверяются, для них даже достаточно cadesSignature.verify(xChain), без x509CRLs.
В сертификате (с которым проблема) не указан ocsp сервер, есть только CLR.
Отредактировано пользователем 5 февраля 2014 г. 17:31:39(UTC)
| Причина: Не указана