diff options
-rw-r--r-- | auth/docker/aaf.sh | 16 | ||||
-rw-r--r-- | auth/docker/d.props.init | 4 | ||||
-rw-r--r-- | auth/sample/bin/service.sh | 5 | ||||
-rw-r--r-- | auth/sample/local/aaf.props | 2 | ||||
-rw-r--r-- | auth/sample/local/org.osaaf.aaf.cm.ca.props | 2 | ||||
-rw-r--r-- | conf/CA/.gitignore | 4 | ||||
-rw-r--r-- | conf/CA/bootstrap.sh | 102 |
7 files changed, 130 insertions, 5 deletions
diff --git a/auth/docker/aaf.sh b/auth/docker/aaf.sh index efd4fe37..5e70403f 100644 --- a/auth/docker/aaf.sh +++ b/auth/docker/aaf.sh @@ -15,13 +15,21 @@ function run_it() { /bin/bash $PARAMS } +function set_prop() { +docker exec -t aaf_config_$USER /bin/bash /opt/app/aaf_config/bin/agent.sh NOOP setProp "$1" "$2" "$3" +} + function encrypt_it() { docker exec -t aaf_config_$USER /bin/bash /opt/app/aaf_config/bin/agent.sh NOOP encrypt "$1" "$2" } +function set_it() { + docker exec -t aaf_config_$USER /bin/bash /opt/app/aaf_config/bin/agent.sh NOOP setProp "$1" "$2" +} + P12_LOAD="no" -for PROP in AAF_INITIAL_X509_P12 AAF_INITIAL_X509_PASSWORD AAF_SIGNER_P12 AAF_SIGNER_PASSWORD; do +for PROP in AAF_INITIAL_X509_P12 AAF_INITIAL_X509_PASSWORD AAF_SIGNER_P12 AAF_SIGNER_PASSWORD CADI_X509_ISSUERS; do if [ "${!PROP}" != "" ]; then P12_LOAD='yes' break; @@ -40,9 +48,15 @@ if [ "$(docker volume ls | grep aaf_config)" = "" ] && [ ${P12_LOAD} = "yes" ]; docker container cp ${AAF_INITIAL_X509_P12} aaf_config_$USER:/opt/app/osaaf/local/org.osaaf.aaf.p12 docker container cp ${AAF_SIGNER_P12} aaf_config_$USER:/opt/app/osaaf/local/org.osaaf.aaf.signer.p12 + set_prop cm_ca.local "${CM_CA_LOCAL}" org.osaaf.aaf.cm.ca.props + set_prop cadi_x509_issuers "${CADI_X509_ISSUERS}" org.osaaf.aaf.props + encrypt_it cadi_keystore_password "${AAF_INITIAL_X509_PASSWORD}" encrypt_it cm_ca.local "${AAF_SIGNER_PASSWORD}" + set_it cadi_x509_issuers "${CADI_X509_ISSUERS}" + + echo -n "Stopping " docker container stop aaf_config_$USER echo -n "Removing " diff --git a/auth/docker/d.props.init b/auth/docker/d.props.init index 782f0c3f..68b06ef4 100644 --- a/auth/docker/d.props.init +++ b/auth/docker/d.props.init @@ -18,9 +18,13 @@ LATITUDE= LONGITUDE= # # Initial AAF Certificate (not Generated) +CADI_X509_ISSUERS="CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US" AAF_INITIAL_X509_P12= AAF_INITIAL_X509_PASSWORD= +CADI_X509_ISSUERS= # CA info (leave blank unless functioning as CA) AAF_SIGNER_P12= AAF_SIGNER_PASSWORD= +CM_CA_LOCAL= + diff --git a/auth/sample/bin/service.sh b/auth/sample/bin/service.sh index 15c3714d..33dca67f 100644 --- a/auth/sample/bin/service.sh +++ b/auth/sample/bin/service.sh @@ -89,9 +89,10 @@ if [ ! "$CMD" = "" ]; then for F in $FILES; do echo "Changing $1 in $F" if [ "$ADD" = "Y" ]; then - echo $2 >> $F + echo "$1=$2" >> $F else - sed -i.backup -e "s/\\(${1}.*=\\).*/\\1${2}/" $F + VALUE=${2//\//\\\/} + sed -i.backup -e "s/\(${1}=\).*/\1${VALUE}/" $F fi cat $F done diff --git a/auth/sample/local/aaf.props b/auth/sample/local/aaf.props index 71ba73a2..4a5d0716 100644 --- a/auth/sample/local/aaf.props +++ b/auth/sample/local/aaf.props @@ -15,7 +15,7 @@ cadi_alias=aaf@aaf.osaaf.org cadi_keystore=/opt/app/osaaf/local/org.osaaf.aaf.p12 cadi_truststore=/opt/app/osaaf/public/truststoreONAPall.jks cadi_truststore_password=changeit -cadi_x509_issuers=CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US +cadi_x509_issuers= # Other aaf_data_dir=/opt/app/osaaf/data diff --git a/auth/sample/local/org.osaaf.aaf.cm.ca.props b/auth/sample/local/org.osaaf.aaf.cm.ca.props index 98e16ce7..b21cf355 100644 --- a/auth/sample/local/org.osaaf.aaf.cm.ca.props +++ b/auth/sample/local/org.osaaf.aaf.cm.ca.props @@ -4,7 +4,7 @@ ## #Certman -cm_ca.local=org.onap.aaf.auth.cm.ca.LocalCA,/opt/app/osaaf/local/org.osaaf.aaf.signer.p12;aaf_intermediate_9;enc: +cm_ca.local= cm_ca.local.idDomains=org.osaaf cm_ca.local.baseSubject=/OU=OSAAF/O=ONAP/C=US cm_ca.local.perm_type=org.osaaf.aaf.ca diff --git a/conf/CA/.gitignore b/conf/CA/.gitignore new file mode 100644 index 00000000..ee117ccf --- /dev/null +++ b/conf/CA/.gitignore @@ -0,0 +1,4 @@ +aaf.bootstrap.p12 +index.txt* +newcerts/ +serial* diff --git a/conf/CA/bootstrap.sh b/conf/CA/bootstrap.sh new file mode 100644 index 00000000..20093ee3 --- /dev/null +++ b/conf/CA/bootstrap.sh @@ -0,0 +1,102 @@ +# +# 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 + +NAME=aaf.bootstrap +FQDN=$(hostname -f) +FQI=aaf@aaf.osaaf.org +SUBJECT="/CN=$FQDN/OU=$FQI`cat subject.aaf`" +SIGNER_P12=$1 +SIGNER_KEY=/tmp/aaf_signer.key +SIGNER_CRT=/tmp/aaf_signer.crt +PASSPHRASE=$2 +if [ "PASSPHRASE" = "" ]; then + PASSPHRASE="something easy" +fi +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 + + +# 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 -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 +$PASSPHRASE +$PASSPHRASE +$PASSPHRASE +EOF + +else + # Get Private key from P12 + openssl pkcs12 -in $SIGNER_P12 -nocerts -nodes -passin stdin -passout stdin -out $SIGNER_KEY << EOF +$PASSPHRASE +$PASSPHRASE +EOF + + # Get Cert from P12 + openssl pkcs12 -in $SIGNER_P12 -clcerts -nokeys -passin stdin -out $SIGNER_CRT << EOF +$PASSPHRASE +EOF + +fi + +# SANS +cp san.conf $BOOTSTRAP_SAN +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 + echo "DNS.$NUM = $D" >> $BOOTSTRAP_SAN + NUM=$((NUM+1)) +done + +# Create CSR +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 \ + -passin stdin \ + -out $BOOTSTRAP_CRT \ + -extfile $BOOTSTRAP_SAN \ + -infiles $BOOTSTRAP_CSR << EOF +$PASSPHRASE +EOF + +# Make a P12 +# Add THIS Intermediate CA into chain +cat $BOOTSTRAP_CRT +cp $BOOTSTRAP_CRT $BOOTSTRAP_CHAIN +cat $SIGNER_CRT >> $BOOTSTRAP_CHAIN + +# Note: Openssl will pickup and load all Certs in the Chain file +openssl pkcs12 -name $FQI -export -in $BOOTSTRAP_CHAIN -inkey $BOOTSTRAP_KEY -out $BOOTSTRAP_P12 -passin stdin -passout stdin << EOF +$PASSPHRASE +$PASSPHRASE +$PASSPHRASE +EOF + +# Cleanup +rm -f $BOOTSTRAP_SAN $BOOTSTRAP_KEY $BOOTSTRAP_CSR $BOOTSTRAP_CRT $BOOTSTRAP_CHAIN $SIGNER_KEY $SIGNER_CRT |