7d89b35c2d1d4f93b00dc5125ebba1e8b023e9b5
[aaf/authz.git] / conf / CA / bootstrap.sh
1 #
2 # Streamlined AAF Bootstrap initial Cert
3 # Removed Variables so it can be run for AutoDeployments
4 #
5 echo "Bootstrap AAF Certificate"
6 mkdir -p private certs newcerts
7 chmod 700 private
8 chmod 755 certs newcerts
9 touch index.txt
10 echo "unique_subject = no" > index.txt.attr
11 if [ ! -e ./serial ]; then
12   echo '01' > ./serial
13 fi
14
15 NAME=aaf.bootstrap
16 FQDN=$(hostname -f)
17 FQI=aaf@aaf.osaaf.org
18 SUBJECT="/CN=$FQDN/OU=$FQI`cat subject.aaf`"
19 SIGNER_P12=$1
20 SIGNER_KEY=/tmp/aaf_signer.key
21 SIGNER_CRT=/tmp/aaf_signer.crt
22 PASSPHRASE=$2
23 if [ "PASSPHRASE" = "" ]; then
24   PASSPHRASE="something easy"
25 fi
26 BOOTSTRAP_SAN=/tmp/$NAME.san
27 BOOTSTRAP_KEY=/tmp/$NAME.key
28 BOOTSTRAP_CSR=/tmp/$NAME.csr
29 BOOTSTRAP_CRT=/tmp/$NAME.crt
30 BOOTSTRAP_CHAIN=/tmp/$NAME.chain
31 BOOTSTRAP_P12=$NAME.p12
32 BOOTSTRAP_ISSUER=$NAME.issuer
33
34
35 # If Signer doesn't exist, create Self-Signed CA
36 if [ ! -e "$SIGNER_P12"  ]; then
37   # Creating Signer CA
38   openssl req -config openssl.conf -x509 -sha256 -extensions v3_ca \
39     -newkey rsa:4096 -subj /CN="Signer$(cat subject.aaf)" \
40     -keyout $SIGNER_KEY -out $SIGNER_CRT -days 365 -passout stdin << EOF
41 $PASSPHRASE
42 EOF
43
44   # Move to P12 (Signer)
45   openssl pkcs12 -name RootCA -export -in $SIGNER_CRT -inkey $SIGNER_KEY -out $SIGNER_P12 -passin stdin -passout stdin << EOF
46 $PASSPHRASE
47 $PASSPHRASE
48 $PASSPHRASE
49 EOF
50
51 else
52   # Get Private key from P12
53   openssl pkcs12 -in $SIGNER_P12 -nocerts -nodes -passin stdin -passout stdin -out $SIGNER_KEY << EOF
54 $PASSPHRASE
55 $PASSPHRASE
56 EOF
57
58   # Get Cert from P12
59   openssl pkcs12 -in $SIGNER_P12 -clcerts -nokeys -passin stdin -out $SIGNER_CRT << EOF
60 $PASSPHRASE
61 EOF
62
63 fi
64
65 # SANS
66 cp san.conf $BOOTSTRAP_SAN
67 NUM=1
68 for D in $FQDN aaf.osaaf.org service.aaf.osaaf.org locate.aaf.osaaf.org oauth.aaf.osaaf.org gui.aaf.osaaf.org cm.aaf.osaaf.org hello.aaf.osaaf.org; do
69     echo "DNS.$NUM = $D" >> $BOOTSTRAP_SAN
70     NUM=$((NUM+1))
71 done
72
73 # Create CSR
74 openssl req -new -newkey rsa:2048 -nodes -keyout $BOOTSTRAP_KEY \
75         -out $BOOTSTRAP_CSR -outform PEM -subj "$SUBJECT" \
76         -passout stdin  << EOF
77 $PASSPHRASE
78 EOF
79
80 echo Sign it
81 openssl ca -batch -config openssl.conf -extensions server_cert \
82         -cert $SIGNER_CRT -keyfile $SIGNER_KEY \
83         -policy policy_loose \
84         -days 90 \
85         -passin stdin \
86         -out $BOOTSTRAP_CRT \
87         -extfile $BOOTSTRAP_SAN \
88         -infiles $BOOTSTRAP_CSR << EOF
89 $PASSPHRASE
90 EOF
91
92 # Make a P12
93 # Add THIS Intermediate CA into chain
94 cat $BOOTSTRAP_CRT
95 cp $BOOTSTRAP_CRT $BOOTSTRAP_CHAIN
96 cat $SIGNER_CRT >> $BOOTSTRAP_CHAIN
97
98 # Note: Openssl will pickup and load all Certs in the Chain file
99 openssl pkcs12 -name $FQI -export -in $BOOTSTRAP_CHAIN -inkey $BOOTSTRAP_KEY -out $BOOTSTRAP_P12 -passin stdin -passout stdin << EOF
100 $PASSPHRASE
101 $PASSPHRASE
102 $PASSPHRASE
103 EOF
104
105 # Make Issuer name
106 ISSUER=$(openssl x509 -subject -noout -in $SIGNER_CRT | cut -c 10-)
107 for I in ${ISSUER//\// }; do
108   if [ -n "$CADI_X509_ISSUER" ]; then
109     CADI_X509_ISSUER=", $CADI_X509_ISSUER"
110   fi
111   CADI_X509_ISSUER="$I$CADI_X509_ISSUER"
112 done
113 echo $CADI_X509_ISSUER > $BOOTSTRAP_ISSUER
114
115 # Cleanup
116 rm -f $BOOTSTRAP_SAN $BOOTSTRAP_KEY $BOOTSTRAP_CSR $BOOTSTRAP_CRT $BOOTSTRAP_CHAIN $SIGNER_KEY $SIGNER_CRT