log.txt
(71kb) загружен 0 раз(а).Добрый день.
Есть 3 сертификата:
CN=Минкомсвязь России,O=Минкомсвязь России,L=г. Москва,ST=77 Москва.crl
CN=Центральный банк Российской Федерации,O=Банк России,L=г. Москва,ST=77 г. Москва.crl
18.11.2021_cbr.cer
и 2 отозванных:
CN=Минкомсвязь России,O=Минкомсвязь России,L=г. Москва,ST=77 Москва.crl
CN=Центральный банк Российской Федерации,O=Банк России,L=г. Москва,ST=77 г. Москва.crl
Так же есть zip файл и подпись к нему:
KGR_20220204_132533_request_128809.zip и KGR_20220204_132533_request_128809.zip.sig
Пытался проверить подпись на каждом из сертификатов типа:
InputStream certificateInputStream = new FileInputStream("C:\\temp\\18.11.2021_cbr.cer");
String signPath = "C:\\temp\\KGR_20220204_132533_request_128809.zip.sig";
String zipPath = "C:\\temp\\KGR_20220204_132533_request_128809.zip";
byte[] signByte = Files.readAllBytes(Paths.get(signPath));
byte[] zipByte = Files.readAllBytes(Paths.get(zipPath));
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
X509Certificate sert = (X509Certificate )certificateFactory.generateCertificate(certificateInputStream);
Signature dsa256 = Signature.getInstance(JCP.GOST_SIGN_NAME_2012_256_NAME);
dsa256.initVerify(object.getPublicKey());
dsa256.update(zipByte);
System.out.println("Verify SIGN 256 status '" +dsa256.verify(signByte) +"'. on " +JCP.GOST_SIGN_NAME /*JCP.GOST_SIGN_2012_256_NAME*/);
Выдает false.
Пробовал через CAdESSignature
Загрузил 3 сертификата через FileInputStream и добавил в коллекцию Collection<?> coll
Загрузил 2 отозванных и добавил в коллекцию отозванных:
X509CRL crl1 = (X509CRL) certificateFactory.generateCRL(crlSource1);
X509CRL crl2 = (X509CRL) certificateFactory.generateCRL(crlSource2);
Collection<X509CRL> crlColl = new ArrayList<X509CRL>();
crlColl.add(crl1);
crlColl.add(crl2);
CAdESSignature cadesSignature = new CAdESSignature(signByte, zipByte, null);
cadesSignature.verify(coll, crlColl);
По логу, вроде бы сначала загрузил сертификаты, затем, зачем-то пошел в
FINE: Loading trusted certificates from store C:\Program Files\Java\jdk1.8.0_251\jre\lib\security\cacerts with type JKS
А дальше, как я понимаю, полез в интернет пытаться проверять отозванные сертификаты и упал:
фев 07, 2023 7:42:44 PM ru.CryptoPro.JCP.pref.JCPPref getBoolean
CONFIG: System Preference Node: /ru/CryptoPro/reprov.disable_enroll_cert_type_ext_checker=false
Validation failed for the target:
serial: 40601c30683193a8dd69fe6b61965afe
subject: OID.1.2.643.100.4=#120A37373032323335313333, OID.1.2.643.100.1=#120D31303337373030303133303230, CN=ЦЕНТРАЛЬНЫЙ БАНК РОССИЙСКОЙ ФЕДЕРАЦИИ, O=БАНК РОССИИ, STREET="НЕГЛИННАЯ, 12", L=ГОРОД МОСКВА, ST=77 МОСКВА, C=RU
issuer: OID.1.2.643.3.131.1.1=#120C303037373032323335313333, OID.1.2.643.100.1=#120D31303337373030303133303230, CN=Центральный банк Российской Федерации, O=Банк России, STREET="ул. Неглинная, д. 12", L=г. Москва, ST=77 г. Москва, C=RU
not before: Thu Nov 18 16:54:06 MSK 2021
not after: Sat Aug 30 15:32:44 MSK 2036
signature provider: JCP
validation date: null
revocation algorithm: CPPKIX
revocation validator: RevCheck
online: true
For online validation (by CRL DP) 'com.sun.security.enableCRLDP' (for Oracle), or 'com.ibm.security.enableCRLDP' (for IBM) must be set to 'true', or 'ocsp.enable' must be set to 'true' (OCSP) with other options (responder etc.), or CRL list must be set for offline validation; error codes: [44] 'Certificate status is unknown or revoked',
at ru.CryptoPro.CAdES.CAdESSignerPKCS7Impl.verify(Unknown Source)
at ru.CryptoPro.CAdES.cl_1.verify(Unknown Source)
at ru.CryptoPro.CAdES.cl_1.verify(Unknown Source)
at ru.neoflex.vbrr.main.CBRCommunicator.main(CBRCommunicator.java:236)
Caused by: Validation failed for the target:
serial: 40601c30683193a8dd69fe6b61965afe
subject: OID.1.2.643.100.4=#120A37373032323335313333, OID.1.2.643.100.1=#120D31303337373030303133303230, CN=ЦЕНТРАЛЬНЫЙ БАНК РОССИЙСКОЙ ФЕДЕРАЦИИ, O=БАНК РОССИИ, STREET="НЕГЛИННАЯ, 12", L=ГОРОД МОСКВА, ST=77 МОСКВА, C=RU
issuer: OID.1.2.643.3.131.1.1=#120C303037373032323335313333, OID.1.2.643.100.1=#120D31303337373030303133303230, CN=Центральный банк Российской Федерации, O=Банк России, STREET="ул. Неглинная, д. 12", L=г. Москва, ST=77 г. Москва, C=RU
not before: Thu Nov 18 16:54:06 MSK 2021
not after: Sat Aug 30 15:32:44 MSK 2036
signature provider: JCP
validation date: null
revocation algorithm: CPPKIX
revocation validator: RevCheck
online: true
For online validation (by CRL DP) 'com.sun.security.enableCRLDP' (for Oracle), or 'com.ibm.security.enableCRLDP' (for IBM) must be set to 'true', or 'ocsp.enable' must be set to 'true' (OCSP) with other options (responder etc.), or CRL list must be set for offline validation; error codes: [44] 'Certificate status is unknown or revoked',
at ru.CryptoPro.AdES.certificate.BaseCertificateChainValidatorImpl.validate(Unknown Source)
at ru.CryptoPro.AdES.certificate.BaseCertificateChainValidatorImpl.validate(Unknown Source)
at ru.CryptoPro.AdES.certificate.BaseCertificateChainValidatorImpl.validate(Unknown Source)
at ru.CryptoPro.AdES.external.signature.AdESSigner.validate(Unknown Source)
... 4 more
Caused by: java.security.cert.CertPathValidatorException: Could not determine revocation status
at sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:135)
at sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:238)
at sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:146)
at sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:85)
at java.security.cert.CertPathValidator.validate(CertPathValidator.java:292)
at ru.CryptoPro.reprov.CPCertPathValidator.engineValidate(Unknown Source)
at java.security.cert.CertPathValidator.validate(CertPathValidator.java:292)
... 8 more
Caused by: java.security.cert.CertPathValidatorException: Could not determine revocation status
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.check(Unknown Source)
at sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:125)
... 14 more
Stop
Как все таки проверить подпись на этих сертификатах и чтобы офлайн - у компа нет доступа в интернет