| #!/bin/bash | 
 |  | 
 | # **make_cert.sh** | 
 |  | 
 | # Create a CA hierarchy (if necessary) and server certificate | 
 | # | 
 | # This mimics the CA structure that DevStack sets up when ``tls_proxy`` is enabled | 
 | # but in the current directory unless ``DATA_DIR`` is set | 
 |  | 
 | ENABLE_TLS=True | 
 | DATA_DIR=${DATA_DIR:-`pwd`/ca-data} | 
 |  | 
 | ROOT_CA_DIR=$DATA_DIR/root | 
 | INT_CA_DIR=$DATA_DIR/int | 
 |  | 
 | # Import common functions | 
 | source $TOP_DIR/functions | 
 |  | 
 | # Import TLS functions | 
 | source lib/tls | 
 |  | 
 | function usage { | 
 |     echo "$0 - Create CA and/or certs" | 
 |     echo "" | 
 |     echo "Usage: $0 commonName [orgUnit]" | 
 |     exit 1 | 
 | } | 
 |  | 
 | CN=$1 | 
 | if [ -z "$CN" ]]; then | 
 |     usage | 
 | fi | 
 | ORG_UNIT_NAME=${2:-$ORG_UNIT_NAME} | 
 |  | 
 | # Useful on OS/X | 
 | if [[ `uname -s` == 'Darwin' && -d /usr/local/Cellar/openssl ]]; then | 
 |     # set up for brew-installed modern OpenSSL | 
 |     OPENSSL_CONF=/usr/local/etc/openssl/openssl.cnf | 
 |     OPENSSL=/usr/local/Cellar/openssl/*/bin/openssl | 
 | fi | 
 |  | 
 | DEVSTACK_CERT_NAME=$CN | 
 | DEVSTACK_HOSTNAME=$CN | 
 | DEVSTACK_CERT=$DATA_DIR/$DEVSTACK_CERT_NAME.pem | 
 |  | 
 | # Make sure the CA is set up | 
 | configure_CA | 
 | fix_system_ca_bundle_path | 
 | init_CA | 
 |  | 
 | # Create the server cert | 
 | make_cert $INT_CA_DIR $DEVSTACK_CERT_NAME $DEVSTACK_HOSTNAME | 
 |  | 
 | # Create a cert bundle | 
 | cat $INT_CA_DIR/private/$DEVSTACK_CERT_NAME.key $INT_CA_DIR/$DEVSTACK_CERT_NAME.crt $INT_CA_DIR/cacert.pem >$DEVSTACK_CERT | 
 |  |