changed to unmaintained
[aaf/authz.git] / conf / CA / bootstrap.sh
index ea7a23e..8454a3a 100644 (file)
@@ -1,10 +1,40 @@
+#!/bin/bash
+#########
+#  ============LICENSE_START====================================================
+#  org.onap.aaf
+#  ===========================================================================
+#  Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
+#  ===========================================================================
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#  ============LICENSE_END====================================================
 #
 # Streamlined AAF Bootstrap initial Cert
 # Removed Variables so it can be run for AutoDeployments
 #
 echo "Bootstrap AAF Certificate"
+mkdir -p private certs newcerts
+chmod 700 private
+chmod 755 certs newcerts
+touch index.txt
+echo "unique_subject = no" > index.txt.attr
+if [ ! -e ./serial ]; then
+  echo $(date +%s)_$(shuf -i 0-1000000 -n 1)  > ./serial
+fi
+
 NAME=aaf.bootstrap
-FQDN=$(uname -n)
+HOSTNAME="${HOSTNAME:=$(hostname -)}"
+PUBLIC_FQDN="${aaf_locator_public_fqdn:=$HOSTNAME}"
+FQDN="${aaf_locator_fqdn:=$PUBLIC_FQDN}"
 FQI=aaf@aaf.osaaf.org
 SUBJECT="/CN=$FQDN/OU=$FQI`cat subject.aaf`"
 SIGNER_P12=$1
@@ -18,15 +48,19 @@ BOOTSTRAP_SAN=/tmp/$NAME.san
 BOOTSTRAP_KEY=/tmp/$NAME.key
 BOOTSTRAP_CSR=/tmp/$NAME.csr
 BOOTSTRAP_CRT=/tmp/$NAME.crt
+BOOTSTRAP_CHAIN=/tmp/$NAME.chain
 BOOTSTRAP_P12=$NAME.p12
+BOOTSTRAP_ISSUER=$NAME.issuer
 
 
 # If Signer doesn't exist, create Self-Signed CA
 if [ ! -e "$SIGNER_P12"  ]; then
   # Creating Signer CA
   openssl req -config openssl.conf -x509 -sha256 -extensions v3_ca \
-    -newkey rsa:4096 -nodes -subj /CN="RootCA$(cat subject.aaf)" \
-    -keyout $SIGNER_KEY -out $SIGNER_CRT -days 365
+    -newkey rsa:4096 -subj /CN="Signer$(cat subject.aaf)" \
+    -keyout $SIGNER_KEY -out $SIGNER_CRT -days 365 -passout stdin << EOF
+$PASSPHRASE
+EOF
 
   # Move to P12 (Signer)
   openssl pkcs12 -name RootCA -export -in $SIGNER_CRT -inkey $SIGNER_KEY -out $SIGNER_P12 -passin stdin -passout stdin << EOF
@@ -51,38 +85,73 @@ fi
 
 # SANS
 cp san.conf $BOOTSTRAP_SAN
+SANS=$FQDN
+if [ "$FQDN" -ne "$HOSTNAME" ]; then
+  SANS="$SANS $HOSTNAME"
+fi
+
+for ROOT in $(cat san_root.aaf); do
+   SANS="$SANS $ROOT"
+   for C in service locate oauth token introspect gui cm hello; do
+     SANS="$SANS $C.$ROOT"
+   done
+done
+
+for C in service locate oauth token introspect gui cm hello; do
+   SANS="$SANS aaf-$C"
+   SANS="$SANS aaf-$C.onap"
+done
+
 NUM=1
-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
+for D in $SANS; do
     echo "DNS.$NUM = $D" >> $BOOTSTRAP_SAN
     NUM=$((NUM+1))
 done
 
 # Create CSR
-openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout $BOOTSTRAP_KEY \
-       -out $BOOTSTRAP_CSR -outform PEM -subj "$SUBJECT" 
-       #-passout stdin  << EOF
-#$PASSPHRASE
-#EOF
-
-ls -l BOOTSTRAP_CSR  $BOOTSTRAP_CSR
-# Sign it
-openssl ca -batch -config openssl.conf -extensions server_cert -out $BOOTSTRAP_CRT \
+openssl req -new -newkey rsa:2048 -nodes -keyout $BOOTSTRAP_KEY \
+       -out $BOOTSTRAP_CSR -outform PEM -subj "$SUBJECT" \
+       -passout stdin  << EOF
+$PASSPHRASE
+EOF
+
+echo Sign it
+openssl ca -batch -config openssl.conf -extensions server_cert \
        -cert $SIGNER_CRT -keyfile $SIGNER_KEY \
        -policy policy_loose \
-       -days 90 \
+       -days 365 \
+       -passin stdin \
+       -out $BOOTSTRAP_CRT \
        -extfile $BOOTSTRAP_SAN \
-       -infiles $BOOTSTRAP_CSR 
+       -infiles $BOOTSTRAP_CSR << EOF
+$PASSPHRASE
+EOF
 
 # Make a P12
 # Add THIS Intermediate CA into chain
-cat $SIGNER_CRT >> $BOOTSTRAP_CRT
+cat $BOOTSTRAP_CRT
+cp $BOOTSTRAP_CRT $BOOTSTRAP_CHAIN
+cat $SIGNER_CRT >> $BOOTSTRAP_CHAIN
+cat $BOOTSTRAP_CHAIN
 
 # Note: Openssl will pickup and load all Certs in the Chain file
-openssl pkcs12 -name $FQI -export -in $BOOTSTRAP_CRT -inkey $BOOTSTRAP_KEY -out $BOOTSTRAP_P12 -passin stdin -passout stdin << EOF
+#openssl pkcs12 -name $FQI -export -in $BOOTSTRAP_CRT -inkey $BOOTSTRAP_KEY -CAfile $SIGNER_CRT -out $BOOTSTRAP_P12 -passin stdin -passout stdin << EOF
+openssl pkcs12 -name $FQI -export -in $BOOTSTRAP_CHAIN -inkey $BOOTSTRAP_KEY -out $BOOTSTRAP_P12 -passin stdin -passout stdin << EOF
 $PASSPHRASE
 $PASSPHRASE
 $PASSPHRASE
 EOF
 
+# Make Issuer name
+ISSUER=$(openssl x509 -subject -noout -in $SIGNER_CRT | cut -c 9- | sed -e 's/ = /=/g' -e 's/\//, /g')
+for I in $ISSUER; do
+  if [ -z "$REVERSE" ]; then
+    REVERSE="${I%,}"
+  else
+    REVERSE="${I%,}, ${REVERSE}"
+  fi
+done
+echo "$REVERSE" > $BOOTSTRAP_ISSUER
+
 # Cleanup
-rm -f $BOOTSTRAP_SAN $BOOTSTRAP_KEY $BOOTSTRAP_CSR $BOOTSTRAP_CRT $SIGNER_KEY $SIGNER_CRT 
+rm -f $BOOTSTRAP_SAN $BOOTSTRAP_KEY $BOOTSTRAP_CSR $BOOTSTRAP_CRT $SIGNER_KEY $SIGNER_CRT $BOOTSTRAP_CHAIN