|
|
|
@ -1,15 +1,15 @@
|
|
|
|
|
# Copyright 1999-2022 Gentoo Authors
|
|
|
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
|
|
|
|
|
|
# Поддержка работы сайтов с российскими сертификатами
|
|
|
|
|
|
|
|
|
|
EAPI=7
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DESCRIPTION="Установка корневого сертификата для работы сайтов с российскими сертификатами"
|
|
|
|
|
HOMEPAGE="https://www.gosuslugi.ru/crt"
|
|
|
|
|
|
|
|
|
|
SRC_URI="https://gu-st.ru/content/Other/doc/russiantrustedca.pem -> ${P}.crt"
|
|
|
|
|
SRC_URI="
|
|
|
|
|
https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cer -> ${P}_root.cer
|
|
|
|
|
https://gu-st.ru/content/Other/doc/russian_trusted_sub_ca.cer -> ${P}_sub.cer
|
|
|
|
|
"
|
|
|
|
|
|
|
|
|
|
LICENSE=""
|
|
|
|
|
SLOT="0"
|
|
|
|
@ -20,13 +20,33 @@ RESTRICT="bindist mirror strip"
|
|
|
|
|
|
|
|
|
|
S="${WORKDIR}"
|
|
|
|
|
|
|
|
|
|
CA=usr/local/share/ca-certificates
|
|
|
|
|
RU_TR_R=${P}_root.crt
|
|
|
|
|
RU_TR_S=${P}_sub.crt
|
|
|
|
|
|
|
|
|
|
RU_TR_R_NAME="Russian Trusted Root CA - The Ministry of Digital Development and Communications"
|
|
|
|
|
RU_TR_S_NAME="Russian Trusted Sub CA - The Ministry of Digital Development and Communications"
|
|
|
|
|
|
|
|
|
|
## Ассоциативный массив {имя сертификата:файл}
|
|
|
|
|
declare -A massiv
|
|
|
|
|
massiv[${RU_TR_R_NAME}]=${RU_TR_R}
|
|
|
|
|
massiv[${RU_TR_S_NAME}]=${RU_TR_S}
|
|
|
|
|
|
|
|
|
|
src_prepare() {
|
|
|
|
|
mkdir -p usr/local/share/ca-certificates/ || die
|
|
|
|
|
cp ${DISTDIR}/${A} usr/local/share/ca-certificates/ || die
|
|
|
|
|
mkdir -p ${CA} || die
|
|
|
|
|
default
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
src_install() {
|
|
|
|
|
|
|
|
|
|
# Конвертируем DER в PEM
|
|
|
|
|
for k in ${A}; do
|
|
|
|
|
kk=$(basename ${k} .cer);
|
|
|
|
|
touch ${CA}/${kk}.crt
|
|
|
|
|
/usr/bin/openssl x509 -in ${DISTDIR}/${k} -inform DER > ${CA}/${kk}.crt
|
|
|
|
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
mv * "${D}" || die
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -36,11 +56,55 @@ pkg_postinst() {
|
|
|
|
|
# to include their stuff in the db.
|
|
|
|
|
# However it's too overzealous when the user has custom certs in place.
|
|
|
|
|
# --fresh is to clean up dangling symlinks
|
|
|
|
|
/usr/sbin/update-ca-certificates
|
|
|
|
|
/usr/sbin/update-ca-certificates --root "${ROOT}"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Установка для браузеров
|
|
|
|
|
|
|
|
|
|
# Создаём базу nssdb для системы
|
|
|
|
|
mkdir -p /etc/pki/nssdb || die
|
|
|
|
|
|
|
|
|
|
nssdir=$(find /home/ -name "cert9.db")
|
|
|
|
|
nssdir+=$'\n/etc/pki/nssdb/cert9.db'
|
|
|
|
|
|
|
|
|
|
for certDB in ${nssdir}
|
|
|
|
|
do
|
|
|
|
|
certdir=$(dirname ${certDB});
|
|
|
|
|
|
|
|
|
|
for k in "${!massiv[@]}"; do
|
|
|
|
|
certutil -A -n "${k}" -t "CT,C,C" -i /${CA}/${massiv[$k]} -d sql:${certdir};
|
|
|
|
|
done
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
if [[ -n "$(find -L /etc/ssl/certs/ -type l)" ]] ; then
|
|
|
|
|
ewarn "Removing the following broken symlinks:"
|
|
|
|
|
ewarn "$(find -L /etc/ssl/certs/ -type l -printf '%p -> %l\n' -delete)"
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pkg_prerm() {
|
|
|
|
|
# Удаляем сертификаты
|
|
|
|
|
rm -f /usr/local/share/ca-certificates/${P}_{root,sub}.crt
|
|
|
|
|
|
|
|
|
|
if [[ -d "/usr/local/share/ca-certificates" ]] ; then
|
|
|
|
|
# If the user has local certs, we need to rebuild again
|
|
|
|
|
# to include their stuff in the db.
|
|
|
|
|
# However it's too overzealous when the user has custom certs in place.
|
|
|
|
|
# --fresh is to clean up dangling symlinks
|
|
|
|
|
/usr/sbin/update-ca-certificates --root "${ROOT}"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
nssdir=$(find /home/ -name "cert9.db")
|
|
|
|
|
nssdir+=$'\n/etc/pki/nssdb/cert9.db'
|
|
|
|
|
|
|
|
|
|
for certDB in ${nssdir}
|
|
|
|
|
do
|
|
|
|
|
certdir=$(dirname ${certDB});
|
|
|
|
|
|
|
|
|
|
for k in "${!massiv[@]}"; do
|
|
|
|
|
certutil -D -n /${CA}"${k}" -d sql:${certdir};
|
|
|
|
|
done
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|