Как упаковать ключи шифрования Letsencrypt в JKS

Материал из largespace
Перейти к навигации Перейти к поиску

Вопрос:

Как упаковать ключи шифрования, выпущенные Let's encrypt на другом сервере в контейнер JKS для использования в Java решениях?

Ответ:

Используется следующий скрипт на языке BaSH

SSH_PASS=12345678
LOGIN=user
SRV_ADDR=192.168.1.1
REM_PATH=/path/to/certs
KEY_PASS=12345678
# Включаем разрешение на чтение для текущего пользователя с использованием sudo
sshpass -p $SSH_PASS ssh -t $LOGIN@$SRV_ADDR "echo $SSH_PASS | sudo -S chmod 604 $REM_PATH/key.pem"
# Копируем данные ключа и цепочки сертификатов
sshpass -p $SSH_PASS scp $LOGIN@$SRV_ADDR:$REM_PATH/key.pem ./key.pem
sshpass -p $SSH_PASS scp $LOGIN@$SRV_ADDR:$REM_PATH/fullchain.pem ./fullchain.pem
# Возвращаем флаг запрета на чтение кроме рута обратно
sshpass -p $SSH_PASS ssh -t $LOGIN@$SRV_ADDR "echo $SSH_PASS | sudo -S chmod 600 $REM_PATH/key.pem"

# Формируем контейнер PKCS12 для последующего импорта в JKS
openssl pkcs12 -export -in ./fullchain.pem -inkey ./key.pem -out keys.p12 -name keys -passout pass:$KEY_PASS
# Импортируем контейнер в JKS
keytool -importkeystore -deststorepass $KEY_PASS -destkeypass $KEY_PASS -destkeystore ./keys.jks -srckeystore ./keys.p12 -srcstoretype PKCS12 -srcstorepass $KEY_PASS -alias keys

После выполнения команды скрипта сформируется файл keys.jks с хранимыми ключами доступа.