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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Тимур Шарипов  
#1 Оставлено : 11 июля 2024 г. 17:09:57(UTC)
Тимур Шарипов

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Добрый день.
Есть задача улучшить подписи CAdES-BES до CAdES-A, но есть нюанс, что в сертификатах этих подписей не указана ссылка на OCSP сервис. Поэтому, при улучшении мы получаем ошибку:
Цитата:
must have OCSP evidence but it doesn't contain any OCSP reference(s) or service(s) is(are) unavailable. OCSP evidence is not found

Судя по документации, в метод усовершенствовании (enhance) можно передать CRL, что мы и попробовали сделать:
Цитата:

X509CRL crl = (X509CRL) CertificateFactory.getInstance("X.509").generateCRL(new FileInputStream(Configuration.CRL_FILENAME));
List<X509CRL> crlList = Collections.singletonList(crl);
srcSigner = srcSigner.enhance(config.getProviderName(),
digestAlgOID,
chain,
crlList,
config.getTSAAddress(),
CAdESType.CAdES_A,
(AttributeTable)null);


Но ошибка не поменялась.

Вопросы:
1. Можно ли в этом случаем заменить OCSP на CRL? это работает?)
2. Какие варианта решения можете посоветовать?
Online Санчир Момолдаев  
#2 Оставлено : 11 июля 2024 г. 17:15:39(UTC)
Санчир Момолдаев

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

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,058
Российская Федерация

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 229 раз в 216 постах
Добрый день!

1. нельзя.
2. найти или сделать самостоятельно OCSP сервер и использовать его адрес при enhance
Техническую поддержку оказываем тут
Наша база знаний
Offline Тимур Шарипов  
#3 Оставлено : 11 июля 2024 г. 17:17:52(UTC)
Тимур Шарипов

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Автор: Санчир Момолдаев Перейти к цитате
Добрый день!

1. нельзя.
2. найти или сделать самостоятельно OCSP сервер и использовать его адрес при enhance


2. А как его туда передать? Есть пример?
Online Санчир Момолдаев  
#4 Оставлено : 11 июля 2024 г. 17:27:20(UTC)
Санчир Момолдаев

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

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,058
Российская Федерация

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 229 раз в 216 постах
нужна актуальная версия СКЗИ
https://www.cryptopro.ru...&m=145856#post145856
> JCP 2.0.45041 / 2.0.45042-A

Цитата:
cades: добавлена возможность настроить доверие сертификату сторонней OCSP службы (JCP-2184)
cades: добавлена возможность указать программно или в java-свойствах дополнительные адреса альтернативных источников доказательств - OCSP служб (JCP-2188)


соответственно нужно сеттать Options
Код:
    public static Options setSingleOcsp(Options options) {
        return options.setRevocationURLStrategy(
                new SingleRevocationURLStrategy() {
                    @Override
                    public RevocationURL get(ValidatingData validatingData) throws AdESException {
                        return new RevocationURL() {
                            @Override
                            public ConnectionParameters getConnectionParameters() {
                                return null;
                            }

                            @Override
                            public RevocationURLActionOnError onError(Throwable throwable) {
                                return null;
                            }

                            @Override
                            public String get() {
                                return OCSP;
                            }
                        };
                    }
                }
        );
    }

    public static Options setAuthorizedOCSPs(Options options, String[] thumbs) {
        return options.setRevocationPermissions(new RevocationPermission() {
            @Override
            public boolean isAuthorizedIssuer(ValidatingPermissionData validatingPermissionData) {
                X509Certificate cert = validatingPermissionData.getValidatingRevocationData().getCertificate();
                try {
                    MessageDigest digest = MessageDigest.getInstance("SHA-1");
                    digest.update(cert.getEncoded());
                    String thumb = bytesToHex(digest.digest());
                    boolean result = false;
                    for (String walk : thumbs)
                        if (thumb.equalsIgnoreCase(walk)) {
                            result = true;
                            break;
                        }
                    return result;

                } catch (NoSuchAlgorithmException | CertificateEncodingException e) {
                    throw new RuntimeException(e);
                }
            }
        });
    }

    public static Options setOcspList(Options options) {
        return options.setRevocationURLStrategy(new CollectionRevocationURLStrategy() {
            @Override
            public RevocationURLCollection get(ValidatingData validatingData) throws AdESException {
                return new RevocationURLCollection() {
                    @Override
                    public Collection<RevocationURL> get() {
                        return Collections.singleton(
                                new RevocationURL() {
                                    @Override
                                    public ConnectionParameters getConnectionParameters() {
                                        return null;
                                    }

                                    @Override
                                    public RevocationURLActionOnError onError(Throwable throwable) {
                                        return null;
                                    }

                                    @Override
                                    public String get() {
                                        return OCSP;
                                    }
                                }
                        );
                    }
                };
            }
        });
    }


javadoc https://docs.cryptopro.r...javadoc/CAdES/index.html

либо через проперти.
Код:
System.setProperty("ru.CryptoPro.AdES.ocsp.responderURL", "http://.../ocsp.srf");
System.setProperty("ru.CryptoPro.AdES.ocsp.responderCertIssuerName", "CN = CadesTest PKI 2012 Root,OU = Cades Testing,O = OOO Crypto-Pro,C = RU");

их же можно задать через -D
но приоритет тут у AIA. т.е. через проперти будет медленнее.
через код более гибкая настройка

Отредактировано пользователем 11 июля 2024 г. 17:36:15(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
Тимур Шарипов оставлено 12.07.2024(UTC)
Offline Тимур Шарипов  
#5 Оставлено : 18 июля 2024 г. 15:43:44(UTC)
Тимур Шарипов

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Здравствуйте,
подскажите, если идти по пути настройки через Options, правильно ли я понимаю, что:

  • параметр OCSP == responderUR (указывается URL OCSP)
  • параметр String[] thumbs== responderCertIssuerName(указывается сертификат)?

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