| Current Path : /var/lib/dpkg/info/ |
| Current File : //var/lib/dpkg/info/ca-certificates-java.postinst |
#!/bin/sh
set -e
# use the locale C.UTF-8
unset LC_ALL
LC_CTYPE=C.UTF-8
export LC_CTYPE
storepass='changeit'
if [ -f /etc/default/cacerts ]; then
. /etc/default/cacerts
fi
arch=`dpkg --print-architecture`
JAR=/usr/share/ca-certificates-java/ca-certificates-java.jar
CERTSDIR=/usr/share/ca-certificates
LOCALCERTSDIR=/usr/local/share/ca-certificates
ETCCERTSDIR=/etc/ssl/certs
CACERTS=$ETCCERTSDIR/java/cacerts
check_proc()
{
if ! mountpoint -q /proc; then
echo >&2 "the keytool command requires a mounted proc fs (/proc)."
exit 1
fi
}
convert_pkcs12_keystore_to_jks()
{
check_proc
if ! keytool -importkeystore \
-srckeystore /etc/ssl/certs/java/cacerts \
-destkeystore /etc/ssl/certs/java/cacerts.dpkg-new \
-srcstoretype PKCS12 \
-deststoretype JKS \
-srcstorepass "$storepass" \
-deststorepass "$storepass" \
-noprompt; then
echo "failed to convert PKCS12 keystore to JKS" >&2
exit 1
fi
# only update if /etc/default/cacerts allows
if [ "$cacerts_updates" = "yes" ]; then
mv -f /etc/ssl/certs/java/cacerts /etc/ssl/certs/java/cacerts.dpkg-old
mv -f /etc/ssl/certs/java/cacerts.dpkg-new /etc/ssl/certs/java/cacerts
fi
}
find_pem_files()
{
find $ETCCERTSDIR -type l -name \*.pem | sort | while read symlink ; do
case $(readlink "$symlink") in
$CERTSDIR*|$LOCALCERTSDIR*)
echo "$symlink"
;;
esac
done
}
update_cacerts()
{
if [ "$cacerts_updates" != "yes" ] || [ "$CACERT_UPDATES" = "disabled" ]; then
echo "Updates of cacerts keystore are disabled."
exit 0
fi
if ! which java >/dev/null; then
echo "No JRE found. Skipping Java certificates setup."
exit 0
fi
if ! java -version 2> /dev/null; then
echo "Unable to execute Java. Skipping Java certificates setup."
exit 0
fi
if [ -f /var/lib/ca-certificates-java/convert_pkcs12_keystore_to_jks ]; then
convert_pkcs12_keystore_to_jks
rm /var/lib/ca-certificates-java/convert_pkcs12_keystore_to_jks
fi
if [ -f /var/lib/ca-certificates-java/fresh ]; then
>/var/lib/ca-certificates-java/fresh
pem_files=$(find_pem_files)
if [ -f "$CACERTS" ]; then
check_proc
# Java 8 does not have -cacerts option
if java -version 2>&1 | grep "1.8" > /dev/null ;
then
castore="-keystore ${CACERTS}"
else
castore="-cacerts"
fi
cacerts_aliases=$(keytool ${castore} -storepass "$storepass" -list -rfc | sed -n 's/^Alias name: *debian://ip' | tr '\n' ' ')
etc_ssl_certs_aliases=$(for pem in $pem_files ; do echo -n "$(basename "$pem" | tr A-Z a-z) "; done)
for alias in $cacerts_aliases ; do
case " $etc_ssl_certs_aliases " in
*" ${alias} "*)
: # keep
;;
*)
echo "-${alias}" >> /var/lib/ca-certificates-java/fresh
;;
esac
done
fi
for pem in $pem_files ; do
echo "+${pem}" >> /var/lib/ca-certificates-java/fresh
done
fi
if [ -s /var/lib/ca-certificates-java/fresh ]; then
java -Xmx64m -jar $JAR -storepass "$storepass" < /var/lib/ca-certificates-java/fresh
elif [ -s /var/lib/ca-certificates-java/pending ]; then
java -Xmx64m -jar $JAR -storepass "$storepass" < /var/lib/ca-certificates-java/pending
fi
echo "done."
rm -f /var/lib/ca-certificates-java/fresh
rm -f /var/lib/ca-certificates-java/pending
}
if [ "$1" = "configure" ]; then
if dpkg --compare-versions "$2" lt-nl "20210218" ; then
# clean up misplaced symlinks from ancient versions (#688415)
if [ -L /libnss3.so ]; then
rm -v /libnss3.so
fi
if [ -L /libsoftokn3.so ]; then
rm -v /libsoftokn3.so
fi
if [ -f /etc/default/cacerts ]; then
chmod 0600 /etc/default/cacerts
fi
fi
if dpkg --compare-versions "$2" lt-nl "20180516"; then
if [ -e /etc/ssl/certs/java/cacerts ] && \
[ "$(head -c4 /etc/ssl/certs/java/cacerts)" != "$(echo -en '\xfe\xed\xfe\xed')" ]; then
touch /var/lib/ca-certificates-java/convert_pkcs12_keystore_to_jks
fi
fi
# older versions may not have received all updates from ca-certificates
if dpkg --compare-versions "$2" lt-nl "20210218" ; then
touch /var/lib/ca-certificates-java/fresh
fi
# initial install
if [ -z "$2" ]; then
touch /var/lib/ca-certificates-java/fresh
fi
update_cacerts
fi
if [ "$1" = "triggered" ]; then
case " $2 " in
*" update-ca-certificates-java-fresh "*)
touch /var/lib/ca-certificates-java/fresh
;;
esac
if [ ! -f $CACERTS ]; then
touch /var/lib/ca-certificates-java/fresh
fi
update_cacerts
fi