Але безкоштовні
сертифікати мають особливість, короткий термін життя, і їх періодично
потрібно оновлювати. Для звичайних Web серверів, існують скрипти які
автоматично спрощують життя.
acme.sh --issue -d example.com --dns \
--yes-I-know-dns-manual-mode-enough-go-ahead-please
Add the following txt record:
Domain:_acme-challenge.example.com
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c
Please add those txt records to the domains. Waiting for the dns to take effect.
acme.sh --renew -d example.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please
Після успішного оновлення (acme.sh --renew), у робочій теці скрипта (~/.acme.sh) буде згенерований для кожного домену свій ключ і сертифікат до нього.
Для використання їх з сховищами ключів та сертифікатів в Java KeyStore, треба їх імпортувати до keystore сховища.
Для автоматизації всього процесу був створений скрипт, котрий запускається за розкладом раз на місяць від імені root, де ім'я звичайного користувача у котрого встановлено скрипти - openmeeting.
#!/bin/bash
DOMAIN=example.com
GUSER=openmeeting
HOME=/home/${GUSER}
sudo -u ${GUSER} ${HOME}/.acme.sh/acme.sh --cron --home "${HOME}/.acme.sh"
CMOD=$(stat -c %y ${HOME}/.acme.sh/${DOMAIN}/${DOMAIN}.cer | cut -d' ' -f1)
CDAT=$(date +"%Y-%m-%d")
echo "DATE MOD:${CMOD} NOW:${CDAT}"
if [ ! "${CMOD}" == "${CDAT}" ];then
echo "NOT SAME DATE"
exit
fi
cd ${HOME}/.acme.sh/${DOMAIN}
KEYSTORE=localhost.jks
STOREPWD=openmeetings
OMSTORE=/opt/openmeeting/conf
rm openmeetings.p12
openssl pkcs12 -export -in ${DOMAIN}.cer -inkey ${DOMAIN}.key -out openmeetings.p12 -name openmeetings -certfile ca.cer
-certfile fullchain.cer -passout pass:${STOREPWD}
rm ${KEYSTORE}
keytool -importkeystore -srcstorepass openmeetings -srckeystore openmeetings.p12 -srcstoretype PKCS12 -deststorepass ${
STOREPWD} -destkeystore ${KEYSTORE} -alias openmeetings -deststoretype PKCS12
keytool -import -alias root -keystore ${KEYSTORE} -storepass ${STOREPWD} -trustcacerts -file ca.cer
echo yes | keytool -import -alias intermed -keystore ${KEYSTORE} -storepass ${STOREPWD} -trustcacerts -file fullchain.c
er
if [ -s "${KEYSTORE}" ];then
rm ${OMSTORE}/${KEYSTORE}.bak
mv ${OMSTORE}/${KEYSTORE} ${OMSTORE}/${KEYSTORE}.bak
cp ${KEYSTORE} ${OMSTORE}/${KEYSTORE}
ret=$?
echo "Copy return state: ${ret}"
if [ "${ret}" -eq 0 ];then
/etc/init.d/tomcat3 restart
fi
fi
Скрипт запускає оновлення сертифікатів, перевіряє дату сертифікатів, у випадку коли вони нові, запускає процедуру створення сховища keystore з новими сертифікатами.
У випадку успішного копіювання сховища keystore (localhost.jks) до робочої теки Tomcat сервера, сервер Tomcat презапускається.

Немає коментарів:
Дописати коментар