diff --git a/libopflex/comms/README.md b/libopflex/comms/README.md
new file mode 100644
index 00000000..4ad6e37b
--- /dev/null
+++ b/libopflex/comms/README.md
@@ -0,0 +1,14 @@
+The test directory has certificate and private key files
+used for communications library unit tests. These
+certificates need to be renewed from time to time. When
+the certs have expired, UTs will fail due to SSL not being
+able to decrypt messages.
+
+To generate new certificates, run the shell script in this
+directory:
+
$ sh ./create-new-certs.sh noironetworks.com
+
+
+You can verify that the certs are valid using:
+$ openssl verify -CAfile test/ca.pem test/server.pem
+
diff --git a/libopflex/comms/create-new-certs.sh b/libopflex/comms/create-new-certs.sh
new file mode 100755
index 00000000..8a87a214
--- /dev/null
+++ b/libopflex/comms/create-new-certs.sh
@@ -0,0 +1,81 @@
+#! /bin/bash
+
+if [ "$#" -ne 1 ]
+then
+ echo "Error: No domain name argument provided"
+ echo "Usage: Provide a domain name as an argument"
+ exit 1
+fi
+
+DOMAIN=$1
+
+# Create root CA & Private key
+
+openssl req -x509 \
+ -sha256 -days 356 \
+ -nodes \
+ -newkey rsa:2048 \
+ -subj "/CN=${DOMAIN}/C=US/L=San Fransisco" \
+ -keyout rootCA.key -out test/ca.pem
+
+# Generate Private key
+
+openssl genrsa -out "${DOMAIN}.key" 2048
+
+# Create csf conf
+
+cat > csr.conf < cert.conf < test/server.pem
+cat "${DOMAIN}.crt" >> test/server.pem
diff --git a/libopflex/comms/test/ca.pem b/libopflex/comms/test/ca.pem
index 741c84bc..4ba4ac0c 100644
--- a/libopflex/comms/test/ca.pem
+++ b/libopflex/comms/test/ca.pem
@@ -1,31 +1,21 @@
-----BEGIN CERTIFICATE-----
-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
+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
+X928/kak3A==
-----END CERTIFICATE-----
diff --git a/libopflex/comms/test/server.pem b/libopflex/comms/test/server.pem
index cee7b058..e26e0aa1 100644
--- a/libopflex/comms/test/server.pem
+++ b/libopflex/comms/test/server.pem
@@ -1,52 +1,49 @@
-----BEGIN RSA PRIVATE KEY-----
-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
+MIIEowIBAAKCAQEAvwTwoA9pNpazpLVGhV5o+inH/BlKfJALPWJpwAl6bZ6M1kWD
+HXblav0ixBfqMqRM83Q1z6VigJC7UUCbU+9LpgkF5+i4XIMxcgorqwRQL81V4Zkm
+kHyMixdpzQno4QGfV/iEKn0NjI0Brmg87rz03gvnOUxnELdQUUfFicEZajjon278
+ejoEPkdjx512js23qQRg7lyERfTPX3oy8nmZ5GXS2MwWr4XXm6vuzX4Oceq/JjA/
+VkCKs0m59N6w9i2eI15mCWF7k3i5cbt0Je7PCnm+jHxAoqzMKRgFazKrUuW7C8/h
+AZLuNNqdQqAXJqL31drprDIhwql/yaGJTbSFTwIDAQABAoIBAGTAb0aNOlpvnGso
+rfyUclxYg0Hl+RLASx1idhKzLR76fKBb46870f/famHxlzaE0I2sYuGWAuF69UID
+CKp50fXOVo4egndRP1g+IxA94ymDbWPjiqK0/tAyVjyumGVtnKUi0Fs0wFu82AEs
+u87UXXds4dWoBcicV8G3UGq7LfOHDAdhrZ86RfebNBti9USZ/r71i44f7TBQ7qaK
+iDV6qinycfxWqUbn0jKz36T0gdaup1TsqTkSi3GVM60jsVpuT0YweCjv2ouLQwdh
+xiDJG6BBA/UDzCInxfKZs+wSMxuXT5rqwlp2IlGH9qfanx1heQykRYsMNVNw8JgD
+DKE+2ckCgYEA9q9nb9XhyfyypZkxK3hcDHZlCdYewzY5ZPdAo6A1ADSGB8ThYJf4
+iesm2jXK9GByi3thr9GnSUixI2QkAD7I382gS7K/I5KspwEIF49Sk3M5XfkNOBJN
+UX8q3IBrYtX9EF0nogAHHK5jzTL+h2kTEG3P9tBR/caAPuX2v6mEbM0CgYEAxjtw
+SKB299GUiaOz1kFd4KlMyGKjLPxm2vGcSE5YAadtTGa/Q4DsKFZw9qMPJNt0YVmY
+AA19vR+sUMjL8UII3E9zEEsBvFXc4viUCc7wGB8Km9pCG63P6FAYaA3b/R6bOMFo
+AVmodW9t/azmoRPjcHtEINjiqchgh+mOturDOosCgYA5qlcrtXvKk9/PBjiQSNp7
+r1F/MyaNy6cvCv15QoIhQiXyuvtUcTIQS4ARknGXHtSn9nenegL5Bp0iAM7Jn+Ol
+LZRDHc3AqxDhGUSi/UX4Yf8PEKEecmjQnEGQuhRgTlWR9bTGEeuXsMxzs2/8h3uF
+Y6YxtBD2mehwy6EavK3QIQKBgAxMb8Dxw6/IXvDTKTsnvw1LM6pTBFCsMC1xRALw
+aWFg49UTotYrT3uJMWT75NqiiuvnRRjrvVtYdbZlXtHPCQGyJC9kl+z5XsTuKzEY
+l6jHdD8LIYLaG8YMAheilH11wqeYyD0dNOhkS2yrp3ti4n9+BlILYrSp6+NCyEns
+8sPVAoGBAOYS5Nq7KvHQpOuB2vLolyzf9xtLBP+UDXq8hDMjBKDuT79mwzjcW9qL
+aHwGsA3Kx0cDpgkHTW/K2XMyvx7kVufAL7HBchBCFDM8B25cKTA/QknCv9iOot4J
+ETs5r6MQcT4kxisGJwbytR9zWpTgQylL9y4C0IbscTZs2BeQuVpl
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
-MIIEITCCAgkCFEbGx7F+swnPAiZjkeqbh9gVTnyfMA0GCSqGSIb3DQEBCwUAMEUx
-CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl
-cm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMjIwNDI2MDEyNTQwWhcNMjMwOTA4MDEy
-NTQwWjBVMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UE
-CgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMQ4wDAYDVQQDDAVub2lybzCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKti0wpBgdmBkdHNqrI6XRq1ov4U
-+Qbf9h5vc/fNg8Qyt1x2n8cxvjjRkfNQKrwi1QPGzILgyTreAnOC6zX91uHtvcZ6
-qhCJ6SWCsz0B2mSS4eg+7Woq7NPJWGtax0xG961IDxJtY6eh38NGz263isNBueuC
-JCHRwff20Qt8vnA+XmPHlKETEw1C/PV7pR+y0wXzBuDUL4A6QeUTap15Mmy37dtL
-LVBuPderrMPg14chYDgP3OQ06j6IX54w7azwy1xA0QJluH0YNwu/Ej4SYK9lRJic
-z1nHiIayws7qpRpM2kOzwWQxmOvU+p8bUKlU2c7+jzrmlTJRas9MO0hepfcCAwEA
-ATANBgkqhkiG9w0BAQsFAAOCAgEAYf3KcJd68CVaG+DwWOESCBHxmHzVM20flxaR
-/gmjmIthOWXl/E7XJdmUOmxFxyVe1CSOlOxRuS7ZkT3cmWsuOVJlDxKADZl/vGA7
-76H66JQd7lDMD8nKlMDcp9qPwa3AeE9n0r07dbHQKMov/mj9bJH1BWcMe1VsukM7
-HVIr1quLpcxOGBOr3AqL4ep3Wtj8Rc/RQnzqE78pQJ1x9qyKf9ccspi0cgN6m8Qp
-SaLlpwizGLfn1tlyq/v4aAf/NBKYvCXvKQ+/4RQJMaRExvKjbNtDS0lGtfbWCnlO
-MVs1a+PJKV9z7/NL/bd4SJU8//362eykGMW+9miR5IcL42FnoppbrVaWEHxevIq8
-hAcaNJpfJASjI6WHkBzr2FLsdISBAV4LrAheXR9L5GiSS3IrG6p+MOo3y+BJLcE4
-KhxxUJgJHrKnVVKxFuoxrlaz/Cd/qjyeRTFJVvbHPYdn9Uc5ca2evKEPfDEbAg/n
-EGr0HUJFHyo96pG5FBeClHQSJdA4tl1AVFo/rvlCHw1xCc+lY4aZKpkCDk1u3s2U
-A7yUgZPw2YcqOMH3UXPApQiw61qShAJHTS5vodDPsPrH2ygz/CfnY4svw2ne0fiw
-XhK5jhU/g1dcqg3pOyfZqi2G4+wbLZnR2o7R8ke5279QbZB8PM8zhWV9XZHxkaMl
-sMaElas=
+MIIDqTCCApGgAwIBAgIUKEAZwGic1krXySWeBBQVJgdDh5swDQYJKoZIhvcNAQEL
+BQAwQTEaMBgGA1UEAwwRbm9pcm9uZXR3b3Jrcy5jb20xCzAJBgNVBAYTAlVTMRYw
+FAYDVQQHDA1TYW4gRnJhbnNpc2NvMB4XDTIzMTAyOTEyMjQzN1oXDTI0MTAyODEy
+MjQzN1owgYAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYD
+VQQHDA1TYW4gRnJhbnNpc2NvMREwDwYDVQQKDAhNTG9wc0h1YjEVMBMGA1UECwwM
+TWxvcHNIdWIgRGV2MRowGAYDVQQDDBFub2lyb25ldHdvcmtzLmNvbTCCASIwDQYJ
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBAL8E8KAPaTaWs6S1RoVeaPopx/wZSnyQ
+Cz1iacAJem2ejNZFgx125Wr9IsQX6jKkTPN0Nc+lYoCQu1FAm1PvS6YJBefouFyD
+MXIKK6sEUC/NVeGZJpB8jIsXac0J6OEBn1f4hCp9DYyNAa5oPO689N4L5zlMZxC3
+UFFHxYnBGWo46J9u/Ho6BD5HY8eddo7Nt6kEYO5chEX0z196MvJ5meRl0tjMFq+F
+15ur7s1+DnHqvyYwP1ZAirNJufTesPYtniNeZglhe5N4uXG7dCXuzwp5vox8QKKs
+zCkYBWsyq1LluwvP4QGS7jTanUKgFyai99Xa6awyIcKpf8mhiU20hU8CAwEAAaNZ
+MFcwHwYDVR0jBBgwFoAUmgFbqWSWWBy+bYEOCzuILUxoGKwwCQYDVR0TBAIwADAL
+BgNVHQ8EBAMCBPAwHAYDVR0RBBUwE4IRbm9pcm9uZXR3b3Jrcy5jb20wDQYJKoZI
+hvcNAQELBQADggEBAHb/0MyEGg61p6amomuwe9h5xTCWgVmGGuiRWMNpwWcjQdGT
+gMs9YfsiQLm/Jf2BIzubobQHerMuPcN6083KkA/VggOEyy5awFVDnBug5nqx5xiC
+q1WMRje+RCCZvjAadtnActS5UL8/YBj6E552rdjAhtXp9VOpntWlj+lRN7Eum8MO
+Jbp8aE/BZxAt+QRF1x80Xtgxuu3tPWoNqFMherZlxf+t2eQn/nlevgHhLjSFQUVW
+vfFZYtZabqHVJtuIt3HF9ut+KjWrBbUE9hf3atlp3GLSSUaZSMeOnzEIqs2rgo5V
+lffWiv4B2Vpm2d9rHew9B+wKVGNZRMXv3yX6ub0=
-----END CERTIFICATE-----