Привет!
Нужно импортировать Let’s Encrypt сертификат на сервер Glassfish? — Не проблема.
Подразумевается, что у вас уже имеется директория с рабочим сертификатом, а также настроен отдельный Cron на регулярное обновление сертификата в этой директории. Оттуда мы и будем импортировать.
Создайте в удобном месте (напр. в /home/glassfish/glassfish-5.0.1/) файл importssltoglassfish.sh, который вы запустите, а в дальнейшем будет запускаться и с помощью Cron. Вставьте в него следующий скрипт, в котором поменяйте значения на свои, где:
LIVE — местонахождение готового сертификата Let’s Encrypt (pem и key файлы).
GFDOMAIN — директория вашего домена в Glassfish.
NAME — доменное имя.
KEYSTORE — выходной файл ключа.
TRUSTSTORE — файл сертификата.
KEYSTOREPW — ключ хранения сертификата.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#!/bin/sh LIVE=/home/username/conf/web GFDOMAIN=/home/glassfish/glassfish-5.0.1/glassfish/domains/domain1 NAME=dev1.java.md KEYSTORE=keystore.jks TRUSTSTORE=cacerts.jks KEYSTOREPW=changeit # Import certificate private key into keystore. rm $KEYSTORE for alias in glassfish-instance s1as do openssl pkcs12 -export \ -in $LIVE/ssl.dev.java.md.pem \ -inkey $LIVE/ssl.dev.java.md.key \ -name $alias \ -password pass:$KEYSTOREPW \ -out cert.p12 keytool -importkeystore \ -srckeystore cert.p12 \ -srcstoretype PKCS12 \ -srcstorepass $KEYSTOREPW \ -destkeystore $KEYSTORE \ -destkeypass $KEYSTOREPW \ -deststorepass $KEYSTOREPW \ -alias $alias done rm cert.p12 keytool -list -keystore $KEYSTORE -storepass $KEYSTOREPW # Import certificate into trust store. rm $TRUSTSTORE keytool -import -noprompt -trustcacerts \ -alias $NAME \ -file $LIVE/ssl.dev.java.md.pem \ -srcstorepass $KEYSTOREPW \ -destkeypass $KEYSTOREPW \ -deststorepass $KEYSTOREPW \ -keystore $TRUSTSTORE keytool -list -keystore $TRUSTSTORE -storepass $KEYSTOREPW sudo cp -f $KEYSTORE $GFDOMAIN/config/ sudo cp -f $TRUSTSTORE $GFDOMAIN/config/ sudo service glassfish stop sudo service glassfish start |
Запустите скрипт:
1 2 |
cd /home/glassfish/glassfish-5.0.1/ ./importssltoglassfish.sh |
Примерный результат работы скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
glassfish@194:~# cd /home/glassfish/glassfish-5.0.1/ glassfish@194:/home/glassfish/glassfish-5.0.1# ./importssltoglassfish.sh rm: cannot remove ‘keystore.jks’: No such file or directory Importing keystore cert.p12 to keystore.jks... Warning: The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12". Importing keystore cert.p12 to keystore.jks... Warning: The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12". Keystore type: JKS Keystore provider: SUN Your keystore contains 2 entries glassfish-instance, Apr 30, 2018, PrivateKeyEntry, Certificate fingerprint (SHA1): 9A:59:BE:D7:F6:87:17:1C:3A:E8:3E:EB:10:38:73:95:4B:65:5D:18 s1as, Apr 30, 2018, PrivateKeyEntry, Certificate fingerprint (SHA1): 9A:59:BE:D7:F6:87:17:1C:3A:E8:3E:EB:10:38:73:95:4B:65:5D:18 Warning: The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12". rm: cannot remove ‘cacerts.jks’: No such file or directory Certificate was added to keystore Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry dev.java.md, Apr 30, 2018, trustedCertEntry, Certificate fingerprint (SHA1): 9A:59:BE:D7:F6:87:17:1C:3A:E8:3E:EB:10:38:73:95:4B:65:5D:18 |
Файлы keystore.jks и cacerts.jks теперь находятся в директории ../domain1/config.
Перезагрузите сервер.
1 |
sudo asadmin --port 4343 restart-domain domain1 |
Готово!
После работы скрипта неверный пароль администратора?
Попробуйте сбросить защиту страницы администрирования из вне и перезагрузить Glassfish:
1 2 3 4 |
sudo asadmin --port 4343 disable-secure-admin sudo asadmin --port 4343 restart-domain domain1 sudo asadmin --port 4343 enable-secure-admin sudo asadmin --port 4343 restart-domain domain1 |
Не забудьте добавить Cron на запуск этого скрипта, чтобы обновлять сертификат в директории Glassfish.