Включение нативной поддержки TLS/SSL


* Для запуска приложения с нативной поддержкой TLS/SSL протокола шифрования, потребуется утилита keytool поставляемая вместе с openjdk. * Если при установке JDK/JVM утилита keytool не была установлена, её потребуется установить отдельно. * Так же необходимо установить утилиту openssl, для работы с сертификатами. * Для самозаверенных сертификатов, потребуется дополнительно установить корневой сертификат центра сертификации.

1. С помощью утилиты openssl из ваших пары Сертификат/Приватный ключ, необходимо создать специальное хранилище ключей для jvm и поместить в него информацию о сертификате.
* После ввода команды, необходимо будет задать пароль для хранилища ключей. Запомните его, он потребуется далее!
* Для конвертации форматов сертификата отличных от PEM, воспользуйтесь справкой по утилите openssl

openssl pkcs12 -export -name <alias> -in <cert.crt> -inkey <cert.key> -out <keystore.p12>
Параметр Значение
pkcs12 Тип хранилища ключей jvm.
Рекомендуется использовать pkcs12
<alias> Псевдоним, по которому будет осуществляться поиск в хранилище
<cert.crt> Путь до файла сертификата в формате PEM
<cert.key> Путь до файла приватного ключа в формате PEM
<keystore.p12> Имя хранилища ключей jvm

2. С помощью утилиты keytool добавьте корневой сертификат центра сертификации в хранилище доверенных ключей jvm.
* Если используется не самозаверенный сертификат, данный пункт можно пропустить. Достаточно установить в систему стандартные ca-сертификаты

keytool -importcert -alias <rootCA> -keystore /usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts -storepass changeit -file <rootCA.crt>
Параметр Значение
<rootCA> Псевдоним, по которому будет осуществляться поиск в хранилище
/usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts Стандартный путь до хранилища доверенных сертификатов в jvm, при установке пакета openjdk-11-jdk.
Каталог java-11-openjdk-amd64 может быть другим, в зависимости от типа архитектуры системы
changeit Стандартный пароль для хранилища доверенных сертификатов jvm
<rootCA.crt> Путь до файла сертификата в формате PEM

3. Откройте файл application.properties приложения GitFlic и внесите конфигурационные параметры в соответствии с вашими данными

* Параметры отмеченные как обязательные, должны присутствовать в файле!

Параметр Обязательный Значение Описание
server.ssl.enabled да true Включение поддержки ssl
server.ssl.protocol нет TLS Указание что необходимо использовать тип протокола TLS
server.ssl.key-store да file:<path> Абсолютный путь до файла хранилища ключей созданного в п.1
server.ssl.key-store-type да pkcs12 Указание типа хранилища ключей
server.ssl.key-store-password да <secret> Пароль от хранилища ключей созданного в п.1
server.ssl.key-alias да <alias> Псевдоним пары сертификат/ключ указанный в п.1
server.ssl.key-password нет <secret> Пароль от пары сертификат/ключ внутри хранилища ключей jvm созданного в п.1,если таковой был задан.
По умолчанию, пароль не установлен
server.ssl.trust-store нет file:<path> Абсолютный путь до файла хранилища ключей доверенных сертификатов jvm, если используется нестандартное хранилище
server.ssl.trust-store-password нет <secret> Пароль от хранилища ключей доверенных сертификатов jvm, если используется нестандартное хранилище
server.ssl.trust-store-type нет pkcs12/jks Тип хранилища ключей доверенных сертификатов jvm

* С полным списком всех доступных параметров для конфигурации tls/ssl, можно ознакомиться на данной странице.

4. Запустите приложение GitFlic. Веб интерфейс будет доступен по адресу https://<server.address>:<server.port>