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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Алексей Кирковский  
#1 Оставлено : 2 декабря 2020 г. 9:47:15(UTC)
Алексей Кирковский

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

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

Добрый день,

Использую JCP для создания цифровой подписи и получаю следующую ошибку :

Цитата:
class org.bouncycastle.jcajce.provider.asymmetric.ecgost12.BCECGOST3410_2012PublicKey cannot be cast to class ru.CryptoPro.JCP.Key.InternalGostPublicKey (org.bouncycastle.jcajce.provider.asymmetric.ecgost12.BCECGOST3410_2012PublicKey and ru.CryptoPro.JCP.Key.InternalGostPublicKey are in unnamed module of loader 'app'); error codes: [-2] 'Application error'
at ru.CryptoPro.JCP.Key.PrivateKeySpec.match(Unknown Source)
at ru.CryptoPro.AdES.tools.AdESUtility.ifPrivateKeyAndMatchesCertificate(Unknown Source)
at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)


Такая ошибка возникает и на сервере клиента, и на тестовом, который только что создал с нуля.

Окружение : CentOS 7, jcp-2.0.40450-A, OpenJDK 11.0.9.

Точно такая же проблема у меня была локально при разработке под Windows 7 и AdoptOpenJDK 11.0.8, но в какой-то момент она просто исчезла, и я не успел выяснить причину. Но CentOS 7 возникает постоянно.

Вот весь кусок кода, которым пытаюсь подписывать :
Код:

import com.google.common.base.Throwables;
import org.bouncycastle.cert.X509CertificateHolder;
import org.bouncycastle.util.CollectionStore;
import ru.CryptoPro.CAdES.CAdESSignature;
import ru.CryptoPro.CAdES.CAdESType;
import ru.CryptoPro.CAdES.exception.CAdESException;
import ru.CryptoPro.Crypto.CryptoProvider;
import ru.CryptoPro.JCP.JCP;
import ru.CryptoPro.reprov.RevCheck;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.*;
import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.util.*;

public class CryptoPro {

    static {
        Security.addProvider(new JCP()); // провайдер JCP
        Security.addProvider(new RevCheck());
        Security.addProvider(new CryptoProvider());// провайдер шифрования JCryptoP

        System.setProperty("com.sun.security.enableCRLDP", "true");
        System.setProperty("ocsp.enable", "true");
    }

    public static PrivateKey loadConfiguration(String storeType, String storeFile,
                                               char[] storePassword, String alias, char[] password,
                                               List<Certificate> certs,
                                               List<X509CertificateHolder> chain) throws KeyStoreException, NoSuchAlgorithmException, CertificateException,
            IOException, UnrecoverableKeyException {

        KeyStore keyStore = KeyStore.getInstance(storeType);
        keyStore.load(storeFile == null || storeFile.isEmpty() ? null : new FileInputStream(storeFile),
                storePassword);

        PrivateKey privateKey =
                (PrivateKey) keyStore.getKey(alias, password);

        // Получаем цепочку сертификатов.
        certs.addAll(Arrays.asList(keyStore.getCertificateChain(alias)));

        certs.forEach(cert -> {
            try {
                chain.add(new X509CertificateHolder(cert.getEncoded()));
            } catch (IOException | CertificateEncodingException e) {
                throw Throwables.propagate(e);
            }
        });

        return privateKey;
    }

    public static byte[] sign(byte[] data, boolean detached, String storeFile, char[] storePassword, String alias, char[] password) {
        try {
            List<Certificate> certs = new ArrayList<Certificate>();
            List<X509CertificateHolder> chain = new ArrayList<X509CertificateHolder>();
            PrivateKey privateKey = loadConfiguration(JCP.HD_STORE_NAME, storeFile, storePassword, alias, password, certs, chain);

            ByteArrayOutputStream out = new ByteArrayOutputStream();

            CAdESSignature signature = new CAdESSignature(detached);
            signature.setCertificateStore(new CollectionStore(chain));

            signature.addSigner(JCP.PROVIDER_NAME,
                    null,
                    null,
                    privateKey,
                    certs,
                    CAdESType.CAdES_BES,
                    null,
                    false,
                    null,
                    null);
            signature.open(out);
            signature.update(data);
            signature.close();
            return out.toByteArray();

        } catch (IOException | CertificateException | NoSuchAlgorithmException | UnrecoverableKeyException | CAdESException | KeyStoreException e) {
            throw Throwables.propagate(e);
        }
    }
}


Подскажите, пожалуйста, в какую сторону смотреть.

Отредактировано пользователем 2 декабря 2020 г. 12:30:59(UTC)  | Причина: Не указана

Offline Алексей Кирковский  
#2 Оставлено : 2 декабря 2020 г. 12:27:04(UTC)
Алексей Кирковский

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

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

Вот еще, кстати log, который выдает JCP при включенном логировании на уровне FINE

Цитата:
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:06 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.DigestParamsSpec_class_default=null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:06 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.DigestParamsSpec_2012_256_class_default=null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:06 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.DigestParamsSpec_2012_512_class_default=null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:06 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.AlgIdSpec_class_default=null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:06 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.AlgIdSpec_class_defaultDH=null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:06 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.AlgIdSpec_2012_256_class_default=null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:06 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.AlgIdSpec_2012_256_dh_class_defaultDH=null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:06 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.AlgIdSpec_2012_512_class_default=null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:06 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.AlgIdSpec_2012_512_dh_class_defaultDH=null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:06 Test java: FINE: Reader name is null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:06 Test java: FINE: RutokenStore (000) loaded. Store name null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:06 Test java: FINE: Reader name is null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:06 Test java: FINE: RutokenStore (001) loaded. Store name null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:06 Test java: FINE: Reader name is null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:06 Test java: FINE: RutokenStore (002) loaded. Store name null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:06 Test java: FINE: Reader name is null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:06 Test java: FINE: RutokenStore (003) loaded. Store name null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:06 Test java: FINE: Reader name is null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:06 Test java: FINE: RutokenStore (004) loaded. Store name null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:06 Test java: FINE: Reader name is null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:06 Test java: FINE: RutokenStore (005) loaded. Store name null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:06 Test java: FINE: Reader name is null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:06 Test java: FINE: RutokenStore (006) loaded. Store name null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:06 Test java: FINE: Reader name is null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:06 Test java: FINE: RutokenStore (007) loaded. Store name null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:06 Test java: FINE: Reader name is null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:06 Test java: FINE: RutokenStore (008) loaded. Store name null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:06 Test java: FINE: Reader name is null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:06 Test java: FINE: RutokenStore (009) loaded. Store name null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester <init>
Dec 2 10:23:06 Test java: FINE: SelfTester ctor.
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester a
Dec 2 10:23:06 Test java: FINE: SelfTester() Java CSP: null
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.pref.JCPPref getBoolean
Dec 2 10:23:06 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/Util.keytool_compat_class_default=false
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.pref.JCPPref getBoolean
Dec 2 10:23:06 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/Util.use_cert_stub_class_default=false
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester a
Dec 2 10:23:06 Test java: FINE: SelfTester() addJcpTests: true
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SUN
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunRsaSign
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunEC
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunJSSE
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunJCE
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunJGSS
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunSASL
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: XMLDSig
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunPCSC
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: JdkLDAP
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: JdkSASL
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunPKCS11
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: BC
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester add provider class: class ru.CryptoPro.JCP.JCP
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: RevCheck
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester add provider class: class ru.CryptoPro.Crypto.CryptoProvider
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester b
Dec 2 10:23:06 Test java: FINE: SelfTester parameter: 2
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester b
Dec 2 10:23:06 Test java: FINE: Get class url for name: ru.CryptoPro.JCP.JCP
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester b
Dec 2 10:23:06 Test java: FINE: file:/usr/share/jcp-2.0.40450-A/JCP.jar added to SelfTester
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester b
Dec 2 10:23:06 Test java: FINE: Get class url for name: ru.CryptoPro.Crypto.CryptoProvider
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester b
Dec 2 10:23:06 Test java: FINE: file:/usr/share/jcp-2.0.40450-A/JCryptoP.jar added to SelfTester
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester <init>
Dec 2 10:23:06 Test java: FINE: SelfTester ctor OK.
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester c
Dec 2 10:23:06 Test java: FINE: Start tester thread
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester checkClass
Dec 2 10:23:06 Test java: FINE: [pool-9-System.interpreter-pausable-daemon-1] class: ru.CryptoPro.JCP.KeyStore.JCPKeyStore, URL: file:/usr/share/jcp-2.0.40450-A/JCP.jar
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester checkClass
Dec 2 10:23:06 Test java: FINE: [pool-9-System.interpreter-pausable-daemon-1] reinitialize jar list
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SUN
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunRsaSign
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunEC
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunJSSE
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunJCE
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunJGSS
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunSASL
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: XMLDSig
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunPCSC
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: JdkLDAP
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: JdkSASL
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: SunPKCS11
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: BC
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester add provider class: class ru.CryptoPro.JCP.JCP
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: RevCheck
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester e
Dec 2 10:23:06 Test java: FINE: SelfTester add provider class: class ru.CryptoPro.Crypto.CryptoProvider
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester b
Dec 2 10:23:06 Test java: FINE: SelfTester parameter: 2
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester b
Dec 2 10:23:06 Test java: FINE: Get class url for name: ru.CryptoPro.JCP.JCP
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester b
Dec 2 10:23:06 Test java: FINE: file:/usr/share/jcp-2.0.40450-A/JCP.jar already added to SelfTester
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester b
Dec 2 10:23:06 Test java: FINE: Get class url for name: ru.CryptoPro.Crypto.CryptoProvider
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester b
Dec 2 10:23:06 Test java: FINE: file:/usr/share/jcp-2.0.40450-A/JCryptoP.jar already added to SelfTester
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester a
Dec 2 10:23:06 Test java: FINE: [pool-9-System.interpreter-pausable-daemon-1] check URL: file:/usr/share/jcp-2.0.40450-A/JCP.jar
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.TestVerifyClassJar run
Dec 2 10:23:06 Test java: FINE: file:/usr/share/jcp-2.0.40450-A/JCP.jar is being checked...
Dec 2 10:23:06 Test java: дек. 02, 2020 12:23:06 PM ru.CryptoPro.JCP.tools.SelfTester run
Dec 2 10:23:06 Test java: FINE: SelfTester run.
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (000) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (001) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (002) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (003) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (004) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (005) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (006) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (007) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (008) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (009) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref getBoolean
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/tools/Control.StrengthenedKeyUsageControl=false
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.EllipticParamsSpecDH_class_defaultDH=null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.EllipticParamsSpecDH_2012_256_class_defaultDH=null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.EllipticParamsSpec_class_defaultECC=null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.EllipticParamsSpec_2012_256_class_defaultECC=null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.CryptParamsSpec_class_default=null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.CryptParamsSpec_2012_256_class_default=null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.CryptParamsSpec_2012_512_class_default=null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.EllipticParamsSpecDH2012_512_class_defaultECC2012=null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref getOID
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/params.EllipticParamsSpec2012_512_class_defaultECC2012=null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.tools.TestVerifyClassJar run
Dec 2 10:23:07 Test java: FINE: file:/usr/share/jcp-2.0.40450-A/JCP.jar has been successfully checked.
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.tools.Starter check
Dec 2 10:23:07 Test java: INFO: Loading JCP 2.0.40450-A
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref getBoolean
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/Random.CertifiedRandom_class_RequirePhysical=true
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref get
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/tools.UnixMutex_class_pathToLocks=/var/opt/cprocsp/tmp
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref getInt
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/tools/CPVerify.DigestStoreDefaultCPVerify_class_WhatRepositoryKeyName=-1
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref getInt
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/tools/CPVerify.DigestStoreDefaultCPVerify_class_WhatRepositoryKeyName=-1
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.tools.Starter check
Dec 2 10:23:07 Test java: INFO: JCP loaded.
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.pref.JCPPref get
Dec 2 10:23:07 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/KeyStore/HDImage.HDImageStore_class_default=/var/opt/cprocsp/keys/${user.name}
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.tools.TestVerifyClassJar run
Dec 2 10:23:07 Test java: FINE: file:/usr/share/jcp-2.0.40450-A/JCryptoP.jar is being checked...
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (000) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (001) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (002) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (003) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (004) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (005) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (006) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (007) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (008) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenReader <init>
Dec 2 10:23:07 Test java: FINE: Reader name is null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.KeyStore.Rutoken.RutokenStore <init>
Dec 2 10:23:07 Test java: FINE: RutokenStore (009) loaded. Store name null
Dec 2 10:23:07 Test java: дек. 02, 2020 12:23:07 PM ru.CryptoPro.JCP.tools.TestVerifyClassJar run
Dec 2 10:23:07 Test java: FINE: file:/usr/share/jcp-2.0.40450-A/JCryptoP.jar has been successfully checked.
Dec 2 10:23:08 Test java: дек. 02, 2020 12:23:08 PM ru.CryptoPro.JCP.pref.JCPPref getBoolean
Dec 2 10:23:08 Test java: CONFIG: User Preference Node: /ru/CryptoPro/JCP/Key.InternalGostPrivateKey_class_default=true
Dec 2 10:23:08 Test java: дек. 02, 2020 12:23:08 PM ru.CryptoPro.JCP.Key.PrivateKeySpec a
Dec 2 10:23:08 Test java: FINE: Private key usage period validation mode: 255
Dec 2 10:23:08 Test java: дек. 02, 2020 12:23:08 PM ru.CryptoPro.JCP.Key.PrivateKeySpec a
Dec 2 10:23:08 Test java: FINE: Private key usage period extension found in container.
Dec 2 10:23:08 Test java: дек. 02, 2020 12:23:08 PM ru.CryptoPro.JCP.Key.PrivateKeySpec a
Dec 2 10:23:08 Test java: FINE: Private key usage period extension found in certificate.
Dec 2 10:23:08 Test java: дек. 02, 2020 12:23:08 PM ru.CryptoPro.CAdES.cl_1 <clinit>
Dec 2 10:23:08 Test java: FINE: %%% Initializing of CAdES context %%%
Dec 2 10:23:08 Test java: дек. 02, 2020 12:23:08 PM ru.CryptoPro.CAdES.tools.CAdESUtility initJCPAlgorithms
Dec 2 10:23:08 Test java: INFO: Replacement of the BouncyCastle GOST algorithms.
Dec 2 10:23:08 Test java: дек. 02, 2020 12:23:08 PM ru.CryptoPro.CAdES.cl_1 setCertificateStore
Dec 2 10:23:08 Test java: FINE: Add a certificate store.
Dec 2 10:23:08 Test java: дек. 02, 2020 12:23:08 PM ru.CryptoPro.CAdES.cl_1 addSigner
Dec 2 10:23:08 Test java: FINE: %%% Adding a new signer... %%%
Dec 2 10:23:08 Test java: дек. 02, 2020 12:23:08 PM ru.CryptoPro.JCP.pref.JCPPref getLong
Dec 2 10:23:08 Test java: CONFIG: User Preference Node: /ru/CryptoPro/AdES.AdESConfigParameters_desync_class_default=-1


И вот еще сертификат, на всякий случай : testcer.zip (2kb) загружен 1 раз(а).

Отредактировано пользователем 2 декабря 2020 г. 15:03:19(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#3 Оставлено : 2 декабря 2020 г. 16:52:54(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Здравствуйте.
У вас BC установлен в java.security или программно выше JCP:
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: BC
Он поддерживает ГОСТ 2012 и, находясь выше JCP, перехватывает декодирование открытого ключа и превращает его в BCECGOST3410_2012PublicKey:
Автор: Алексей Кирковский Перейти к цитате
class org.bouncycastle.jcajce.provider.asymmetric.ecgost12.BCECGOST3410_2012PublicKey cannot be cast to class ru.CryptoPro.JCP.Key.InternalGostPublicKey

Отредактировано пользователем 2 декабря 2020 г. 17:07:02(UTC)  | Причина: Не указана

Offline Алексей Кирковский  
#4 Оставлено : 2 декабря 2020 г. 17:50:43(UTC)
Алексей Кирковский

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

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

Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте.
У вас BC установлен в java.security или программно выше JCP:
Dec 2 10:23:06 Test java: FINE: SelfTester ignore: BC
Он поддерживает ГОСТ 2012 и, находясь выше JCP, перехватывает декодирование открытого ключа и превращает его в BCECGOST3410_2012PublicKey:
Автор: Алексей Кирковский Перейти к цитате
class org.bouncycastle.jcajce.provider.asymmetric.ecgost12.BCECGOST3410_2012PublicKey cannot be cast to class ru.CryptoPro.JCP.Key.InternalGostPublicKey


Спасибо.

Поменял инициализацию провайдеров, чтобы всегда добавляло JCP в самое начало и заработало :

Код:

Security.insertProviderAt(new JCP(), 1); // провайдер JCP
Security.insertProviderAt(new RevCheck(), 2);
Security.insertProviderAt(new CryptoProvider(), 3);// провайдер шифрования JCryptoP


Кстати, судя по коду, ряд библиотек часто добавляют BC в провайдеры при своей инициализации (в частности, POI может), поэтому добавлять через addProvider может приводить к таким ошибкам. Возможно стоило в документации заменить на insertProviderAt, чтобы гарантированно добавлять в начало (хотя возможно это не всегда правильно).

Отредактировано пользователем 2 декабря 2020 г. 17:51:13(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#5 Оставлено : 2 декабря 2020 г. 19:01:14(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Пожалуй, лучше использовать addProvider вместо insertProviderAt. У вас BC, как я понимаю, прописан в java.security, можно убрать его оттуда и добавить программно после всех:
Код:

Security.addProvider(new JCP()); // провайдер JCP
Security.addProvider(new RevCheck());
Security.addProvider(new CryptoProvider()); // провайдер шифрования JCryptoP
Security.addProvider(new BouncyCastleProvider()); // <--

Да, сторонние библиотеки часто добавляют BC и не только его, но обычно с помощью addProvider, то есть в конец списка.

Отредактировано пользователем 2 декабря 2020 г. 19:01:58(UTC)  | Причина: Не указана

Offline Алексей Кирковский  
#6 Оставлено : 2 декабря 2020 г. 21:13:24(UTC)
Алексей Кирковский

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

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

Автор: Евгений Афанасьев Перейти к цитате

Да, сторонние библиотеки часто добавляют BC и не только его, но обычно с помощью addProvider, то есть в конец списка.


Так в том и проблема, что какая-то библиотека (причем не так легко определить какая) добавляет BC в конец списка при инициализации, а лишь потом добавляется JCP. Если пользоваться addProvider, то придется заботится, чтобы JCP инициировался гарантированно раньше, а с архитектурной точки зрения это не всегда легко сделать.

Offline Евгений Афанасьев  
#7 Оставлено : 2 декабря 2020 г. 21:33:51(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Обычной кажется ситуация, когда в самом начале вы добавляете провайдеры в нужном порядке, а затем другие библиотеки, по мере инициализации, добавят свои провайдеры, если потребуется. В вашем случае, как кажется по логам, проблема в том, что в файле java.security зафиксирован BC.
Offline Алексей Кирковский  
#8 Оставлено : 3 декабря 2020 г. 8:46:44(UTC)
Алексей Кирковский

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

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

Автор: Евгений Афанасьев Перейти к цитате
Обычной кажется ситуация, когда в самом начале вы добавляете провайдеры в нужном порядке, а затем другие библиотеки, по мере инициализации, добавят свои провайдеры, если потребуется. В вашем случае, как кажется по логам, проблема в том, что в файле java.security зафиксирован BC.


В том то и дело, что его в java.security нет. Это одна из используемых библиотек делает в явную Security.addProvider (BC).

Добавлять в фиксированном порядке не всегда просто, так как для этого нужно создать явную/неявную зависимость между логически независимыми библиотеками (например, POI и JCP), что не очень хорошо с архитектурной точки зрения. Но любое решение будет не очень "чистым". Просто я, к сожалению, не увидел этого в документации, что важно, чтобы JCP был раньше BC.
Offline Алексей Кирковский  
#9 Оставлено : 3 декабря 2020 г. 9:39:04(UTC)
Алексей Кирковский

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

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

В общем в начало добавлять JCP тоже не вариант. Выдает ошибку : error codes: [33] 'PKIX failure: invalid parameters of certificate'

Пришлось сделать вот такой код, только тогда заработало (так приходится делать при условии, если не контролируется последовательность загрузки провайдеров) :
Код:

        int bcindex = Providers.getFullProviderList().getIndex("BC");
        if (bcindex == -1) {
            Security.addProvider(new JCP());
            Security.addProvider(new RevCheck());
            Security.addProvider(new CryptoProvider());
        } else {
            Security.insertProviderAt(new JCP(), bcindex + 1);
            Security.insertProviderAt(new RevCheck(), bcindex + 2);
            Security.insertProviderAt(new CryptoProvider(), bcindex + 3);
        }
Offline Алексей Кирковский  
#10 Оставлено : 4 декабря 2020 г. 11:01:59(UTC)
Алексей Кирковский

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

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

Все-таки не ушла проблема (с PKIX failure) и у меня уже закончились идеи куда смотреть. Напомню, что тот же самый код у меня работает в среде разработки под Windows, но на CentOS'е возникает проблема с подписанием.

В cacerts Тестовый головной сертификат добавлен. При попытке подписи указанным выше кодом возникает вот ошибка sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Прикладываю выгрузку cacerts в txt (keystore -list v), messages со включенным логированием на ALL (и там же часть стэктрейса), и цепочкой сертификатов которая в хранилище ключей (могу и сам ключ при необходимости закинуть - он тестовый). Других cacerts нет на сервере - проверял через "find / -name cacerts".

Вот последовательность провайдеров после инициализации : [SUN, SunRsaSign, SunEC, SunJSSE, SunJCE, SunJGSS, SunSASL, XMLDSig, SunPCSC, JdkLDAP, JdkSASL, SunPKCS11, JCP, RevCheck, Crypto, BC]

Что еще можно попробовать проверить ?

info.zip (45kb) загружен 4 раз(а).

Отредактировано пользователем 4 декабря 2020 г. 11:03:23(UTC)  | Причина: Не указана

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