Update certificates for OpenFlow TLS connection 97/97997/1
authorSangwook Ha <sangwook.ha@verizon.com>
Wed, 20 Oct 2021 05:48:10 +0000 (22:48 -0700)
committerSangwook Ha <sangwook.ha@verizon.com>
Wed, 20 Oct 2021 05:48:10 +0000 (22:48 -0700)
Certificate chains with intermediate CAs, currently used for
the OpenFlow channel TLS connection for testing, is not supported
by Open vSwitch.

Replace certificates/keystores for the switch & controller with
the ones signed directly by the root CA and create a new script,
gen-certs.sh, to make it easier to generate new certificates.

Also, fix an error in MininetKeywords in executing 'ovs-vsctl get-ssl'
command.

Signed-off-by: Sangwook Ha <sangwook.ha@verizon.com>
Change-Id: Ieb0c3c4f8285336a4ed4b48412c5d0e2fc7b27cb

csit/libraries/MininetKeywords.robot
csit/libraries/tls/cachain.crt
csit/libraries/tls/gen-certs.sh [new file with mode: 0755]
csit/libraries/tls/keystore.p12
csit/libraries/tls/switch.crt
csit/libraries/tls/switch.key
csit/libraries/tls/truststore.p12

index 209b71f4bb1b7069bb41bb3eea518f8a2de24e58..ebe41e16e7bbb03b0d4efc2f3a19dbe5418348ea 100644 (file)
@@ -222,5 +222,5 @@ Install Certificates In Mininet
     Comment    Install Certificates
     SSHLibrary.Execute Command    sudo mv ${switch_private_key} /etc/openvswitch && sudo mv ${switch_certificate} /etc/openvswitch && sudo mv ${controller_ca_list} /etc/openvswitch
     SSHLibrary.Execute Command    sudo ovs-vsctl set-ssl /etc/openvswitch/${switch_private_key} /etc/openvswitch/${switch_certificate} /etc/openvswitch/${controller_ca_list}
-    ${std_out}=    SSHLibrary.Execute Command    .    sudo ovs-vsctl get-ssl
+    ${std_out}=    SSHLibrary.Execute Command    sudo ovs-vsctl get-ssl
     Log    ${std_out}
index c782e80f3af41dd383c07a8e6b97efa2f6e789ab..3c11a84cc2f612851ac78549d8e2c8f7c0b81f16 100644 (file)
@@ -1,95 +1,33 @@
 -----BEGIN CERTIFICATE-----
-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
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIFXjCCA0YCAQEwDQYJKoZIhvcNAQELBQAwdTELMAkGA1UEBhMCVVMxCzAJBgNV
-BAgMAkNBMRIwEAYDVQQHDAlQYWxvIEFsdG8xGDAWBgNVBAoMD0x1bWluYSBOZXR3
-b3JrczENMAsGA1UECwwEUm9vdDEcMBoGA1UEAwwTUm9vdCBDQSBDZXJ0aWZpY2F0
-ZTAeFw0xODA1MjQwMjU0MjFaFw0yMzA1MjMwMjU0MjFaMHUxCzAJBgNVBAYTAlVT
-MQswCQYDVQQIDAJDQTESMBAGA1UEBwwJUGFsbyBBbHRvMRgwFgYDVQQKDA9MdW1p
-bmEgTmV0d29ya3MxDTALBgNVBAsMBEludDExHDAaBgNVBAMME0ludDEgQ0EgY2Vy
-dGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCs8aGBWyGh
-B7jdfNHipWPxRdOB1q/cafg/h5FfJ8ytWHX8oFRqecbjiDjMXL/40oGOJC8z44Ah
-6R6PBSnhhlvmJhKJBE1lUOVRvpYNGeaD8Nh8sqr32ZE+9Ie/ddAqAwTpuWy2hH4N
-svGZvSjqXS0GM/0BVEGXRVO8NSkVdESOdBScHmAn3flB6lQIteVpgsyfPrfd1rVY
-cXY4nW8nJTlyTXUgmYzCkUVOnMKl0u3nj2d4wXOWedZ3MMkonL0Vv9ode41HHQk5
-aQuRLDj6ShJm/H5Sa+40W7JfIc5lAkTZQJ7ore1uaRZcI8/2XS4tztnSYFfnyRwD
-uoiGPXq7Brrgj0SRWQXF0pgAw3Pon2Az7IhVbL/dpoEce49yFxg8lTjQKm41P9oE
-cElgLqwtfL00kLcAk9kp6+xG2Hs9bmO3BZ23+mj8NQhPybuL95D0MaXawtH0YHBw
-jh0u7EQoU1D9HARnQU/SgGyWa9Q1scHbcHSbPT9i3i0cBjoQKWSDGLJjah82Wbe8
-xoeJrZsO8ILtDL4/uEBkEO0E3Bjopi6DXOvXc5WUPeqU9tmUBfxHDjrL0T2ykywQ
-S8KF9AxN1ggnKfShYtvC0tfOhzClgWiU60f41nTzgmiXAZmYKqqErVzcfxBAnNzD
-evuVwuXJ75nAne849wO2oqnDA5m6PBPokwIDAQABMA0GCSqGSIb3DQEBCwUAA4IC
-AQBbKXvGjO9tkJ6cdJsML6zyfS5iKmm55PcDd/NdtyoFbpp+FuGB7b4ejqo0KqIF
-EVsROxdd7RLcxvbt5K9/90+RVC13jleoXSOs7jwtOUkPEBsqCez9CLZ9PxeZrk5l
-mUjspoNWZUiaWJ8wHePfRDLYXeSnyOdJpEXLvokfiGW0atUoaANybAal7BAh1/GM
-CXYgUGoAhqzBTsddACDeMFuveLf63GCY1ZeEmYB5S2Wzy82lObbAQMX9pZsGXMSe
-g+bAO0u6/Ym22YzMmdVQ9FiCuaOJtmEPis8VDoE+5F3+eRQtu1SuYO0LUSnLiGYV
-jP60zMUurULzfTJk+W970iF5foIFSZNVuyxm5NvQfBJiU3BQES14RzV2TXooRmNj
-xAnYeE0P8JcV5Hop2n52aDgm1U/684pTCJpDvpRCDWgKc8HkqkRrR3tl9S0Fwl5M
-8VMqYJnpU0k4crOOMEgg/KgVAy9eXlPWPLOmcB08vQAT/ifv1Euod//OF9kW78gi
-oAlAo7PIeQHd+RczpN3fb5CVBqY+jAAfHQ0ORe663jUlCPACMiWEyorEnD3yQMf7
-YGW5DaKTmXBH85XiXtvtQlOGzaW9k4O72ixg+2gX/aA8hbOFCkZq85UHRpdPw+TI
-0xLZWPcE4cTtdwPzo7ZKmgWJpmPTj4GbjIf+RFtM44Zlrg==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-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
+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
+H0zNDYohng==
 -----END CERTIFICATE-----
diff --git a/csit/libraries/tls/gen-certs.sh b/csit/libraries/tls/gen-certs.sh
new file mode 100755 (executable)
index 0000000..2607c18
--- /dev/null
@@ -0,0 +1,217 @@
+#!/usr/bin/env bash
+
+CA_KEY="ca.key"
+CA_CERT="ca.crt"
+
+SWITCH_KEY="switch.key"
+SWITCH_CERT="switch.crt"
+SWITCH_CACHAIN="cachain.crt"
+
+CONTROLLER_KEY="controller.key"
+CONTROLLER_CERT="controller.crt"
+CONTROLLER_KEYSTORE="keystore.p12"
+CONTROLLER_TRUSTSTORE="truststore.p12"
+
+OPENSSL_CONFIG="openssl.conf"
+CA_INDEX="index.txt"
+CERT_SERIAL="serial"
+
+VALID_DAYS="1825" # 5 years
+PASSWORD="opendaylight"
+CA_KEY_LEN="4096"
+CLIENT_KEY_LEN="2048"
+
+WORKDIR="./cert-tmp"
+CERT_FILES_SAVED=(
+    "$SWITCH_KEY"
+    "$SWITCH_CERT"
+    "$SWITCH_CACHAIN"
+    "$CONTROLLER_KEYSTORE"
+    "$CONTROLLER_TRUSTSTORE"
+)
+
+function prep_cert_gen() {
+    rm -rf "$WORKDIR"
+    rm -f "${CERT_FILES_SAVED[@]}"
+    mkdir -p "$WORKDIR"
+}
+
+function post_cleanup() {
+    for i in "${CERT_FILES_SAVED[@]}"; do
+        cp -p "$WORKDIR/$i" .
+    done
+    rm -rf "$WORKDIR"
+}
+
+function create_openssl_config() {
+    touch "$CA_INDEX"
+    echo 1000 >"$CERT_SERIAL"
+    cat <<EOF >"$OPENSSL_CONFIG"
+[ ca ]
+default_ca = CA_default
+
+[ CA_default ]
+new_certs_dir     = .
+database          = $CA_INDEX
+serial            = $CERT_SERIAL
+private_key       = $CA_KEY
+certificate       = $CA_CERT
+policy            = policy_loose
+default_md        = sha256
+
+[ policy_loose ]
+countryName             = optional
+stateOrProvinceName     = optional
+localityName            = optional
+organizationName        = optional
+organizationalUnitName  = optional
+commonName              = supplied
+emailAddress            = optional
+
+[ req ]
+default_bits        = 2048
+distinguished_name  = req_distinguished_name
+string_mask         = utf8only
+default_md          = sha256
+
+[ req_distinguished_name ]
+countryName                     = Country Name (2 letter code)
+stateOrProvinceName             = State or Province Name
+localityName                    = Locality Name
+0.organizationName              = Organization Name
+organizationalUnitName          = Organizational Unit Name
+commonName                      = Common Name
+emailAddress                    = Email Address
+
+[ ca_cert ]
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid:always,issuer
+basicConstraints = critical, CA:true
+keyUsage = critical, digitalSignature, cRLSign, keyCertSign
+
+[ client_cert ]
+basicConstraints = CA:FALSE
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid,issuer:always
+keyUsage = critical, digitalSignature, keyEncipherment
+extendedKeyUsage = serverAuth, clientAuth
+EOF
+}
+
+function gen_ca() {
+    echo -e "\\nGenerate CA Key & Certificate"
+    echo -e "-----------------------------"
+
+    echo -e "\\n> Root: Key & Self-Signed Certificate"
+    openssl req \
+        -config "$OPENSSL_CONFIG" \
+        -new \
+        -newkey rsa:"$CA_KEY_LEN" \
+        -x509 \
+        -nodes \
+        -extensions ca_cert \
+        -subj "/C=US/ST=California/L=San Jose/O=Verizon/CN=Root CA" \
+        -days "$VALID_DAYS" \
+        -keyout "$CA_KEY" \
+        -out "$CA_CERT"
+
+    chmod 0600 "$CA_KEY"
+    chmod 0644 "$CA_CERT"
+}
+
+function gen_signed_cert() {
+    local client="$1"
+    local client_key="$2"
+    local client_cert="$3"
+    local client_csr
+
+    client_csr="$(tr '[:upper:]' '[:lower:]' <<<"$client").csr"
+
+    echo -e "\\n> $client: CSR\\n"
+    openssl req \
+        -config "$OPENSSL_CONFIG" \
+        -new \
+        -newkey rsa:"$CLIENT_KEY_LEN" \
+        -nodes \
+        -subj "/C=US/ST=California/L=San Jose/O=Verizon/CN=$client" \
+        -keyout "$client_key" \
+        -out "$client_csr"
+
+    echo -e "\\n> $client: Certificate\\n"
+    openssl ca \
+        -batch \
+        -config "$OPENSSL_CONFIG" \
+        -extensions client_cert \
+        -notext \
+        -days "$VALID_DAYS" \
+        -in "$client_csr" \
+        -out "$client_cert"
+
+    chmod 0600 "$client_key"
+    chmod 0644 "$client_cert"
+}
+
+function gen_keystore() {
+    local client="$1"
+    local client_key="$2"
+    local client_cert="$3"
+    local client_keystore="$4"
+
+    echo -e "\\n> $client: Keystore"
+    openssl pkcs12 \
+        -export \
+        -in "$client_cert" \
+        -inkey "$client_key" \
+        -certfile "$CA_CERT" \
+        -passout "pass:$PASSWORD" \
+        -out "$client_keystore" \
+        -name "$client"
+
+    chmod 0600 "$client_keystore"
+}
+
+function gen_truststore() {
+    local client="$1"
+    local client_truststore="$2"
+
+    echo -e "\\n> $client: Truststore"
+    keytool -importcert \
+        -noprompt \
+        -file "$CA_CERT" \
+        -storetype PKCS12 \
+        -trustcacerts \
+        -alias "rootca" \
+        -keystore "$client_truststore" \
+        -storepass "$PASSWORD"
+
+    chmod 0644 "$client_truststore"
+}
+
+function gen_switch() {
+    echo -e "\\nGenerate Switch Key & Certificate"
+    echo -e "---------------------------------"
+    gen_signed_cert "Switch" "$SWITCH_KEY" "$SWITCH_CERT"
+    cp -p "$CA_CERT" "$SWITCH_CACHAIN"
+}
+
+function gen_controller() {
+    echo -e "\\nGenerate Controller Keystore & Truststore"
+    echo -e "-----------------------------------------"
+    gen_signed_cert "Controller" "$CONTROLLER_KEY" "$CONTROLLER_CERT"
+    gen_keystore "Controller" "$CONTROLLER_KEY" "$CONTROLLER_CERT" "$CONTROLLER_KEYSTORE"
+    gen_truststore "Controller" "$CONTROLLER_TRUSTSTORE"
+}
+
+function run() {
+    prep_cert_gen
+    (
+        cd "$WORKDIR" || exit 1
+        create_openssl_config
+        gen_ca
+        gen_switch
+        gen_controller
+    )
+    post_cleanup
+}
+
+run
index db93c36d563b8410d3fa4b1ec492825853a39ecb..67769b7e1c107490bbe58dc163f23d524447d9b7 100644 (file)
Binary files a/csit/libraries/tls/keystore.p12 and b/csit/libraries/tls/keystore.p12 differ
index bfba60dda52593b621d43e8f89a20d4f4eaf8b36..4fe727a1b0438c66a311fea171406fa0e9b2eef3 100644 (file)
@@ -1,26 +1,30 @@
 -----BEGIN CERTIFICATE-----
-MIIEXzCCAkcCAQEwDQYJKoZIhvcNAQELBQAwdTELMAkGA1UEBhMCVVMxCzAJBgNV
-BAgMAkNBMRIwEAYDVQQHDAlQYWxvIEFsdG8xGDAWBgNVBAoMD0x1bWluYSBOZXR3
-b3JrczENMAsGA1UECwwESW50MjEcMBoGA1UEAwwTSW50MiBDQSBDZXJ0aWZpY2F0
-ZTAeFw0xODA1MjUwMzQzMDNaFw0yMzA1MjQwMzQzMDNaMHYxCzAJBgNVBAYTAlVT
-MQswCQYDVQQIDAJDQTESMBAGA1UEBwwJUGFsbyBBbHRvMRgwFgYDVQQKDA9MdW1p
-bmEgTmV0d29ya3MxDzANBgNVBAsMBlN3aXRjaDEbMBkGA1UEAwwSU3dpdGNoIENl
-cnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5R1xgvq2
-rpQBz9DdpuD2bDMyMWwkHQlZzLhlNWrTnNWtJITY/N7CjqlMdqizT9P7qSQHc66J
-6DE0Dcy+GGd5opoy8MwgDEUqc3Lmg+SLd9sJugzuw89My1pM4B5G26Vhmen1LGJE
-jP8hV6wIhCNAkwotPWC82I7OHKA9UgZQ89YVQUh13B2GPhNPzhXc7HsQRUnoYeQf
-THU4pBchEdQkuVgTDtHEPWdtUUDFDe53mMSq1JyJBU+wCNZF4/+KQy27IK0pDLik
-0stsC7wGz15+rtlhCDM3/HrF8GUaHWredGMyU6PgjyqwDvF3dGqAex5on2dn+teF
-AFixm/InrKyVfwIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQATsPT7c5eFMru9a1+u
-xf5QPQUQSdkN99Y/nodVricebc0K9fZ+ik/vQwwkWAy7JOpSvTvyrPM3rspNdIhg
-+chUZwthFPgI4ZxxpSkz2w8mG/yq/+hehECjJg+13BQi/MDofUB5qc7HCzvyqTHv
-PL/QFiFgXAxQOdY5c8Vvo1fShRSeQGn+6k5UJyY70/7GfLZytZtCf7E2bUlkBE9Z
-IIS+yowuo/vl84OnbKvMdvllXuL9sDVWu1hEXlmIDqJaedZL8gExDuacdJBPz+KV
-a9PWLfLVE0kLQpBevJwa99iZdgLH+zlfxdRuw7+zURav1MVqfKPPxf2ee5q+fRX/
-67xnHPGF79eComRkDyLLvJgeHfSI738qNfiuuMamsuwVGM4HuZcJcX6LSVPCAWlu
-CewB+/ugRh5Bh9OAIA85Kgk5Ykgk/FEkUnrCmOqUb7ZipNQgcfLztGGN2Y9QcsHE
-/z90tFIlq6YblFevOaGazUjOp5ApJyg4oa8FDlseVnF36cJawr4/9hsChhpUw3wB
-Wilei7XfisYdwCgoF6oGacVmm2BKCJt2niPPk1EoYWxgKceGBmc9+VNiCpvYcSYf
-iaBsrTnjVJRycbntllssPnK/izLhmXl5rRp5h4ZPirBBnbJoza1DcoaxFYJxEe9R
-d2lGbP581ke1t4glkeChI0ao4g==
+MIIFIzCCAwugAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwWTELMAkGA1UEBhMCVVMx
+EzARBgNVBAgMCkNhbGlmb3JuaWExETAPBgNVBAcMCFNhbiBKb3NlMRAwDgYDVQQK
+DAdWZXJpem9uMRAwDgYDVQQDDAdSb290IENBMB4XDTIxMTAyMDA1MzM0M1oXDTI2
+MTAxOTA1MzM0M1owWDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWEx
+ETAPBgNVBAcMCFNhbiBKb3NlMRAwDgYDVQQKDAdWZXJpem9uMQ8wDQYDVQQDDAZT
+d2l0Y2gwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC639O9jDABUcDe
+2D+TmFwCEto+1UZxivL7LrbU8joDXj99s8FAqqtvCDu9gaVld2cW1QKOU+0SqDTx
+YV1SRhjzMQuyi61g5HgEQ7MauFo42G/IjtUkltY5/5rlELbwnKcqbnlBVdYdAQWz
+u9NqbjFNe+IpXGefNUh8aEpJ75BpEoFeAiIYi5fuCQzzVtrqXjdzWg0+xlY010LM
+3utSZnoB95B6soTpRq/CTrQnqqcw1t0SXeWAvNppsXZWlGI949O67QGEPr2T2R3Q
+6m3K5ykSRlqpqU1r0lEh0Mve0RrsySthGUiprc0KRJvng8V71VrQCXKQeNcAOQ9y
+j8jqsUwpAgMBAAGjgfUwgfIwCQYDVR0TBAIwADAdBgNVHQ4EFgQUyvqhdsExlLWa
+9t4m/zF9IyfL/9owgZYGA1UdIwSBjjCBi4AU+Czk9cD5EUpnAgsus1UmQl/OBVmh
+XaRbMFkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQH
+DAhTYW4gSm9zZTEQMA4GA1UECgwHVmVyaXpvbjEQMA4GA1UEAwwHUm9vdCBDQYIU
+C/s8O17bCAgEUwuCjvBj07c9h64wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQG
+CCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAm5YJpAdnziJ4
+JfFnOfHrvfSVXZMiKjIj3PqvIPP1lY+3FCsc5RLNZxEdsHMSJZcyI6HSosfW5jK6
+NHSelR6Gskba62NeyWjopfPoDBKkpRZU/40NoNfaoa41yNkJTk5hFrMCHKPktLXS
+I3A46IzTuYDR0NEv0NWEwrAv4Fa3KbACKT+svWQoaIhHw6xYeU3dPdHeHAoknzQO
+tT8CRdXa2gw2+YmZiXxWIn7etWEz3j+dz/C+PWMLbk2TcRDVFaMhGUWZg3zjJehX
+I2bSikYjaXp1mWZqlKZ1cHesEvXHuoYi4/5nI2TNZ3upA5k1h6H0mchy1I2H1EZj
+2cO00bg5TY4cb1csxtFeSe2K5bjdHFGC2K9oufjEK3Vx+/XZwYoyypMQBg9KSFco
+fKm/zlTHPWib0n74cqc+oE8aC8PDFuXGiNUqRL/CHUjgdKgflj+lOgjBHWcZbZIG
+bnQmTZHEaJ34TbNingF/hModX1uAUoMuNrC9/0/2FbhAOXHfFjGO90fPnMA5Ndfd
+1ewWp4orAcexXiUpC9DE4YKGqt0DCtyH7N8YvblMaPhmJkrN50Sz0ipO/yLPlyqq
+XsFPKmn89J1ar5/0AdmGrtr5VizLnY73NGRcb49/ujrc0/d44lDeV8B4w/M3PB2r
+f7uySr5VP/gFvWzd4hetsc52M2s3DX4=
 -----END CERTIFICATE-----
index cd2a657ea890cb8e8cea64d660a6a3ab4d2e136b..c3b56ee7f4c63e364a862c8af5afa3d60182ba39 100644 (file)
@@ -1,27 +1,28 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEA5R1xgvq2rpQBz9DdpuD2bDMyMWwkHQlZzLhlNWrTnNWtJITY
-/N7CjqlMdqizT9P7qSQHc66J6DE0Dcy+GGd5opoy8MwgDEUqc3Lmg+SLd9sJugzu
-w89My1pM4B5G26Vhmen1LGJEjP8hV6wIhCNAkwotPWC82I7OHKA9UgZQ89YVQUh1
-3B2GPhNPzhXc7HsQRUnoYeQfTHU4pBchEdQkuVgTDtHEPWdtUUDFDe53mMSq1JyJ
-BU+wCNZF4/+KQy27IK0pDLik0stsC7wGz15+rtlhCDM3/HrF8GUaHWredGMyU6Pg
-jyqwDvF3dGqAex5on2dn+teFAFixm/InrKyVfwIDAQABAoIBAHtXU3FwqQHoueT3
-iyu4ddCf6wiCMBrVmttD9XBBVzRaL8C2J95RyallaL2EaiuycguHUt+q+aDfRCed
-rkSTB/9KRdwt957DaWwHUiN02MQoTd8z8SHGqo/ayAHrKrg6GwXx1kQTjtXcz0VU
-Xq1MEQpXcy1Us7Vdg4YTmY9byR7Kf4dqQWVTL5I9VyNmJnYUJBz5ZmHRyX89Zc2K
-pOYYUqO1ZwS/qcM2r6knPUyexVU9cgi/S/3F1RZBQos/aUSl6c+yrXHH7JXDSSHj
-wsDduw/uNKz/Nd3YCYGUD4uBT51KPfe4kRmkHOLjsBw6Yc0FLLLmr33TKKnffSWb
-RVSmuzECgYEA+BToRX1mqLgVLWNoosi6C4vpaa2cJzSoU+4WMBj1iQ5HqA3wNv9t
-5cMUc2GbM22dwqC3DhjoAnz2UnOhoxUCTFB2WI2DeLiIXQ0LtpT+s7AeCjJt+F1W
-Q2dnq+4gKWnPK6uodbrISxrMwQP6hi/lzG4t7tI/hDjc5a5v6RG7HkcCgYEA7G2O
-55Z5Aifw0R89qqod5O1n/OKPEZNxok3gW8hlzep+/MLwStI/mhajVEO6pK5SIvBa
-2S3EwmC4fn1kRwDIKOeAnyrGG9vNj/vq7iETfw5O/N21nN5WCXpx3Borqj9LWQUH
-kLCpT5s+4L4Sx/LV6meMMG18LDEbxwPGRTG80wkCgYEAn5NzRR/A5U5j8Oo86FkN
-s1ewMNYH2AA7NqGzjATCDAMvfJ5aokXzvxOZGA708kPUctlGZr8GnnMbTzYqBukA
-rW4kchm1M/YfYRt/KVb170eeSxjdPCFt17WwLhvifEEfjgvBNNmM9SKsCowwnhg5
-TSKiUTjUuoyJKwTl35oULwkCgYA6PYLGabrFXTFlUlzOfbl/ezvyf5zep4OGh8iM
-04DAiNNfUGYBCGnCe3EggM6pYoe5M5wtg6jEeS75ecoJ85da/CwjCVZj5nFs1pG4
-t00mL1Al2jeyvNJU42TI42l+NrlI5IRIkDwk8Ak9M5VMy/UGGRvfkhjUigRdsgBV
-azsogQKBgQDpyW2pjNzIsP3/taQn7E4O621ESlTLdvF9DoBH6lo6iYQsup3hhaDl
-EhXubxZAkZjigQmpriU2vwo7NoyXduDIPPZ+zkGUlULyc8UGcFL0givy6wJq9JIC
-ARzWxzo5tR20Is5njvgZYT56wTMx3feIa2nzPCqHD4htzdW6oFfYFA==
------END RSA PRIVATE KEY-----
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC639O9jDABUcDe
+2D+TmFwCEto+1UZxivL7LrbU8joDXj99s8FAqqtvCDu9gaVld2cW1QKOU+0SqDTx
+YV1SRhjzMQuyi61g5HgEQ7MauFo42G/IjtUkltY5/5rlELbwnKcqbnlBVdYdAQWz
+u9NqbjFNe+IpXGefNUh8aEpJ75BpEoFeAiIYi5fuCQzzVtrqXjdzWg0+xlY010LM
+3utSZnoB95B6soTpRq/CTrQnqqcw1t0SXeWAvNppsXZWlGI949O67QGEPr2T2R3Q
+6m3K5ykSRlqpqU1r0lEh0Mve0RrsySthGUiprc0KRJvng8V71VrQCXKQeNcAOQ9y
+j8jqsUwpAgMBAAECggEAAY6P0wpx8/DcbH7cuLwSOCo0C0X3mkaQE6ul9kw2U4Tb
+fo6a05EYcIpfBQspd5jxEO2hYdItLXSdTE2FW4Qd/RixgkFLpn0AyvhNa7GRftu+
+wqr995oSGtWYUsQ64fJMKjxVYkf2yrMRexfbgQ1996lKjxGoA1mMSw0LYWZPi7CK
+HaODs9tkr4smrrEy0i4PwPXERTwrnNgwzbB/wvmw3w4FGb1HFOtBVUDkHM72vQMF
+VlfF6PL3ambCekXLuinD6IfXccYjCHH6jy7p1ySQsp/G0T5NELOuM7B9h9D1odQ3
+hPDsQMvRkdbEsBfshjZ6wPRU0/hOuKUm8t3abSAuiQKBgQDx7V5RmPCpGrg4+GzP
+cqZdgvNhmil35mwH1bwtzHcDdM2NDeqRSbrWXkrmdDV8Ps+qIH0V0pxXAn6s7Ts+
+rbU2fRs8sHA7hADUPsddTORVrTW5s+wokEPVQ+u1RT2XiIqeF8h9RYk5P+JruEOM
++2qNE1/iNCJlPkIzNm1/VpMomwKBgQDFvqUPnvljmjDW3eaFqfEVeYjKHk+Tv/nu
+ILkIybVlUptn3/HDtPTBtX4Bar91+aSS5Dq29evUWBzOjcqarI1KlSU9CXQbk5cc
+8+hx/Vob+uERAle5fH8OcqtQmGii55jhI5lgny+olMZHOUdu02eJjFRVJHqxE5sn
+PpI1bWLAiwKBgFkhW5tyXk/fATo0BFqVYceX5DT0SAzdfrWQQCkbaEmEseoi02W9
+pTEvQicPb1kcBwQlvg/ZLTI9QBBTwn0AIIA3rV45ns++fVO04Vx1ZLZP/zgwmnQD
+Wopq4J9DKEL40iEWoA3PHZRS/gcztudtBT9+gNfk3zsvqdIWXlcIvWS7AoGAarKd
+mbor0qSGKcn98q1p2i6Dspt8ULrLfsPFU4qTCCL0m63oY7MmRcdKQDV7LYsQU/o1
+/DbhkuggUwuLAL6OVmn3d+G79o1CgmrRR4BuuJ48BtN+xiT44bDZ41j5TL0ubnyo
+68u5CXuNKS0s8A291igT8QUH9rgfhaNrfMyS9lUCgYEAuGilXkXSziSWXCgS3sTW
+bCztuRqOZwAbucIHkUikdq6CS++TwPUUsivQKAgK61u7o8PnKDIycMJ2K5u4OY3b
+X40joy/ImvgvAmf096y6OQpcTMuhicifBwvCCnLSET7Xq2VDs7DAngSDY/T03cDp
+8t2QV4lKUB7RyQBFPucfm4A=
+-----END PRIVATE KEY-----
index 461bb56294c682c58b204c77f9090c1e9cbcc705..1be74f15908f916bad665084a402940800758188 100644 (file)
Binary files a/csit/libraries/tls/truststore.p12 and b/csit/libraries/tls/truststore.p12 differ