58 lines
1.8 KiB
Bash
Executable File
58 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
if [ "$#" -ne 1 ] || [ $1 == "-h" ] || [ $1 == "--help" ] || [ $1 == "help" ]; then
|
|
echo "Usage: $0 certificate.crt";
|
|
exit 0;
|
|
fi
|
|
|
|
if [ -f $1 ]; then
|
|
|
|
openssl x509 -in $1 -noout -checkend 86400 > /dev/null
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "No need to renew yet.";
|
|
exit 1;
|
|
fi
|
|
|
|
subject=$(openssl x509 -in $1 -noout -subject | cut -d "=" -f2-)
|
|
|
|
country=$(echo $subject | grep -Eo 'C = .{2}')
|
|
state=$(echo $subject | grep -Eo 'ST = .*,')
|
|
locality=$(echo $subject | grep -Eo 'L = .*,')
|
|
organization=$(echo $subject | grep -Eo 'O = .*,')
|
|
organizationUnit=$(echo $subject | grep -Eo 'OU = .*,')
|
|
commonName=$(echo $subject | grep -Eo 'CN = .*,?')
|
|
emailAddress=$(openssl x509 -in $1 -noout -email)
|
|
|
|
country=${country:4}
|
|
state=$(echo ${state:5} | awk -F, '{print $1}')
|
|
locality=$(echo ${locality:3} | awk -F, '{print $1}')
|
|
organization=$(echo ${organization:4} | awk -F, '{print $1}')
|
|
organizationUnit=$(echo ${organizationUnit:5} | awk -F, '{print $1}')
|
|
commonName=$(echo ${commonName:5} | awk -F, '{print $1}')
|
|
|
|
echo $subject;
|
|
echo "";
|
|
echo "Country => $country";
|
|
echo "State => $state";
|
|
echo "Locality => $locality";
|
|
echo "Org Name => $organization";
|
|
echo "Org Unit => $organizationUnit";
|
|
echo "Common Name => $commonName";
|
|
echo "Email => $emailAddress";
|
|
|
|
echo -e "\nGenerating certificate...";
|
|
openssl req -x509 -sha256 -nodes -newkey rsa:4096 -keyout /tmp/temp.key -out /tmp/temp.crt -days 365 <<<"$country
|
|
$state
|
|
$locality
|
|
$organization
|
|
$organizationUnit
|
|
$commonName
|
|
$emailAddress
|
|
" 2>/dev/null
|
|
|
|
/bin/bash -c "mv /tmp/temp.crt /home/bill/Certs/$commonName.crt"
|
|
else
|
|
echo "File doesn't exist"
|
|
exit 1;
|
|
fi
|