X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=conf%2FCA%2Fbootstrap.sh;h=8454a3a9f7a49c11f11f223900e489ec7278f3f2;hb=28a45e41fc0a699b8213c4c508dea08e0aac46f7;hp=ea7a23ecf91bbe4ff15b8623a069f429eb683ebc;hpb=cc596dd8251ebfc0dab7344da1a501f24dc23a8c;p=aaf%2Fauthz.git diff --git a/conf/CA/bootstrap.sh b/conf/CA/bootstrap.sh index ea7a23ec..8454a3a9 100644 --- a/conf/CA/bootstrap.sh +++ b/conf/CA/bootstrap.sh @@ -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