22 марта, 2014
0 Comments
1 category
Никогда, никогда не делайте revoke сертификату главного админа, даже, если на 100% уверены в том, что новый везде прописан и всё сделано правильно. 😮 Сначала надо немного поработать с новым и проверить, а всё ли в порядке…
Ну, это так, для затравки. Мне надоело вспоминать и набирать ручками команды для замены “протухающих” сертификатов. Посему, скриптик:
#!/bin/bash
#
# --
if [ "$#" -lt 3 ] ; then
echo "Usage: $0 isRecover <host_name>"
echo "isRecover - 'y' or 'n'"
exit 1
fi
wDir=${HOME}/work/p12/pem
sOU=$2
hName=$3
uName="sa_${sOU}_${hName}"
cd ${HOME}
if [ $1 == "y" ] ; then
echo "Recovering key = YES"
./ejbca/bin/ejbca.sh ra keyrecovernewest ${uName}
else
echo "Recovering key = No"
./ejbca/bin/ejbca.sh ra setendentitystatus ${uName} 10
fi
./ejbca/bin/ejbca.sh ra setclearpwd ${uName} <пароль>
./ejbca/bin/ejbca.sh batch ${uName}
./bin/prepare.apache ${sOU} ${hName}
exit 0
- Первый параметр – нужно ли восстанавливать сохранённые ключи шифрования или сгенерировать новые. Для entity должна быть выставлена соответствующая опция.
- Второй – имя OU. Я, для “сервисов”, использую отдельную ветку дерева в ldap. Мне так удобнее.
- Последний – хост. Два последних параметра в сумме дают имя пользователя в ejbca.
Теперь скрипт prepare.apache. Он готовит token и выставляет права доступа.
- Каталог ${HOME}/work/p12/pem/${OU} должен быть уже создан.
- Копирую “по месту” ручками.
- Для apache в настройках использую -token.pem файл.
- Поскольку у меня используется setuid для каждого виртуального хоста, то менять владельца для token файла не надо. Он читается при старте, когда разбирается конфиг (от root).
#!/bin/bash
#
# --
if [ "$#" -lt 2 ] ; then
echo "Usage: $0 <host_name>"
exit 1
fi
wDir=${HOME}/work/p12/pem
sOU=$1
hName=$2
cd ${wDir}
if test ! -d $sOU; then
echo "OU=$sOU - Directory $wDir/$sOU not found. Check certificate."
exit 1
fi
echo -n "OU=$sOU, "
rm -f $sOU/${hName}-token.pem $sOU/${hName}-Key.pem.raw $sOU/${hName}.pem $sOU/${hName}-Key.pem
cp ${hName}-Key.pem ${hName}.pem $sOU
cd $sOU
/usr/bin/openssl rsa -in ${hName}-Key.pem -out ${hName}-Key.pem.raw >/dev/null
cat ${hName}.pem >${hName}-token.pem
echo >>${hName}-token.pem
cat ${hName}-Key.pem.raw >>${hName}-token.pem
chmod 400 ${hName}-Key.pem ${hName}-Key.pem.raw ${hName}-token.pem
chmod 444 ${hName}.pem
echo
exit 0
Надо бы ещё, конечно, в первый скрипт вставить проверку на возможность key recovery. Чтоб само брало из базы. Но, лень. Потом.
Category: EJBCA