134 lines
4.2 KiB
Bash
Executable File
134 lines
4.2 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Script to convert system CA certs KeyStore file from JKS to WKS format
|
|
#
|
|
# This script tries to detect OS variant and Java version to find correct
|
|
# CA certificate KeyStore for this system.
|
|
#
|
|
# The following search order is used for trying to find either cacerts,
|
|
# jssecacerts, or both:
|
|
#
|
|
# cacerts
|
|
# 1. $JAVA_HOME/lib/security/cacerts (JDK 9+)
|
|
# 2. $JAVA_HOME/jre/lib/security/cacerts (JDK <= 8)
|
|
#
|
|
# jssecacerts:
|
|
#
|
|
# 1. $JAVA_HOME/lib/security/jssecacerts (JDK 9+)
|
|
# 2. $JAVA_HOME/jre/lib/security/jssecacerts (JDK <= 8)
|
|
#
|
|
|
|
# Export library paths for Linux and Mac to find shared JNI library
|
|
export LD_LIBRARY_PATH=../../../lib:$LD_LIBRARY_PATH
|
|
export DYLD_LIBRARY_PATH=../../../lib:$DYLD_LIBRARY_PATH
|
|
|
|
OUTDIR=`pwd`
|
|
|
|
# ARGS: <input-keystore-name> <output-keystore-name> <password>
|
|
jks_to_wks() {
|
|
keytool -importkeystore -srckeystore ${1} -destkeystore ${2}.wks -srcstoretype JKS -deststoretype WKS -srcstorepass "$3" -deststorepass "$3" -provider com.wolfssl.provider.jce.WolfCryptProvider --providerpath ../../../lib/wolfcrypt-jni.jar &> /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
printf "Failed to convert JKS to WKS!"
|
|
exit 1
|
|
fi
|
|
|
|
}
|
|
|
|
OS=`uname`
|
|
ARCH=`uname -a`
|
|
|
|
CACERTS_JDK9="lib/security/cacerts"
|
|
CACERTS_JDK8="jre/lib/security/cacerts"
|
|
JSSECACERTS_JDK9="lib/security/jssecacerts"
|
|
JSSECACERTS_JDK8="jre/lib/security/jssecacerts"
|
|
|
|
echo "-----------------------------------------------------------------------"
|
|
echo "System CA KeyStore to WKS Conversion Script"
|
|
echo "-----------------------------------------------------------------------"
|
|
|
|
if [ -z "$JAVA_HOME" ]; then
|
|
echo "JAVA_HOME empty, trying to detect"
|
|
else
|
|
echo "JAVA_HOME already set = $JAVA_HOME"
|
|
javaHome="$JAVA_HOME"
|
|
fi
|
|
|
|
# Set up Java include and library paths for OS X and Linux
|
|
# NOTE: you may need to modify these if your platform uses different locations
|
|
if [ "$OS" == "Darwin" ]; then
|
|
echo "Detected Darwin/OSX host OS"
|
|
if [ -z $javaHome ]; then
|
|
# this is broken since Big Sur, set JAVA_HOME environment var instead
|
|
# OSX JAVA_HOME is typically similar to:
|
|
# /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home
|
|
javaHome=`/usr/libexec/java_home`
|
|
fi
|
|
elif [ "$OS" == "Linux" ] ; then
|
|
echo "Detected Linux host OS"
|
|
if [ -z $javaHome ]; then
|
|
javaHome=`echo $(dirname $(dirname $(readlink -f $(which java))))`
|
|
fi
|
|
if [ ! -d "$javaHome/include" ]
|
|
then
|
|
javaHome=`echo $(dirname $javaHome)`
|
|
fi
|
|
else
|
|
echo 'Unknown host OS!'
|
|
exit
|
|
fi
|
|
echo " $OS $ARCH"
|
|
echo "Java Home = $javaHome"
|
|
echo ""
|
|
|
|
if [ ! -d $OUTDIR ]; then
|
|
mkdir $OUTDIR
|
|
fi
|
|
|
|
if [ -f "$javaHome/$CACERTS_JDK9" ]; then
|
|
echo "System cacerts found, converting from JKS to WKS:"
|
|
echo " FROM: $javaHome/$CACERTS_JDK9"
|
|
echo " TO: $OUTDIR/cacerts.wks"
|
|
echo " PASS (default): changeit"
|
|
if [ -f $OUTDIR/cacerts.wks ]; then
|
|
rm $OUTDIR/cacerts.wks
|
|
fi
|
|
jks_to_wks "$javaHome/$CACERTS_JDK9" "$OUTDIR/cacerts" "changeit"
|
|
fi
|
|
|
|
if [ -f "$javaHome/$CACERTS_JDK8" ]; then
|
|
echo "System cacerts found, converting from JKS to WKS:"
|
|
echo " FROM: $javaHome/$CACERTS_JDK8"
|
|
echo " TO: $OUTDIR/cacerts.wks"
|
|
echo " PASS (default): changeit"
|
|
if [ -f $OUTDIR/cacerts.wks ]; then
|
|
rm $OUTDIR/cacerts.wks
|
|
fi
|
|
jks_to_wks "$javaHome/$CACERTS_JDK8" "$OUTDIR/cacerts" "changeit"
|
|
fi
|
|
|
|
if [ -f "$javaHome/$JSSECERTS_JDK9" ]; then
|
|
echo "System jssecacerts found, converting from JKS to WKS:"
|
|
echo " FROM: $javaHome/$JSSECACERTS_JDK9"
|
|
echo " TO: $OUTDIR/jssecacerts.wks"
|
|
echo " PASS (default): changeit"
|
|
if [ -f $OUTDIR/jssecacerts.wks ]; then
|
|
rm $OUTDIR/jssecacerts.wks
|
|
fi
|
|
jks_to_wks "$javaHome/$JSSECACERTS_JDK9" "$OUTDIR/jssecacerts" "changeit"
|
|
fi
|
|
|
|
if [ -f "$javaHome/$JSSECERTS_JDK8" ]; then
|
|
echo "System jssecacerts found, converting from JKS to WKS:"
|
|
echo " FROM: $javaHome/$JSSECACERTS_JDK8"
|
|
echo " TO: $OUTDIR/jssecacerts.wks"
|
|
echo " PASS (default): changeit"
|
|
if [ -f $OUTDIR/jssecacerts.wks ]; then
|
|
rm $OUTDIR/jssecacerts.wks
|
|
fi
|
|
jks_to_wks "$javaHome/$JSSECACERTS_JDK8" "$OUTDIR/jssecacerts" "changeit"
|
|
fi
|
|
|
|
echo ""
|
|
echo "Successfully converted JKS to WKS"
|
|
|