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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline core.nod  
#1 Оставлено : 3 марта 2025 г. 15:28:31(UTC)
core.nod

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

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

Сказал(а) «Спасибо»: 6 раз
Добрый день, коллеги.


пароль заведомо верный.

В чем может быть проблема?

в коде нашел метод getCertificateHash который не проходит проверку на null:

Цитата:

privateCertHash = CryptoLayer.getInstance().getCertificateHash(keystore, certName, String.valueOf(keystorePassword));
log.info("privateCertHash = " + privateCertHash);
if (privateCertHash == null) {
resultDTO.setSignature("@error введен неверный контейнер или пароль!");
return resultDTO;


То есть один из параметров null (keystore, certName, String.valueOf(keystorePassword))

Что проверить и в какую сторону копать?

Помогите пожалуйста..


Версия стенда

jcp-2.0.40035
Java 1.8.291
Linux Debian

Отредактировано пользователем 3 марта 2025 г. 15:29:22(UTC)  | Причина: Не указана

Offline Санчир Момолдаев  
#2 Оставлено : 4 марта 2025 г. 10:59:12(UTC)
Санчир Момолдаев

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

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

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

а что в коде getCertificateHash() ?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
core.nod оставлено 04.03.2025(UTC)
Offline core.nod  
#3 Оставлено : 4 марта 2025 г. 11:46:23(UTC)
core.nod

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

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

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

а что в коде getCertificateHash() ?



Добрый день,


это абстрактный метод класса CryptoLayer
public abstract String getCertificateHash(String var1, String var2, String var3);


Переопределен в классе public class WindowsCryproAPILayer extends CryptoLayer

Цитата:
public String getCertificateHash(final String keyStorePath, String keyAlias, String password) {
return (String)AccessController.doPrivileged(new PrivilegedAction<String>() {
public String run() {
try {
X509Certificate cert;
if (SystemUtils.IS_OS_UNIX) {
System.out.println("Storepath++++" + keyStorePath);
CryptoAPISignatureLinux criptoAPISignaturex = new CryptoAPISignatureLinux(WindowsCryproAPILayer.this.getIntLayaerParam("PROVIDER_TYPE"), false);
cert = criptoAPISignaturex.getCertificate(keyStorePath);
return WindowsCryproAPILayer.this.getCertDigestString(cert);
} else {
CriptoAPISignature criptoAPISignature = new CriptoAPISignature(WindowsCryproAPILayer.this.getIntLayaerParam("PROVIDER_TYPE"), false);
cert = criptoAPISignature.getCertificate(keyStorePath);
return WindowsCryproAPILayer.this.getCertDigestString(cert);
}
} catch (Exception var3) {
var3.printStackTrace();
return null;
}
}
});
}


и в классе public class JCPCryptoLayer extends CryptoLayer {


Цитата:
public String getCertificateHash(String keyStorePath, String keyAlias, String password) {
String retVal = null;
String err = null;
Key key = null;
byte[] signature = null;
X509Certificate cert = null;
final char[] passwordChr = password.length() > 0 ? password.toCharArray() : null;
final String storePath = keyStorePath;

try {
if (this.checkProvider()) {
System.out.println("Getting Certificate hash...");
final KeyStore ks = KeyStore.getInstance(this.getLayerParam("KEYSTORE_TYPE"));
Boolean result = (Boolean)AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
public Boolean run() {
try {
FileInputStream keyStoreStream = null;
if (!JCPCryptoLayer.this.isHideContainerField()) {
keyStoreStream = new FileInputStream(storePath);
}

ks.load(keyStoreStream, passwordChr);
return true;
} catch (Exception var2) {
var2.printStackTrace();
return false;
}
}
});
cert = (X509Certificate)ks.getCertificate(this.getKeyAlias(ks));
retVal = this.getCertDigestString(cert);
} else {
System.out.println("JCP doesn't work!");
}

return retVal;
} catch (Throwable var16) {
var16.printStackTrace();
return retVal;
} finally {
;
}
}



тут нужно уточнить что код не мой. я декомпилировал jar и пытаюсь разобраться по каким путям происходит поиск хранилищ..

есть информация (не подтвержденная) что раньше подписание с этим jar происходило корректно на alt linux..
Offline Санчир Момолдаев  
#4 Оставлено : 4 марта 2025 г. 11:50:07(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 101 раз
Поблагодарили: 291 раз в 271 постах
приведите тогда полный стектрейс.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
core.nod оставлено 04.03.2025(UTC)
Offline core.nod  
#5 Оставлено : 4 марта 2025 г. 12:29:32(UTC)
core.nod

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

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

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


К сожалению нет возможности. Стенд в зоне заказчика. Удаленного доступа тоже нет.

Скорее всего будет еще выезд на их территорию. может подскажите какие логи собрать для более детальной диагностики проблемы..

и еще у коллеги мелькала ошибка из следующего условия:

Цитата:

} else if (!privateCertHash.equals(certHash)) {
resultDTO.setSignature("@error Выбранный ключ не соответствует сертификату пользователя!");
return resultDTO;


То есть была успешная попытка пройти null из первого условия..

Короче темный лес..
Offline Санчир Момолдаев  
#6 Оставлено : 4 марта 2025 г. 12:57:48(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 101 раз
Поблагодарили: 291 раз в 271 постах
ну без вывода и того как работает код вообще непонятно.
названия методов и текст тоже вводят в заблуждения.

откройте обращение на портале тп https://support.cryptopro.ru и в рамках него передавайте логи и другую необходимую информацию
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
core.nod оставлено 04.03.2025(UTC)
Offline core.nod  
#7 Оставлено : 4 марта 2025 г. 13:03:51(UTC)
core.nod

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: Санчир Момолдаев Перейти к цитате
ну без вывода и того как работает код вообще непонятно.
названия методов и текст тоже вводят в заблуждения.

откройте обращение на портале тп https://support.cryptopro.ru и в рамках него передавайте логи и другую необходимую информацию


Еще последний вопрос..

во вложении скрин еще с одной ошибкой. что кажется может влиять на успех подписи.. однако с этим же USB-токеном на винде работает..

может быть проблема в этом?

error.jpg (13kb) загружен 7 раз(а).

Offline Санчир Момолдаев  
#8 Оставлено : 4 марта 2025 г. 13:08:33(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 101 раз
Поблагодарили: 291 раз в 271 постах
это влияет на подпись.
если срок ЗК истек подписать в нормальных условиях нельзя.

а на винде может отключили проверку в разрез требованиям документации на СКЗИ
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
core.nod оставлено 04.03.2025(UTC)
Offline core.nod  
#9 Оставлено : 4 марта 2025 г. 13:23:59(UTC)
core.nod

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: Санчир Момолдаев Перейти к цитате
это влияет на подпись.
если срок ЗК истек подписать в нормальных условиях нельзя.

а на винде может отключили проверку в разрез требованиям документации на СКЗИ


Отлично!

А скажите пожалуйста эту проверку на линукс можно отключить сугубо для тестирования?
Offline Санчир Момолдаев  
#10 Оставлено : 4 марта 2025 г. 14:09:32(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 101 раз
Поблагодарили: 291 раз в 271 постах
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
core.nod оставлено 04.03.2025(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.