Skip to content

🚃🚓🚒 Клиент для подключению к CryptoPro УЦ по двухстороннему ГОСТ TLS

Notifications You must be signed in to change notification settings

funcid/gost-tls

Repository files navigation

Описание

В рамках этого репозитория реализован пример обращения к удостоверяющему центру (УЦ) CryptoPro по двухстороннему ГОСТ TLS соединению. Код написан на языке Kotlin под JVM 17. Используется криптопровайдер CryptoPro CSP 5.0.13000

ГОСТ TLS это российский стандарт шифрования, разработанный для обеспечения безопасности интернет-соединений. Он основан на международном стандарте TLS (Transport Layer Security), но использует российские криптографические алгоритмы, такие как ГОСТ 28147-89 и ГОСТ Р 34.10-2012. ГОСТ TLS обеспечивает конфиденциальность, целостность и аутентификацию данных, передаваемых по сети, и используется в различных областях, включая электронное правительство, банковскую сферу и другие секторы, где требуется высокий уровень защиты информации.
CryptoPro Удостоверяющий Центр это ключевой компонент инфраструктуры открытых ключей (PKI), предоставляющий услуги по выпуску и управлению цифровыми сертификатами. УЦ КриптоПро обеспечивает создание и проверку электронной подписи, подтверждает подлинность пользователей и защищает целостность данных. Он используется в различных сферах, где требуется юридически значимый электронный документооборот, включая государственные органы, коммерческие организации и частных лиц. КриптоПро УЦ поддерживает российские криптографические стандарты, такие как ГОСТ Р 34.10-2012, и интегрируется с различными программными продуктами для работы с электронной подписью.
CryptoPro JCP это программный компонент, предоставляющий Java-приложениям доступ к российским криптографическим алгоритмам. Он позволяет разработчикам интегрировать функции шифрования, электронной подписи и хэширования в свои Java-приложения, используя стандарты ГОСТ. КриптоПро JCP совместим с различными операционными системами и аппаратными платформами, что обеспечивает кроссплатформенную поддержку криптографических функций.

Подготовка среды

  1. Нужно установить набор библиотек в папку ./libs из CryptoPro JCSP с официального сайта (часто версии несовместимы с CSP)
  2. Установить корневой сертификат УЦ в CryptoPro CSP "Сертификаты > Доверенные корневые центры сертификации"
  3. Установить клиентский сертификат в CryptoPro CSP "Сертификаты > Личное"
  4. Экспортировать ключи в CryptoPro CSP "Сертификаты > Личное > {Выбрать нужный сертификат}" > Экспортировать ключи (в формате .PFX, с цепочкой сертификатов)
  5. Указать в src/main/resources/gost-tls-client.properties правильный путь к .pfx, указанный ранее пароль и url для вызова в УЦ

Отладка

Иногда не получается подключиться к УЦ, возможные причины:

  1. Сертификаты зашифрованы другим алгоритмом
  2. Несовместимость версий CryptoPro JCSP и CSP
  3. Несовместимость версий CryptoPro JCSP и JVM
  4. JCP добавляется в Security Providers до JCSP
  5. Параметр com.sun.security.enableCRLDP в состоянии false

Чтобы упростить отладку, рекомендую зайти в один из файлов JRE, отвечающий за логирование и выставить значение ALL для логгеров при помощи команды.

echo \
"java.util.logging.ConsoleHandler.level=ALL
ru.CryptoPro.JCP.tools.JCPLogger.level=ALL
ru.CryptoPro.JCSP.JCSPLogger.level=ALL
ru.CryptoPro.JCSP.CAPILogger.level=ALL" \
>> $JAVA_HOME/conf/logging.properties

About

🚃🚓🚒 Клиент для подключению к CryptoPro УЦ по двухстороннему ГОСТ TLS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages