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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline imgen  
#1 Оставлено : 4 июня 2021 г. 14:55:26(UTC)
imgen

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

Группы: Участники
Зарегистрирован: 13.05.2021(UTC)
Сообщений: 17

Добрый день!

Не получается пройти проверку цепочки сертификатов.
Вот код:
Код:


package com.company;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.client.HttpClient;
import org.bouncycastle.cert.X509CertificateHolder;
import org.bouncycastle.cms.CMSException;
import org.bouncycastle.util.CollectionStore;
import ru.CryptoPro.CAdES.CAdESConfig;
import ru.CryptoPro.CAdES.CAdESSignature;
import ru.CryptoPro.CAdES.CAdESType;
import ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.EncryptedKey;
import ru.CryptoPro.JCP.JCP;
import ru.CryptoPro.JCP.Key.SecretKeySpec;
import ru.CryptoPro.JCP.KeyStore.HDImage.HDImageStore;
import ru.CryptoPro.ssl.Provider;

import javax.crypto.Cipher;
import javax.crypto.EncryptedPrivateKeyInfo;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.IvParameterSpec;
import javax.net.ssl.*;
import javax.xml.bind.DatatypeConverter;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.Key;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.Security;
import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.logging.Logger;

public class Main {

    static final String keystoreName = "HDImageStore";
    static final String keystorePass = "1234567890";
    static final String keystorePath = "~/tmp/cert/";
    static final String certPath = "~/tmp/cert/main.cer";
    static final String rootCertPath = "~/tmp/cert/minkom.cer";
    static final String alias = "main.000";

    public static String getCertThumbprint(Certificate cert) throws CertificateEncodingException {
        return  DatatypeConverter.printHexBinary(DigestUtils.getSha1Digest().digest(cert.getEncoded()));
    }

    public static void main(String[] args) throws Exception {

        System.setProperty( "com.sun.security.enableCRLDP", "true" );
        System.setProperty( "com.ibm.security.enableCRLDP", "true" );
        System.setProperty("com.sun.security.enableAIAcaIssuers", "true"); // для загрузки сертификатов по AIA из сети
        System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true");

        System.setProperty("javax.net.ssl.keyStorePassword", Main.keystorePass);


        //Запись сертификата в хранилище
        KeyStore ks=addCert(Main.certPath, JCP.HD_STORE_NAME, keystorePass, keystorePath, alias);

        Certificate rootCert=loadCertificate(new File(rootCertPath));
        Certificate ownCert=loadCertificate(new File(certPath));

        String thumbPrint=getCertThumbprint(ownCert);

        System.out.println(thumbPrint);
        KeyStore rootks = KeyStore.getInstance("CertStore");
        rootks.load(null,"root".toCharArray());
        rootks.setCertificateEntry("root",rootCert);

        ks.setCertificateEntry("root", rootCert);





        PrivateKey privateKey = (PrivateKey) ks.getKey( alias, keystorePass.toCharArray() );

        X509Certificate cert = (X509Certificate) ks.getCertificate( alias );
        List<X509Certificate> chain = Arrays.asList(new X509Certificate[]{cert});//, (X509Certificate) rootCert
        //new sign
        CAdESSignature cadesSignature = new CAdESSignature( true );

        //add certs in sign
        Collection<X509CertificateHolder> holderList = new ArrayList<X509CertificateHolder>();
        for (X509Certificate cert1 : chain)
        {
            holderList.add(new X509CertificateHolder(cert1.getEncoded()));
        }
        CollectionStore collectionStore=new CollectionStore(holderList);
        cadesSignature.setCertificateStore(collectionStore);

        //cadesSignature.setCertificateStore();


        byte[] src ="test".getBytes();
        cadesSignature.addSigner( "JCP", null, null, privateKey, chain, CAdESType.CAdES_A, "http://www.cryptopro.ru/tsp/", false );
        ByteArrayOutputStream signatureStream = new ByteArrayOutputStream();
        // Подготовка контекста.
        cadesSignature.open( signatureStream );
        // Хеширование.
        cadesSignature.update( src );

        // Создание подписи с выводом в signatureStream.
        cadesSignature.close();
        signatureStream.close();
        // Получаем подпись в виде массива.
        byte[] cadesCms = signatureStream.toByteArray();


        //delCert(keystoreName, keystorePass, keystorePath, alias);
    }

    public static String getPublicKeyOid(PrivateKey privateKey) {

        String privateKeyAlgorithm = privateKey.getAlgorithm();

        if (privateKeyAlgorithm.equalsIgnoreCase(JCP.GOST_EL_2012_256_NAME) ||
                privateKeyAlgorithm.equalsIgnoreCase(JCP.GOST_DH_2012_256_NAME)) {
            return JCP.GOST_PARAMS_SIG_2012_256_KEY_OID;
        } // if
        else if (privateKeyAlgorithm.equalsIgnoreCase(JCP.GOST_EL_2012_512_NAME) ||
                privateKeyAlgorithm.equalsIgnoreCase(JCP.GOST_DH_2012_512_NAME)) {
            return JCP.GOST_PARAMS_SIG_2012_512_KEY_OID;
        } 

        return JCP.GOST_EL_KEY_OID;

    }

    public static String getDigestOid(PrivateKey privateKey) {

        String privateKeyAlgorithm = privateKey.getAlgorithm();

        if (privateKeyAlgorithm.equalsIgnoreCase(JCP.GOST_EL_2012_256_NAME) ||
                privateKeyAlgorithm.equalsIgnoreCase(JCP.GOST_DH_2012_256_NAME)) {
            return JCP.GOST_DIGEST_2012_256_OID;
        } // if
        else if (privateKeyAlgorithm.equalsIgnoreCase(JCP.GOST_EL_2012_512_NAME) ||
                privateKeyAlgorithm.equalsIgnoreCase(JCP.GOST_DH_2012_512_NAME)) {
            return JCP.GOST_DIGEST_2012_512_OID;
        } // if

        return JCP.GOST_DIGEST_OID;
    }

    private static Certificate loadCertificate(File certificateFile) throws Exception{
        try (FileInputStream inputStream = new FileInputStream(certificateFile)) {
            return (Certificate) CertificateFactory.getInstance("X509").generateCertificate(inputStream);
        }
    }

    public static KeyStore addCert(String certPath, String keystoreName,
                                   String keystorePass,
                                   String keystorePath, String alias) throws Exception {
        final CertificateFactory cf = CertificateFactory.getInstance("X509");
        HDImageStore.setDir(keystorePath);
        final Certificate ownCert = cf.generateCertificate(
                new BufferedInputStream(new FileInputStream(certPath)));
        KeyStore ks = KeyStore.getInstance("HDImageStore");

        char[] KeyStorePass = keystorePass.toCharArray();

        ks.load(null,KeyStorePass);


        ks.setCertificateEntry(alias, ownCert);

        Logger.getLogger("LOGGER").info(
                "Recording of a Certificate named \"" + alias + "\" to " +
                        keystoreName + " is completed.");
        return ks;
    }

}


Получаю следующий лог:
Цитата:

Jun 04, 2021 2:33:01 PM ru.CryptoPro.JCSP.MSCAPI.cl_6 enumInstalledProviders
INFO: Provider with type 24 not found.
Jun 04, 2021 2:33:01 PM ru.CryptoPro.JCSP.MSCAPI.cl_6 enumInstalledProviders
INFO: Provider with type 24 not found.
Jun 04, 2021 2:33:02 PM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 2.0.40424
Jun 04, 2021 2:33:03 PM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
Jun 04, 2021 2:33:03 PM com.company.Main addCert
INFO: Recording of a Certificate named "main.000" to HDImageStore is completed.
5DA578E8CF356ED4EECA090D9EB81ADB9621E331
Jun 04, 2021 2:33:03 PM ru.CryptoPro.CAdES.tools.CAdESUtility initJCPAlgorithms
INFO: Replacement of the BouncyCastle GOST algorithms.
Jun 04, 2021 2:33:03 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext l
FINE: DefaultSSLContext getDefaultKeyManager().
Jun 04, 2021 2:33:03 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext l
FINE: DefaultSSLContext getDefaultKeyManager().
Jun 04, 2021 2:33:03 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext l
INFO: keyStore is :
Jun 04, 2021 2:33:03 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext l
INFO: keyStore is :
Jun 04, 2021 2:33:03 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext l
INFO: keyStore type is :
Jun 04, 2021 2:33:03 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext l
INFO: keyStore type is :
Jun 04, 2021 2:33:03 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext l
INFO: keyStore provider is :
Jun 04, 2021 2:33:03 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext l
INFO: keyStore provider is :
Jun 04, 2021 2:33:03 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext l
INFO: init keystore
Jun 04, 2021 2:33:03 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext l
INFO: init keystore
Jun 04, 2021 2:33:03 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext l
INFO: init keymanager of type GostX509
Jun 04, 2021 2:33:03 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext l
INFO: init keymanager of type GostX509
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_38 <init>
INFO: %% adding as private keys %%
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_38 <init>
INFO: %% adding as private keys %%
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_38 <init>
FINE: Loading main.000 (JCP)...
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_38 <init>
FINE: Loading main.000 (JCP)...
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_38 <init>
FINE: Private key main.000 loaded.
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_38 <init>
FINE: Private key main.000 loaded.
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_38 <init>
FINE: ***
found key for : main.000
chain [0] = [
[
Version: V3
Subject: OID.1.2.643.100.3=#120B3036373633313537373837, OID.1.2.643.100.1=#120D31313837373436353432303630, OID.1.2.643.3.131.1.1=#120C303037373230343330363938, STREET="УЛИЦА ПУШКИНА, дом 5, КВ 1", GIVENNAME=АЛЕКСАНДР СЕРГЕЕВИЧ, SURNAME=ПУШКИН, EMAILADDRESS=pushkin@mail.ru, L=МОСКВА, ST="77 Г. МОСКВА", C=RU, T=ГЕНЕРАЛЬНЫЙ ДИРЕКТОР, OU=Администрация, O="ООО \"ДЕКАБРИСТЫ\"", CN="ООО \"ДЕКАБРИСТЫ\""
Signature Algorithm: 1.2.643.7.1.1.3.2, OID = 1.2.643.7.1.1.3.2

Key: ru.CryptoPro.JCP.Key.GostPublicKey
Validity: [From: Thu Feb 25 11:04:40 MSK 2021,
To: Fri Feb 25 11:04:40 MSK 2022]
Issuer: OID.1.2.643.100.1=#120D31313937373436303631343436, OID.1.2.643.3.131.1.1=#120C303039373039303432343837, STREET="ул. Марксистская, д. 3, стр. 1, эт. 5, пом. I, ком. 55", L=Москва, ST=77 г. Москва, C=RU, O="ООО УЦ \"Столица\"", CN="ООО УЦ \"Столица\""
SerialNumber: [ 01d70b4c dfbcc770 00000009 33d90001]
Issuer Id:
UniqueIdentity:00110011 00110011 01000100 00111001 00110000 00110000 00110000 00110001


Certificate Extensions: 10
[1]: ObjectId: 1.2.643.100.111 Criticality=false
Extension unknown: DER encoded OCTET string =
0000: 04 2B 0C 29 D0 9A D1 80 D0 B8 D0 BF D1 82 D0 BE .+.)............
0010: D0 9F D1 80 D0 BE 20 43 53 50 20 28 D0 B2 D0 B5 ...... CSP (....
0020: D1 80 D1 81 D0 B8 D1 8F 20 34 2E 30 29 ........ 4.0)


[2]: ObjectId: 1.2.643.100.112 Criticality=false
Extension unknown: DER encoded OCTET string =
0000: 04 82 01 61 30 82 01 5D 0C 3F D0 A1 D0 9A D0 97 ...a0..].?......
0010: D0 98 20 56 69 50 4E 65 74 20 43 53 50 20 34 2E .. ViPNet CSP 4.
0020: 32 20 28 D0 B2 D0 B0 D1 80 D0 B8 D0 B0 D0 BD D1 2 (.............
0030: 82 20 D0 B8 D1 81 D0 BF D0 BE D0 BB D0 BD D0 B5 . ..............
0040: D0 BD D0 B8 D1 8F 20 33 29 0C 6B 56 69 50 4E 65 ...... 3).kViPNe
0050: 74 20 D0 A3 D0 B4 D0 BE D1 81 D1 82 D0 BE D0 B2 t ..............
0060: D0 B5 D1 80 D1 8F D1 8E D1 89 D0 B8 D0 B9 20 D1 .............. .
0070: 86 D0 B5 D0 BD D1 82 D1 80 20 34 20 28 D0 B2 D0 ......... 4 (...
0080: B5 D1 80 D1 81 D0 B8 D1 8F 20 34 2E 36 29 20 28 ......... 4.6) (
0090: D0 B2 D0 B0 D1 80 D0 B8 D0 B0 D0 BD D1 82 20 D0 .............. .
00A0: B8 D1 81 D0 BF D0 BE D0 BB D0 BD D0 B5 D0 BD D0 ................
00B0: B8 D1 8F 20 32 29 0C 48 D0 A0 D0 B5 D1 88 D0 B5 ... 2).H........
00C0: D0 BD D0 B8 D0 B5 20 D0 A4 D0 A1 D0 91 20 D0 A0 ...... ...... ..
00D0: D0 BE D1 81 D1 81 D0 B8 D0 B8 20 E2 84 96 31 34 .......... ...14
00E0: 39 2F 33 2F 32 2F 32 2D 33 31 31 35 20 D0 BE D1 9/3/2/2-3115 ...
00F0: 82 20 33 30 2E 31 32 2E 32 30 32 30 20 D0 B3 2E . 30.12.2020 ...
0100: 0C 63 D0 A1 D0 B5 D1 80 D1 82 D0 B8 D1 84 D0 B8 .c..............
0110: D0 BA D0 B0 D1 82 20 D1 81 D0 BE D0 BE D1 82 D0 ...... .........
0120: B2 D0 B5 D1 82 D1 81 D1 82 D0 B2 D0 B8 D1 8F 20 ...............
0130: D0 A4 D0 A1 D0 91 20 D0 A0 D0 BE D1 81 D1 81 D0 ...... .........
0140: B8 D0 B8 20 E2 84 96 20 D0 A1 D0 A4 2F 31 31 38 ... ... ..../118
0150: 2D 33 35 31 30 20 D0 BE D1 82 20 32 35 2E 31 30 -3510 .... 25.10
0160: 2E 32 30 31 38 .2018


[3]: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
AuthorityInfoAccess [
[
accessMethod: caIssuers
accessLocation: URIName: http://uc-stolica.ru/stolica1.cer
,
accessMethod: caIssuers
accessLocation: URIName: https://uc-stolica.ru/stolica2.crt
,
accessMethod: caIssuers
accessLocation: URIName: http://tech.uc-stolica.ru/stolica1.cer
]
]

[4]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 8F ED 34 C9 83 81 B8 5D 51 26 CC 78 36 90 BF B4 ..4....]Q&.x6...
0010: 04 3A 9D 3A .:.:
]
[CN=Минкомсвязь России, OID.1.2.643.3.131.1.1=#120C303037373130343734333735, OID.1.2.643.100.1=#120D31303437373032303236373031, O=Минкомсвязь России, STREET="улица Тверская, дом 7", L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@minsvyaz.ru]
SerialNumber: [ 45de7f6b 00000000 0411]
]

[5]: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
CA:false
PathLen: undefined
]

[6]: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
[DistributionPoint:
[URIName: http://uc-stolica.ru/stolica1.crl]
, DistributionPoint:
[URIName: http://82.202.247.245/stolica1.crl]
, DistributionPoint:
[URIName: http://tech.uc-stolica.ru/stolica1.crl]
]]

[7]: ObjectId: 2.5.29.32 Criticality=false
CertificatePolicies [
[CertificatePolicyId: [1.2.643.100.113.1]
[] ]
[CertificatePolicyId: [1.2.643.100.113.2]
[] ]
[CertificatePolicyId: [1.2.643.100.113.3]
[] ]
]

[8]: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
clientAuth
emailProtection
1.2.643.3.5.10.2.12
1.2.643.6.41.1.1.1
1.2.643.6.3.2
]

[9]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
DigitalSignature
Non_repudiation
Key_Encipherment
Data_Encipherment
]

[10]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 4F 16 0A BC B2 E4 98 9B 76 B8 1D 76 E4 AE BB 7D O.......v..v....
0010: DD C1 65 34 ..e4
]
]

]
Algorithm: [1.2.643.7.1.1.3.2]
Signature:
0000: D1 46 AB 2F 27 46 E5 AE 39 BB E0 76 1B E8 78 0C .F./'F..9..v..x.
0010: DA EE C3 AF 5A 40 CD 08 FC A5 5A 60 DD F1 6A 0F ....Z@....Z`..j.
0020: A7 8C 41 14 B9 92 C7 C0 FC D5 1E 70 41 F9 21 94 ..A........pA.!.
0030: C9 18 CA F9 7D 90 B6 91 22 14 C6 6C E4 84 4D 79 ........"..l..My

]
***

Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_38 <init>
FINE: ***
found key for : main.000
chain [0] = [
[
Version: V3
Subject: OID.1.2.643.100.3=#120B3036373633313537373837, OID.1.2.643.100.1=#120D31313837373436353432303630, OID.1.2.643.3.131.1.1=#120C303037373230343330363938, STREET="УЛИЦА ПУШКИНА, дом 5, КВ 1", GIVENNAME=АЛЕКСАНДР СЕРГЕЕВИЧ, SURNAME=ПУШКИН, EMAILADDRESS=pushkin@mail.ru, L=МОСКВА, ST="77 Г. МОСКВА", C=RU, T=ГЕНЕРАЛЬНЫЙ ДИРЕКТОР, OU=Администрация, O="ООО \"ДЕКАБРИСТЫ\"", CN="ООО \"ДЕКАБРИСТЫ\""
Signature Algorithm: 1.2.643.7.1.1.3.2, OID = 1.2.643.7.1.1.3.2

Key: ru.CryptoPro.JCP.Key.GostPublicKey
Validity: [From: Thu Feb 25 11:04:40 MSK 2021,
To: Fri Feb 25 11:04:40 MSK 2022]
Issuer: OID.1.2.643.100.1=#120D31313937373436303631343436, OID.1.2.643.3.131.1.1=#120C303039373039303432343837, STREET="ул. Пушкина, д. 3, стр. 1, эт. 5, пом. I, ком. 55", L=Москва, ST=77 г. Москва, C=RU, O="ООО УЦ \"Столица\"", CN="ООО УЦ \"Столица\""
SerialNumber: [ 01d70b4c dfbcc770 00000009 33d90001]
Issuer Id:
UniqueIdentity:00110011 00110011 01000100 00111001 00110000 00110000 00110000 00110001


Certificate Extensions: 10
[1]: ObjectId: 1.2.643.100.111 Criticality=false
Extension unknown: DER encoded OCTET string =
0000: 04 2B 0C 29 D0 9A D1 80 D0 B8 D0 BF D1 82 D0 BE .+.)............
0010: D0 9F D1 80 D0 BE 20 43 53 50 20 28 D0 B2 D0 B5 ...... CSP (....
0020: D1 80 D1 81 D0 B8 D1 8F 20 34 2E 30 29 ........ 4.0)


[2]: ObjectId: 1.2.643.100.112 Criticality=false
Extension unknown: DER encoded OCTET string =
0000: 04 82 01 61 30 82 01 5D 0C 3F D0 A1 D0 9A D0 97 ...a0..].?......
0010: D0 98 20 56 69 50 4E 65 74 20 43 53 50 20 34 2E .. ViPNet CSP 4.
0020: 32 20 28 D0 B2 D0 B0 D1 80 D0 B8 D0 B0 D0 BD D1 2 (.............
0030: 82 20 D0 B8 D1 81 D0 BF D0 BE D0 BB D0 BD D0 B5 . ..............
0040: D0 BD D0 B8 D1 8F 20 33 29 0C 6B 56 69 50 4E 65 ...... 3).kViPNe
0050: 74 20 D0 A3 D0 B4 D0 BE D1 81 D1 82 D0 BE D0 B2 t ..............
0060: D0 B5 D1 80 D1 8F D1 8E D1 89 D0 B8 D0 B9 20 D1 .............. .
0070: 86 D0 B5 D0 BD D1 82 D1 80 20 34 20 28 D0 B2 D0 ......... 4 (...
0080: B5 D1 80 D1 81 D0 B8 D1 8F 20 34 2E 36 29 20 28 ......... 4.6) (
0090: D0 B2 D0 B0 D1 80 D0 B8 D0 B0 D0 BD D1 82 20 D0 .............. .
00A0: B8 D1 81 D0 BF D0 BE D0 BB D0 BD D0 B5 D0 BD D0 ................
00B0: B8 D1 8F 20 32 29 0C 48 D0 A0 D0 B5 D1 88 D0 B5 ... 2).H........
00C0: D0 BD D0 B8 D0 B5 20 D0 A4 D0 A1 D0 91 20 D0 A0 ...... ...... ..
00D0: D0 BE D1 81 D1 81 D0 B8 D0 B8 20 E2 84 96 31 34 .......... ...14
00E0: 39 2F 33 2F 32 2F 32 2D 33 31 31 35 20 D0 BE D1 9/3/2/2-3115 ...
00F0: 82 20 33 30 2E 31 32 2E 32 30 32 30 20 D0 B3 2E . 30.12.2020 ...
0100: 0C 63 D0 A1 D0 B5 D1 80 D1 82 D0 B8 D1 84 D0 B8 .c..............
0110: D0 BA D0 B0 D1 82 20 D1 81 D0 BE D0 BE D1 82 D0 ...... .........
0120: B2 D0 B5 D1 82 D1 81 D1 82 D0 B2 D0 B8 D1 8F 20 ...............
0130: D0 A4 D0 A1 D0 91 20 D0 A0 D0 BE D1 81 D1 81 D0 ...... .........
0140: B8 D0 B8 20 E2 84 96 20 D0 A1 D0 A4 2F 31 31 38 ... ... ..../118
0150: 2D 33 35 31 30 20 D0 BE D1 82 20 32 35 2E 31 30 -3510 .... 25.10
0160: 2E 32 30 31 38 .2018


[3]: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
AuthorityInfoAccess [
[
accessMethod: caIssuers
accessLocation: URIName: http://uc-stolica.ru/stolica1.cer
,
accessMethod: caIssuers
accessLocation: URIName: https://uc-stolica.ru/stolica2.crt
,
accessMethod: caIssuers
accessLocation: URIName: http://tech.uc-stolica.ru/stolica1.cer
]
]

[4]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 8F ED 34 C9 83 81 B8 5D 51 26 CC 78 36 90 BF B4 ..4....]Q&.x6...
0010: 04 3A 9D 3A .:.:
]
[CN=Минкомсвязь России, OID.1.2.643.3.131.1.1=#120C303037373130343734333735, OID.1.2.643.100.1=#120D31303437373032303236373031, O=Минкомсвязь России, STREET="улица Тверская, дом 7", L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@minsvyaz.ru]
SerialNumber: [ 45de7f6b 00000000 0411]
]

[5]: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
CA:false
PathLen: undefined
]

[6]: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
[DistributionPoint:
[URIName: http://uc-stolica.ru/stolica1.crl]
, DistributionPoint:
[URIName: http://82.202.247.245/stolica1.crl]
, DistributionPoint:
[URIName: http://tech.uc-stolica.ru/stolica1.crl]
]]

[7]: ObjectId: 2.5.29.32 Criticality=false
CertificatePolicies [
[CertificatePolicyId: [1.2.643.100.113.1]
[] ]
[CertificatePolicyId: [1.2.643.100.113.2]
[] ]
[CertificatePolicyId: [1.2.643.100.113.3]
[] ]
]

[8]: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
clientAuth
emailProtection
1.2.643.3.5.10.2.12
1.2.643.6.41.1.1.1
1.2.643.6.3.2
]

[9]: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
DigitalSignature
Non_repudiation
Key_Encipherment
Data_Encipherment
]

[10]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 4F 16 0A BC B2 E4 98 9B 76 B8 1D 76 E4 AE BB 7D O.......v..v....
0010: DD C1 65 34 ..e4
]
]

]
Algorithm: [1.2.643.7.1.1.3.2]
Signature:
0000: D1 46 AB 2F 27 46 E5 AE 39 BB E0 76 1B E8 78 0C .F./'F..9..v..x.
0010: DA EE C3 AF 5A 40 CD 08 FC A5 5A 60 DD F1 6A 0F ....Z@....Z`..j.
0020: A7 8C 41 14 B9 92 C7 C0 FC D5 1E 70 41 F9 21 94 ..A........pA.!.
0030: C9 18 CA F9 7D 90 B6 91 22 14 C6 6C E4 84 4D 79 ........"..l..My

]
***

Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.TrustManagerFactoryImpl a
INFO: trustStore is : No File Available, using empty keystore.
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.TrustManagerFactoryImpl a
INFO: trustStore is : No File Available, using empty keystore.
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.TrustManagerFactoryImpl a
INFO: trustStore type is : CertStore
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.TrustManagerFactoryImpl a
INFO: trustStore type is : CertStore
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.TrustManagerFactoryImpl a
INFO: trustStore provider is :
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.TrustManagerFactoryImpl a
INFO: trustStore provider is :
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.TrustManagerFactoryImpl a
INFO: init truststore
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.TrustManagerFactoryImpl a
INFO: init truststore
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_121 a
FINE:
%% adding as trusted certificates %%

Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_121 a
FINE:
%% adding as trusted certificates %%

Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: SSLContextImpl init.
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: SSLContextImpl init.
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: trigger seeding of SecureRandom
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: trigger seeding of SecureRandom
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: done seeding SecureRandom
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: done seeding SecureRandom
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: SSLContextImpl initialized.
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: SSLContextImpl initialized.
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext <init>
INFO: DefaultSSLContext initialized.
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLContextImpl$DefaultSSLContext <init>
INFO: DefaultSSLContext initialized.
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLSessionImpl <init>
FINE: %% Initialized: [Session-1, SSL_NULL_WITH_NULL_NULL]
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLSessionImpl <init>
FINE: %% Initialized: [Session-1, SSL_NULL_WITH_NULL_NULL]
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_58 a
FINE: Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_58 a
FINE: Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLSocketImpl setSoTimeout
FINE: main, setSoTimeout(0) called
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLSocketImpl setSoTimeout
FINE: main, setSoTimeout(0) called
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_15 a
FINE: %% No cached client session
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_15 a
FINE: %% No cached client session
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_42 f
FINE: *** ClientHello, TLSv1
RandomCookie: GMT: 1606029168 bytes = { 23, 210, 210, 52, 228, 198, 139, 189, 123, 56, 55, 177, 143, 162, 18, 145, 63, 231, 36, 214, 88, 76, 169, 71, 209, 97, 128, 241 }
Session ID: {}
Cipher Suites: [TLS_CIPHER_2012, TLS_CIPHER_2001]
Compression Methods: { 0 }
Extension ext_hash_and_mac_alg_select, ext_hash_and_mac_alg_select: [48, 32, 48, 30, 48, 8, 6, 6, 42, -123, 3, 2, 2, 9, 48, 8, 6, 6, 42, -123, 3, 2, 2, 22, 48, 8, 6, 6, 42, -123, 3, 2, 2, 23]
Extension renegotiation_info, renegotiated_connection: <empty>
***

Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.cl_42 f
FINE: *** ClientHello, TLSv1
RandomCookie: GMT: 1606029168 bytes = { 23, 210, 210, 52, 228, 198, 139, 189, 123, 56, 55, 177, 143, 162, 18, 145, 63, 231, 36, 214, 88, 76, 169, 71, 209, 97, 128, 241 }
Session ID: {}
Cipher Suites: [TLS_CIPHER_2012, TLS_CIPHER_2001]
Compression Methods: { 0 }
Extension ext_hash_and_mac_alg_select, ext_hash_and_mac_alg_select: [48, 32, 48, 30, 48, 8, 6, 6, 42, -123, 3, 2, 2, 9, 48, 8, 6, 6, 42, -123, 3, 2, 2, 22, 48, 8, 6, 6, 42, -123, 3, 2, 2, 23]
Extension renegotiation_info, renegotiated_connection: <empty>
***

Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLSocketImpl b
FINE: main, RECV TLSv1 ALERT: fatal, description = handshake_failure
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLSocketImpl b
FINE: main, RECV TLSv1 ALERT: fatal, description = handshake_failure
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLSocketImpl h
FINE: main called closeSocket()
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLSocketImpl h
FINE: main called closeSocket()
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLSocketImpl a
WARNING: main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
Jun 04, 2021 2:33:04 PM ru.CryptoPro.ssl.SSLSocketImpl a
WARNING: main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
Exception in thread "main" org.bouncycastle.cms.CMSAttributeTableGenerationException: Error building certification path for STREET="ул. Сущёвский вал, д. 18", CN="Тестовая служба штампов времени ООО \"КРИПТО-ПРО\"", OU=Тестовый УЦ, O="ООО \"КРИПТО-ПРО\"", L=Москва, ST=77 г. Москва, C=RU, EMAILADDRESS=support@cryptopro.ru, OID.1.2.643.3.131.1.1=#120C303037373132333435363738, OID.1.2.643.100.1=#120D31303037373132333435363738: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at ru.CryptoPro.CAdES.pc_2.pc_0.cl_7.getAttributes(Unknown Source)
at ru.CryptoPro.CAdES.pc_2.pc_0.cl_5.getAttributes(Unknown Source)
at ru.CryptoPro.CAdES.pc_2.pc_0.cl_8.getAttributes(Unknown Source)
at ru.CryptoPro.CAdES.pc_2.pc_0.cl_1.getAttributes(Unknown Source)
at org.bouncycastle.cms.SignerInfoGenerator.generate(Unknown Source)
at org.bouncycastle.cms.CMSSignedDataStreamGenerator$CmsSignedDataOutputStream.close(Unknown Source)
at ru.CryptoPro.CAdES.cl_1.close(Unknown Source)
at com.company.Main.main(Main.java:137)
Caused by: Error building certification path for STREET="ул. Сущёвский вал, д. 18", CN="Тестовая служба штампов времени ООО \"КРИПТО-ПРО\"", OU=Тестовый УЦ, O="ООО \"КРИПТО-ПРО\"", L=Москва, ST=77 г. Москва, C=RU, EMAILADDRESS=support@cryptopro.ru, OID.1.2.643.3.131.1.1=#120C303037373132333435363738, OID.1.2.643.100.1=#120D31303037373132333435363738: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; error codes: [33] 'PKIX failure: invalid parameters of certificate',
... 8 more
Caused by: Error building certification path for STREET="ул. Сущёвский вал, д. 18", CN="Тестовая служба штампов времени ООО \"КРИПТО-ПРО\"", OU=Тестовый УЦ, O="ООО \"КРИПТО-ПРО\"", L=Москва, ST=77 г. Москва, C=RU, EMAILADDRESS=support@cryptopro.ru, OID.1.2.643.3.131.1.1=#120C303037373132333435363738, OID.1.2.643.100.1=#120D31303037373132333435363738: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; error codes: [33] 'PKIX failure: invalid parameters of certificate',
at ru.CryptoPro.CAdES.CAdESSignerPKCS7Impl.verify(Unknown Source)
at ru.CryptoPro.CAdES.CAdESSignerBESImpl.verify(Unknown Source)
at ru.CryptoPro.CAdES.CAdESSignerPKCS7Impl.verify(Unknown Source)
at ru.CryptoPro.CAdES.timestamp.external.InternalTimeStampValidationProcessImpl.validate(Unknown Source)
at ru.CryptoPro.AdES.timestamp.TSPTimeStampValidatorImpl.validate(Unknown Source)
at ru.CryptoPro.AdES.timestamp.TSPTimeStampValidatorImpl.validate(Unknown Source)
at ru.CryptoPro.CAdES.pc_2.pc_0.cl_7.a(Unknown Source)
... 8 more
Caused by: Error building certification path for STREET="ул. Сущёвский вал, д. 18", CN="Тестовая служба штампов времени ООО \"КРИПТО-ПРО\"", OU=Тестовый УЦ, O="ООО \"КРИПТО-ПРО\"", L=Москва, ST=77 г. Москва, C=RU, EMAILADDRESS=support@cryptopro.ru, OID.1.2.643.3.131.1.1=#120C303037373132333435363738, OID.1.2.643.100.1=#120D31303037373132333435363738: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; error codes: [33] 'PKIX failure: invalid parameters of certificate',
at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.build(Unknown Source)
at ru.CryptoPro.AdES.certificate.CertificateChainBuilderImpl.build(Unknown Source)
at ru.CryptoPro.AdES.external.signature.AdESSigner.build(Unknown Source)
... 15 more


Не очень понятно, почему я не могу пройти проверку. Не могли бы вы помочь?
Offline Евгений Афанасьев  
#2 Оставлено : 4 июня 2021 г. 21:08:09(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Здравствуйте.

Выглядит так, будто в при включенном enableAIAcaIssuers у вас начинается скачивание сертификата (промежуточного) для построение цепочки, но в ссылке переадресация с http на https и запускается TLS (это его логи в конце), затем https-соединение падает из-за того, что установлен cpSSL (хендшейк должен быть, вероятно, с иностранными алгоритмами, но отправляется ГОСТ).

Если cpSSL не нужен, то попробуйте в JRE/lib/security/java.security вернуть настройки так:
Цитата:

ssl.KeyManagerFactory.algorithm=SunX509
ssl.TrustManagerFactory.algorithm=PKIX

А эти две закомментировать #:
Цитата:

ssl.SocketFactory.provider=ru.CryptoPro.ssl.SSLSocketFactoryImpl
ssl.ServerSocketFactory.provider=ru.CryptoPro.ssl.SSLServerSocketFactoryImpl

Тогда даже после переадресации с http на https хендшейк должен быть успешным.
Offline imgen  
#3 Оставлено : 5 июня 2021 г. 13:51:51(UTC)
imgen

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

Группы: Участники
Зарегистрирован: 13.05.2021(UTC)
Сообщений: 17

К сожалению, совет не помог. Что бы еще предпринять?
Offline Евгений Афанасьев  
#4 Оставлено : 5 июня 2021 г. 14:28:09(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Включите логирование не только для SSLLogger, но и для JCPLogger с уровнем ALL, и приложите лог.
Offline imgen  
#5 Оставлено : 5 июня 2021 г. 21:15:55(UTC)
imgen

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

Группы: Участники
Зарегистрирован: 13.05.2021(UTC)
Сообщений: 17

К сожалению, форум не дает прикрепить полный лог. Вот на pastbin

Отредактировано пользователем 5 июня 2021 г. 21:22:52(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#6 Оставлено : 5 июня 2021 г. 23:25:07(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Строки:
Цитата:

ssl.SocketFactory.provider=ru.CryptoPro.ssl.SSLSocketFactoryImpl
ssl.ServerSocketFactory.provider=ru.CryptoPro.ssl.SSLServerSocketFactoryImpl

закомментировали так:
Цитата:

#ssl.SocketFactory.provider=ru.CryptoPro.ssl.SSLSocketFactoryImpl
#ssl.ServerSocketFactory.provider=ru.CryptoPro.ssl.SSLServerSocketFactoryImpl

или убрали совсем из java.security?
JTLS продолжает влиять.
Offline imgen  
#7 Оставлено : 6 июня 2021 г. 0:35:58(UTC)
imgen

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

Группы: Участники
Зарегистрирован: 13.05.2021(UTC)
Сообщений: 17

Действительно, не было закоментировано. Закомментировал и проверил, что
Цитата:

ssl.KeyManagerFactory.algorithm=SunX509
ssl.TrustManagerFactory.algorithm=PKIX


Однако не смотря на то, что проблем с рукопожатием теперь нет, путь построить не получается: https://pastebin.com/Y1XbgyQQ
Offline Евгений Афанасьев  
#8 Оставлено : 6 июня 2021 г. 13:28:50(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Корневой сертификат "Тестовый УЦ ООО "КРИПТО-ПРО"" службы штампов установлен в cacerts?
Offline imgen  
#9 Оставлено : 6 июня 2021 г. 21:29:43(UTC)
imgen

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

Группы: Участники
Зарегистрирован: 13.05.2021(UTC)
Сообщений: 17

Нет, не устанавливался. Как раз чтобы не обновлять сертификат хочется использовать онлайн загрузку.

Если добавить вручную в
List<X509Certificate> chain = Arrays.asList(new X509Certificate[]{(X509Certificate) testCert,cert});

получаю ошибку Private key does not match public key

При смене последовательности аргументов ворзвращаемся к 'PKIX failure: invalid parameters of certificate'
Offline Евгений Афанасьев  
#10 Оставлено : 6 июня 2021 г. 23:32:21(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Автор: imgen Перейти к цитате
Нет, не устанавливался. Как раз чтобы не обновлять сертификат хочется использовать онлайн загрузку.

Корневые обязательно должны быть установлены, иначе цепочка не построится. Загрузка из сети полезна в случае промежуточных сертификатов, но корневой должен быть в cacerts. В вашем случае, в cacerts должны быть 2 корневых: цепочки подписанта и цепочки службы штампов. Поэтому нужно добавить и разбираться со следующей ошибкой.

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