aboutsummaryrefslogtreecommitdiffstats
path: root/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl
diff options
context:
space:
mode:
authorPiotr Jaszczyk <piotr.jaszczyk@nokia.com>2018-09-21 11:31:59 +0200
committerPiotr Jaszczyk <piotr.jaszczyk@nokia.com>2018-09-25 08:40:25 +0200
commite4bd899f657daa88274f1419314f43953a6bc1ef (patch)
tree387b84c7f7e922a304acd960068b82eefdd53e3b /test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl
parentb4c9fdb2aca5d283e16354c488460252c68c7d67 (diff)
Use PKCS12 key and trust store in HV-VES Collector
Usage of keystore and truststore allows us to use JDK security framework instead of openssl JNI bindings which are sometimes problematic. * Replace openssl with keytool when generating the scripts Change-Id: Icaa21cd1db443b1dd8fe7e7c0523123df5ea2545 Issue-ID: DCAEGEN2-816 Signed-off-by: Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
Diffstat (limited to 'test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl')
-rw-r--r--test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/.gitignore6
-rw-r--r--test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/Makefile-openssl (renamed from test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/Makefile)15
-rw-r--r--test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/README.md38
-rwxr-xr-xtest/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/gen-certs.sh59
4 files changed, 114 insertions, 4 deletions
diff --git a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/.gitignore b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/.gitignore
new file mode 100644
index 000000000..0729569ce
--- /dev/null
+++ b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/.gitignore
@@ -0,0 +1,6 @@
+*.crt
+*.key
+*.srl
+*.csr
+*.pkcs12
+*.p12
diff --git a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/Makefile b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/Makefile-openssl
index 5fddc6b1d..a32d30dd0 100644
--- a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/Makefile
+++ b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/Makefile-openssl
@@ -1,12 +1,13 @@
FILE=sample
-CA_PASSWD=onap
+PASSWD=onaponap
+CA_PASSWD=onaponap
SUBJ=/C=PL/ST=DL/L=Wroclaw/O=Nokia/OU=MANO
CA=trust
sign: $(FILE).crt
clean:
- rm -f *.crt *.key *.srl *.csr
+ rm -f *.crt *.key *.srl *.csr *.pkcs12
generate-ca-certificate: $(CA).crt
@@ -16,6 +17,11 @@ create-public-key: $(FILE).pub
create-sign-request: $(FILE).csr
+create-key-store: $(FILE).ks.pkcs12
+
+create-trust-store: $(CA).crt
+ openssl pkcs12 -export -in $(CA).crt -CAfile $(CA).crt -out $(CA).pkcs12 -nokeys -noiter -nomaciter -passout pass:$(PASSWD)
+
$(CA).crt:
openssl req -new -x509 -keyout $(CA).key -out $(CA).crt -days 365 -passout pass:$(CA_PASSWD) -subj "$(SUBJ)"
@@ -29,4 +35,7 @@ $(FILE).csr: $(FILE).key
openssl req -new -sha256 -key $(FILE).key -out $(FILE).csr -subj "$(SUBJ)"
$(FILE).crt: $(CA).crt $(FILE).csr
- openssl x509 -req -days 360 -in $(FILE).csr -CA $(CA).crt -CAkey $(CA).key -out $(FILE).crt -CAcreateserial -passin pass:$(CA_PASSWD) \ No newline at end of file
+ openssl x509 -req -days 360 -in $(FILE).csr -CA $(CA).crt -CAkey $(CA).key -out $(FILE).crt -CAcreateserial -passin pass:$(CA_PASSWD)
+
+$(FILE).ks.pkcs12: $(FILE).key $(FILE).crt $(CA).crt
+ openssl pkcs12 -export -in $(FILE).crt -inkey $(FILE).key -CAfile $(CA).crt -out $(FILE).ks.pkcs12 -noiter -nomaciter -passout pass:$(PASSWD)
diff --git a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/README.md b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/README.md
index 174c16641..c2819d249 100644
--- a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/README.md
+++ b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/README.md
@@ -1,5 +1,23 @@
# Generating SSL certificates
+## Java keytool way (recommended)
+
+To generate:
+
+```shell
+./gen-certs.sh
+```
+
+To clean (remove generated files):
+
+```shell
+./gen-certs.sh clean
+```
+
+## OpenSSL way (currently might not work)
+
+> Add `-f Makefile-openssl` to each command
+
Typical usage:
```shell
@@ -7,12 +25,30 @@ make FILE=client
make FILE=server
```
+or (to generate PKCS12 key and trust stores):
+
+```shell
+make create-key-store FILE=client
+make create-key-store FILE=server
+make create-trust-store
+```
+
Will generate CA certificate and signed client and server certificates.
More "low-level" usage:
```shell
make generate-ca-certificate
-make generate-private-key FILE=client
+make generate-private-key FILE=client
make sign FILE=client
```
+
+# Connecting to a server
+
+First generate *client* and *server* certificates. Then start a server with it's cert and make ca.crt a trusted certification authority.
+
+After that you can:
+
+```shell
+./connect.sh client localhost:8600 < file_with_a_data_to_be_sent.dat
+```
diff --git a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/gen-certs.sh b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/gen-certs.sh
new file mode 100755
index 000000000..34572f7a7
--- /dev/null
+++ b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/gen-certs.sh
@@ -0,0 +1,59 @@
+#!/usr/bin/env bash
+
+set -eu -o pipefail -o xtrace
+
+STORE_PASS=onaponap
+CN_PREFIX=dcaegen2-hvves
+DNAME_PREFIX="C=PL,ST=DL,L=Wroclaw,O=Nokia,OU=MANO,CN=${CN_PREFIX}"
+
+store_opts="-storetype PKCS12 -storepass ${STORE_PASS} -noprompt"
+
+function gen_key() {
+ local key_name="$1"
+ local ca="$2"
+ local keystore="-keystore ${key_name}.p12 ${store_opts}"
+ keytool -genkey -alias ${key_name} \
+ ${keystore} \
+ -keyalg RSA \
+ -validity 730 \
+ -keysize 2048 \
+ -dname "${DNAME_PREFIX}-${key_name}"
+ keytool -import -trustcacerts -alias ${ca} -file ${ca}.crt ${keystore}
+
+ keytool -certreq -alias ${key_name} -keyalg RSA ${keystore} | \
+ keytool -alias ${ca} -gencert -ext "san=dns:${CN_PREFIX}-${ca}" ${store_opts} -keystore ${ca}.p12 | \
+ keytool -alias ${key_name} -importcert ${keystore}
+}
+
+
+function gen_ca() {
+ local ca="$1"
+ keytool -genkeypair ${store_opts} -alias ${ca} -dname "${DNAME_PREFIX}-${ca}" -keystore ${ca}.p12
+ keytool -export -alias ${ca} -file ${ca}.crt ${store_opts} -keystore ${ca}.p12
+}
+
+function gen_truststore() {
+ local name="$1"
+ local trusted_ca="$2"
+ keytool -import -trustcacerts -alias ca -file ${trusted_ca}.crt ${store_opts} -keystore ${name}.p12
+}
+
+function clean() {
+ rm -f *.crt *.p12
+}
+
+if [[ $# -eq 0 ]]; then
+ gen_ca ca
+ gen_ca untrustedca
+ gen_truststore trust ca
+ gen_truststore untrustedtrust untrustedca
+ gen_key client ca
+ gen_key server ca
+ gen_key untrustedclient untrustedca
+elif [[ $1 == "clean" ]]; then
+ clean
+else
+ echo "usage: $0 [clean]"
+ exit 1
+fi
+