Add EJBCA setup to AAF Cert Service CSITs 45/102845/1
authorAleksandra Maciaga <aleksandra.maciaga@nokia.com>
Tue, 3 Mar 2020 11:35:16 +0000 (12:35 +0100)
committerAleksandra Maciaga <aleksandra.maciaga@nokia.com>
Tue, 3 Mar 2020 11:35:16 +0000 (12:35 +0100)
Signed-off-by: Aleksandra Maciaga <aleksandra.maciaga@nokia.com>
Issue-ID: AAF-997
Change-Id: I61942341d1db495a3b8757391a5dd132c236473c

plans/aaf/certservice/docker-compose.yml [new file with mode: 0644]
plans/aaf/certservice/scripts/ejbca-configuration.sh [new file with mode: 0755]
plans/aaf/certservice/setup.sh
plans/aaf/certservice/teardown.sh

diff --git a/plans/aaf/certservice/docker-compose.yml b/plans/aaf/certservice/docker-compose.yml
new file mode 100644 (file)
index 0000000..84da735
--- /dev/null
@@ -0,0 +1,33 @@
+version: "2.1"
+
+services:
+  ejbca:
+    image: primekey/ejbca-ce
+    hostname: cahostname
+    container_name: aafcert-ejbca
+    ports:
+        - "80:8080"
+        - "443:8443"
+    volumes:
+        - $SCRIPTS_PATH:/opt/primekey/scripts
+    command: bash -c "
+      ./scripts/ejbca-configuration.sh &
+      /opt/primekey/bin/start.sh
+      "
+    healthcheck:
+      test: ["CMD-SHELL", "curl -kI https://localhost:8443/ejbca/publicweb/healthcheck/ejbcahealth"]
+      interval: 10s
+      timeout: 3s
+      retries: 9
+
+  certservice:
+    image: nexus3.onap.org:10001/onap/org.onap.aaf.certservice.aaf-certservice-api:latest
+    volumes:
+      - $CONFIGURATION_PATH:/etc/onap/aaf/certservice/cmpServers.json
+    container_name: aafcert
+    ports:
+      - "8080:8080"
+    depends_on:
+      ejbca:
+        condition: service_healthy
+
diff --git a/plans/aaf/certservice/scripts/ejbca-configuration.sh b/plans/aaf/certservice/scripts/ejbca-configuration.sh
new file mode 100755 (executable)
index 0000000..cdff77d
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+waitForEjbcaStartUp() {
+    sleep $1
+}
+
+configureEjbca() {
+    ejbca.sh config cmp addalias --alias cmpRA
+    ejbca.sh config cmp updatealias --alias cmpRA --key operationmode --value ra
+    ejbca.sh ca editca --caname ManagementCA --field cmpRaAuthSecret --value mypassword
+    ejbca.sh config cmp dumpalias --alias cmpRA
+    ejbca.sh config cmp addalias --alias cmp
+    ejbca.sh config cmp updatealias --alias cmp --key allowautomatickeyupdate --value true
+    ejbca.sh ra addendentity --username Node123 --dn "CN=Node123" --caname ManagementCA --password mypassword --type 1 --token USERGENERATED
+    ejbca.sh ra setclearpwd --username Node123 --password mypassword
+    ejbca.sh config cmp updatealias --alias cmp --key extractusernamecomponent --value CN
+    ejbca.sh config cmp dumpalias --alias cmp
+    ejbca.sh ca getcacert --caname ManagementCA -f /dev/stdout > cacert.pem
+}
+
+waitForEjbcaStartUp 30
+configureEjbca
index 1bf5747..4911e47 100644 (file)
 # limitations under the License.
 #
 
-AAFCERT_IMAGE=nexus3.onap.org:10001/onap/org.onap.aaf.certservice.aaf-certservice-api:latest
-
-echo AAFCERT_IMAGE=${AAFCERT_IMAGE}
-
 # ------------------------------------
-# Resolve path to cmp servers configuration
+# Resolve path to script's folder and cmp servers configuration
 
 SCRIPT=`realpath $0`
 CURRENT_WORKDIR_PATH=`dirname $SCRIPT`
 
+SCRIPTS_DIRECTORY="scripts"
+if test -d "$CURRENT_WORKDIR_PATH/plans/aaf/certservice/$SCRIPTS_DIRECTORY"; then
+    SCRIPTS_PATH="$CURRENT_WORKDIR_PATH/plans/aaf/certservice/$SCRIPTS_DIRECTORY"
+else test -f "$CURRENT_WORKDIR_PATH/$SCRIPTS_DIRECTORY";
+    SCRIPTS_PATH=$CURRENT_WORKDIR_PATH/$SCRIPTS_DIRECTORY
+fi
+echo "Use scripts from: $SCRIPTS_PATH"
+
 CONFIGURATION_FILE="cmpServers.json"
 if test -f "$CURRENT_WORKDIR_PATH/plans/aaf/certservice/$CONFIGURATION_FILE"; then
     CONFIGURATION_PATH="$CURRENT_WORKDIR_PATH/plans/aaf/certservice/$CONFIGURATION_FILE"
@@ -32,14 +36,17 @@ else test -f "$CURRENT_WORKDIR_PATH/$CONFIGURATION_FILE";
     CONFIGURATION_PATH=$CURRENT_WORKDIR_PATH/$CONFIGURATION_FILE
 fi
 echo "Use configuration from: $CONFIGURATION_PATH"
+
 # -------------------------------------
 
-# Start AAF Cert Srevice
-docker run -p 8080:8080 -d --mount type=bind,source=${CONFIGURATION_PATH},target=/etc/onap/aaf/certservice/cmpServers.json --name aafcert ${AAFCERT_IMAGE}
+export CONFIGURATION_PATH=${CONFIGURATION_PATH}
+export SCRIPTS_PATH=${SCRIPTS_PATH}
+
+docker-compose up -d
 
 AAFCERT_IP=`get-instance-ip.sh aafcert`
 export AAFCERT_IP=${AAFCERT_IP}
 
 # Wait container ready
-sleep 5
+sleep 10
 
index a613944..3f10eae 100644 (file)
@@ -15,4 +15,5 @@
 # limitations under the License.
 #
 
-kill-instance.sh aafcert
\ No newline at end of file
+kill-instance.sh aafcert
+kill-instance.sh aafcert-ejbca
\ No newline at end of file