+#!/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
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
# 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