]> git.somenet.org - tools/certgen.git/blob - certgen.sh
fix dns-altnames breakage
[tools/certgen.git] / certgen.sh
1 #!/bin/bash
2
3 MYPWD=$(pwd)
4 umask 0027
5
6 echo "cleanup previous run..."
7 rm -rf output/*
8 mkdir output/csr output/crt
9
10 while read cdline ; do
11         if [[ $cdline == "" || $cdline == "#"* ]] ; then
12                 continue
13         fi
14
15         cd $MYPWD
16         read -a certdata <<< "$cdline"
17
18         echo "*** Processing: $(date -Iseconds) - ${certdata[0]} - ${certdata[1]} ***"
19         if [[ -d "output/${certdata[1]}"  ]] ; then
20                 echo "*** ERROR - THIS SEEMS TO ALREADY EXIST ***" 1>&2
21                 echo "*** ABORTED ***" 1>&2
22                 exit 1
23         fi
24
25         mkdir "output/${certdata[1]}"
26         chmod o+x "output/${certdata[1]}"
27
28         SUBJECT="${certdata[2]}CN=${certdata[1]}/"
29         DNS_NAMES="${certdata[1]},${certdata[3]}"
30         OLDIFS=$IFS
31         IFS=","
32         cat openssl.cnf > /tmp/certgen.cnf
33         COUNTER=0
34         for name in $DNS_NAMES; do
35                 if [[ "" == $name ]] ; then
36                         continue
37                 fi
38                 COUNTER=$((COUNTER+1))
39                 echo "DNS.${COUNTER} = $name" >> /tmp/certgen.cnf
40         done
41         IFS=$OLDIFS
42         unset OLDIFS
43         unset COUNTER
44         
45         cd "output/${certdata[1]}"
46         openssl genrsa -out "${certdata[1]}.key" 4096 &> /dev/null
47         openssl req -new -key "${certdata[1]}.key" -out "${certdata[1]}.csr" -utf8 -batch -subj "${SUBJECT}" -config /tmp/certgen.cnf
48
49         if [[ ${certdata[0]} == "CRT" ]] ; then
50                 openssl x509 -req -signkey "${certdata[1]}.key" -in "${certdata[1]}.csr" -out "${certdata[1]}.crt" -extensions v3_req -extfile /tmp/certgen.cnf \
51                         -days 365 -sha512 &> /dev/null
52                 chmod o+r "${certdata[1]}.crt"
53
54                 echo -n "${certdata[1]} " >> "${MYPWD}/output/fpfile.txt"
55                 openssl x509 -in "${certdata[1]}.crt" -fingerprint -noout -sha512 >> "${MYPWD}/output/fpfile.txt"
56                 echo "" >> "${MYPWD}/output/fpfile.txt"
57         fi
58
59         rm /tmp/certgen.cnf
60         cd $MYPWD
61
62         if [[ ${certdata[0]} == "CRT" ]] ; then
63                 mv "output/${certdata[1]}" "output/crt/${certdata[1]}"
64         else
65                 mv "output/${certdata[1]}" "output/csr/${certdata[1]}"
66         fi
67
68 done < certgen.data
69
70 echo "*** DONE ***"
71 ls -l output/*/ | grep -v "total"
72