Статус: Новичок
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,225  Сказал(а) «Спасибо»: 101 раз Поблагодарили: 291 раз в 271 постах
|
Добрый день!
а что в коде getCertificateHash() ? |
|
 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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..
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,225  Сказал(а) «Спасибо»: 101 раз Поблагодарили: 291 раз в 271 постах
|
приведите тогда полный стектрейс. |
|
 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 17.02.2025(UTC) Сообщений: 7  Откуда: Москва Сказал(а) «Спасибо»: 6 раз
|
Автор: Санчир Момолдаев  приведите тогда полный стектрейс. К сожалению нет возможности. Стенд в зоне заказчика. Удаленного доступа тоже нет. Скорее всего будет еще выезд на их территорию. может подскажите какие логи собрать для более детальной диагностики проблемы.. и еще у коллеги мелькала ошибка из следующего условия: Цитата: } else if (!privateCertHash.equals(certHash)) { resultDTO.setSignature("@error Выбранный ключ не соответствует сертификату пользователя!"); return resultDTO;
То есть была успешная попытка пройти null из первого условия.. Короче темный лес..
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,225  Сказал(а) «Спасибо»: 101 раз Поблагодарили: 291 раз в 271 постах
|
ну без вывода и того как работает код вообще непонятно. названия методов и текст тоже вводят в заблуждения. откройте обращение на портале тп https://support.cryptopro.ru и в рамках него передавайте логи и другую необходимую информацию |
|
 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 17.02.2025(UTC) Сообщений: 7  Откуда: Москва Сказал(а) «Спасибо»: 6 раз
|
Автор: Санчир Момолдаев  ну без вывода и того как работает код вообще непонятно. названия методов и текст тоже вводят в заблуждения. откройте обращение на портале тп https://support.cryptopro.ru и в рамках него передавайте логи и другую необходимую информацию Еще последний вопрос.. во вложении скрин еще с одной ошибкой. что кажется может влиять на успех подписи.. однако с этим же USB-токеном на винде работает.. может быть проблема в этом?  error.jpg (13kb) загружен 7 раз(а).
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,225  Сказал(а) «Спасибо»: 101 раз Поблагодарили: 291 раз в 271 постах
|
это влияет на подпись. если срок ЗК истек подписать в нормальных условиях нельзя.
а на винде может отключили проверку в разрез требованиям документации на СКЗИ |
|
 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 17.02.2025(UTC) Сообщений: 7  Откуда: Москва Сказал(а) «Спасибо»: 6 раз
|
Автор: Санчир Момолдаев  это влияет на подпись. если срок ЗК истек подписать в нормальных условиях нельзя.
а на винде может отключили проверку в разрез требованиям документации на СКЗИ Отлично! А скажите пожалуйста эту проверку на линукс можно отключить сугубо для тестирования?
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,225  Сказал(а) «Спасибо»: 101 раз Поблагодарили: 291 раз в 271 постах
|
|
|
 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close