mirror of
https://github.com/hak5/nano-tetra-modules.git
synced 2025-10-29 16:58:09 +00:00
115 lines
2.6 KiB
Bash
Executable File
115 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Author: sud0nick
|
|
# Date: Jan 2016
|
|
|
|
help() {
|
|
echo "Usage: ./buildCert.sh <opts>";
|
|
echo '';
|
|
echo 'Required Parameters:';
|
|
echo -e '\t-k,--keyName:\tName of exported key files';
|
|
echo '';
|
|
echo 'Optional Parameters:';
|
|
echo '';
|
|
echo -e '\t-b,--bitSize:\tBitsize of keys (Default: 2048)';
|
|
echo -e '\t-d,--days:\tNumber days keys will be valid (Default: 365)';
|
|
echo -e '\t-sa,--sigAlgo:\tSignature algorithm (Default: SHA-256)';
|
|
echo '';
|
|
echo 'Distinguished Name Options:';
|
|
echo '';
|
|
echo -e '\t-c,--country:\t\t\tCountry Code';
|
|
echo -e '\t-st,--state:\t\t\tState or Province';
|
|
echo -e '\t-l,--locality:\t\t\tCity or Locality';
|
|
echo -e '\t-o,--orgnaization:\t\tOrganization';
|
|
echo -e '\t-ou,--organizationalUnit:\tOrganizational Unit';
|
|
echo -e '\t-cn,--commonName:\t\tCommon Name';
|
|
echo -e '\t--config:\t\t\tOpenSSL config file';
|
|
echo '';
|
|
}
|
|
|
|
if [ "$#" -lt 1 ]; then
|
|
help;
|
|
exit;
|
|
fi
|
|
|
|
# Defaults
|
|
SIGALGO="sha256";
|
|
BITSIZE=2048;
|
|
DAYS=365;
|
|
|
|
while [ "$#" -gt 0 ]
|
|
do
|
|
|
|
if [[ "$1" == "-d" || "$1" == "--days" ]]; then
|
|
DAYS="$2";
|
|
fi
|
|
if [[ "$1" == "-b" || "$1" == "--bitSize" ]]; then
|
|
BITSIZE="$2";
|
|
fi
|
|
if [[ "$1" == "-k" || "$1" == "--keyName" ]]; then
|
|
KEYNAME="$2";
|
|
fi
|
|
if [[ "$1" == "-sa" || "$1" == "--sigAlgo" ]]; then
|
|
SIGALGO="$2";
|
|
fi
|
|
if [[ "$1" == "-c" || "$1" == "--country" ]]; then
|
|
COUNTRY="$2"
|
|
fi
|
|
if [[ "$1" == "-st" || "$1" == "--state" ]]; then
|
|
STATE="$2"
|
|
fi
|
|
if [[ "$1" == "-l" || "$1" == "--locality" ]]; then
|
|
LOCALITY="$2"
|
|
fi
|
|
if [[ "$1" == "-o" || "$1" == "--organization" ]]; then
|
|
ORGANIZATION="$2"
|
|
fi
|
|
if [[ "$1" == "-ou" || "$1" == "--organizationalUnit" ]]; then
|
|
OU="$2"
|
|
fi
|
|
if [[ "$1" == "-cn" || "$1" == "--commonName" ]]; then
|
|
CN="$2"
|
|
fi
|
|
if [[ "$1" == "--config" ]]; then
|
|
CONF="$2"
|
|
fi
|
|
|
|
shift
|
|
done
|
|
|
|
if [ -z "$DAYS" ] || [ -z "$BITSIZE" ] || [ -z "$KEYNAME" ]; then
|
|
echo "[-] You must enter at least key name, bitsize, and days valid parameters.";
|
|
help;
|
|
exit;
|
|
fi
|
|
|
|
subj="";
|
|
ssl_store="/pineapple/modules/Papers/includes/ssl/";
|
|
|
|
if [ -n "$COUNTRY" ]; then
|
|
subj="$subj/C=$COUNTRY";
|
|
fi
|
|
if [ -n "$STATE" ]; then
|
|
subj="$subj/ST=$STATE";
|
|
fi
|
|
if [ -n "$LOCALITY" ]; then
|
|
subj="$subj/L=$LOCALITY";
|
|
fi
|
|
if [ -n "$ORGANIZATION" ]; then
|
|
subj=$subj"/O=$ORGANIZATION";
|
|
fi
|
|
if [ -n "$OU" ]; then
|
|
subj="$subj/OU=$OU";
|
|
fi
|
|
if [ -n "$CN" ]; then
|
|
subj="$subj/CN=$CN";
|
|
fi
|
|
|
|
if [ -n "$subj" ]; then
|
|
openssl req -x509 -nodes -batch -days $DAYS -newkey rsa:$BITSIZE -$SIGALGO -keyout $ssl_store$KEYNAME.key -out $ssl_store$KEYNAME.cer -subj "$subj";
|
|
else
|
|
openssl req -x509 -nodes -batch -days $DAYS -newkey rsa:$BITSIZE -$SIGALGO -keyout $ssl_store$KEYNAME.key -out $ssl_store$KEYNAME.cer -config $CONF;
|
|
fi
|
|
|
|
echo "Complete";
|