Skip to content

Instantly share code, notes, and snippets.

@gmarik gmarik/client_server.rb Secret
Last active Dec 21, 2015

Embed
What would you like to do?
# Blog post http://gmarik.info/blog/2014/01/14/tls-auth-in-soa
#
# http://www.phildev.net/ssl/
require 'socket'
require 'openssl'
Thread.abort_on_exception = true
def client_name(cn)
cn.split('/').map {|l| l.split('=') }.assoc('CN').last
end
def start_server(ca_file)
socket = TCPServer.new('127.0.0.1', 4433)
ssl_context = OpenSSL::SSL::SSLContext.new()
ssl_context.cert = OpenSSL::X509::Certificate.new(File.open("ssl/server.crt"))
ssl_context.key = OpenSSL::PKey::RSA.new(File.open("ssl/server.key"))
ssl_context.ca_file = ca_file
ssl_context.verify_mode = OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT
ca_cert = OpenSSL::X509::Certificate.new(File.open(ca_file))
ssl_socket = OpenSSL::SSL::SSLServer.new(socket, ssl_context)
Thread.new do
loop do
begin
Thread.start(ssl_socket.accept) do |s|
puts "[Server] connection from #{s.peeraddr.last}"
# get subject from peer certificate
subj = s.peer_cert.subject.to_s
s.puts "[Server] hi #{client_name(subj)}"
# manual certificate verification
if s.peer_cert.verify(ca_cert.public_key)
s.puts "[Server] client certificate verified"
else
s.puts "[Server] client certificate invalid"
end
s.close
end
rescue => e
puts "[Server] ERROR #{e.message}"
end
end
end
end
def ssl_client(crt_file, key_file)
socket = TCPSocket.new('127.0.0.1', 4433)
cssl_context = OpenSSL::SSL::SSLContext.new
cssl_context.cert = OpenSSL::X509::Certificate.new(File.open(crt_file))
cssl_context.key = OpenSSL::PKey::RSA.new(File.open(key_file))
# cssl_context.client_ca = OpenSSL::X509::Certificate.new(File.open("ssl/ca.crt"))
# verify server certificate aswell
cssl_context.verify_mode = OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT
cssl_context.ca_file = 'ssl/ca.crt'
ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, cssl_context)
end
def connect(client)
begin
client.connect
puts client.readlines
rescue => e
puts "[Client] ERROR #{e.message}"
end
end
if __FILE__ == $0
# start server with given CA
start_server('ssl/ca.crt')
# CA2 is not known to the server
# client1.crt used ca.crt as CA, so server recognizes this one
connect(ssl_client('ssl/client1.crt', 'ssl/client1.key'))
# server rejects this one as ca2 CA was used to get the client2.crt ceritifate
# which is not known to server as it's configured with ca.crt
connect(ssl_client('ssl/client2.crt', 'ssl/client2.key'))
end
#! /usr/bin/env bash
# Create the CA Key and Certificate for signing Client Certs
printf "CA\n"
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
# Create another CA2
printf "CA2\n"
openssl genrsa -out ca2.key 4096
openssl req -new -x509 -days 365 -key ca2.key -out ca2.crt
printf "Server\n"
# Create the Server Key, CSR, and Certificate
openssl genrsa -out server.key 1024
openssl req -new -key server.key -out server.csr
printf "Server Cert\n"
# We're self signing our own server cert here.
# This is a no-no in production: get valida cert from valid CA
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
printf "Client with CA1\n"
# Create the Client Key and CSR
openssl genrsa -out client1.key 1024
openssl req -new -key client1.key -out client1.csr
# Sign the client certificate with our CA cert.
openssl x509 -req -days 365 -in client1.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client1.crt
printf "Client2 with CA2\n"
# Create the Client Key and CSR
openssl genrsa -out client2.key 1024
openssl req -new -key client2.key -out client2.csr
# Sign the client certificate with CA2 cert.
openssl x509 -req -days 365 -in client2.csr -CA ca2.crt -CAkey ca2.key -set_serial 01 -out client2.crt
From 2ab05d6b86b0a3a403ab79572a67e4418233397f Mon Sep 17 00:00:00 2001
From: gmarik <gmarik@gmail.com>
Date: Tue, 5 Nov 2013 13:43:43 -0600
Subject: [PATCH] example ssl stuff
---
ssl/ca.crt | 37 +++++++++++++++++++++++++++++++++++++
ssl/ca.key | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
ssl/ca2.crt | 37 +++++++++++++++++++++++++++++++++++++
ssl/ca2.key | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
ssl/client1.crt | 24 ++++++++++++++++++++++++
ssl/client1.csr | 13 +++++++++++++
ssl/client1.key | 15 +++++++++++++++
ssl/client2.crt | 24 ++++++++++++++++++++++++
ssl/client2.csr | 13 +++++++++++++
ssl/client2.key | 15 +++++++++++++++
ssl/server.crt | 24 ++++++++++++++++++++++++
ssl/server.csr | 12 ++++++++++++
ssl/server.key | 15 +++++++++++++++
13 files changed, 331 insertions(+)
create mode 100644 ssl/ca.crt
create mode 100644 ssl/ca.key
create mode 100644 ssl/ca2.crt
create mode 100644 ssl/ca2.key
create mode 100644 ssl/client1.crt
create mode 100644 ssl/client1.csr
create mode 100644 ssl/client1.key
create mode 100644 ssl/client2.crt
create mode 100644 ssl/client2.csr
create mode 100644 ssl/client2.key
create mode 100644 ssl/server.crt
create mode 100644 ssl/server.csr
create mode 100644 ssl/server.key
diff --git a/ssl/ca.crt b/ssl/ca.crt
new file mode 100644
index 0000000..cae729b
--- /dev/null
+++ b/ssl/ca.crt
@@ -0,0 +1,37 @@
+-----BEGIN CERTIFICATE-----
+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
+T/kbc4IoXxiYA7ULZdYqggWxAAQGeIkF
+-----END CERTIFICATE-----
diff --git a/ssl/ca.key b/ssl/ca.key
new file mode 100644
index 0000000..625930c
--- /dev/null
+++ b/ssl/ca.key
@@ -0,0 +1,51 @@
+-----BEGIN RSA PRIVATE KEY-----
+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
+-----END RSA PRIVATE KEY-----
diff --git a/ssl/ca2.crt b/ssl/ca2.crt
new file mode 100644
index 0000000..41224f7
--- /dev/null
+++ b/ssl/ca2.crt
@@ -0,0 +1,37 @@
+-----BEGIN CERTIFICATE-----
+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
+-----END CERTIFICATE-----
diff --git a/ssl/ca2.key b/ssl/ca2.key
new file mode 100644
index 0000000..6679593
--- /dev/null
+++ b/ssl/ca2.key
@@ -0,0 +1,51 @@
+-----BEGIN RSA PRIVATE KEY-----
+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
+-----END RSA PRIVATE KEY-----
diff --git a/ssl/client1.crt b/ssl/client1.crt
new file mode 100644
index 0000000..342beb9
--- /dev/null
+++ b/ssl/client1.crt
@@ -0,0 +1,24 @@
+-----BEGIN CERTIFICATE-----
+MIID+jCCAeICAQEwDQYJKoZIhvcNAQEFBQAwgYIxCzAJBgNVBAYTAkNBMQswCQYD
+VQQIEwJNQjERMA8GA1UEBxMIV2lubmlwZWcxFjAUBgNVBAoTDUNlcnRBdXRob3Jp
+dHkxCzAJBgNVBAsTAklUMRAwDgYDVQQDEwdjYS5mcWRuMRwwGgYJKoZIhvcNAQkB
+Fg1hZG1pbkBjYS5mcWRuMB4XDTEzMTEwNTE5MzQzMFoXDTE0MTEwNTE5MzQzMFow
+gYYxCzAJBgNVBAYTAkNBMQswCQYDVQQIEwJNQjERMA8GA1UEBxMIV2lubmlwZWcx
+EDAOBgNVBAoTB0NsaWVudDExCzAJBgNVBAsTAklUMRUwEwYDVQQDEwxjbGllbnQx
+LmZxZG4xITAfBgkqhkiG9w0BCQEWEmFkbWluQGNsaWVudDEuZnFkbjCBnzANBgkq
+hkiG9w0BAQEFAAOBjQAwgYkCgYEAzhkIYYf1pC9Dw7VLI0SAutUxnmnRftQxmnMV
+OeDLBJyjISuQsFbnmoHJv8g9h3PixZ/JkJ10WYRw7YP8DhLDJy32QAlCj99bGVSH
+zZcwjjakhvLvGT+ze0xIOXT+kpWQvLDjmzqPSmReVcI1qPRSIzgYpVsxKXuALnRU
+YofNc5ECAwEAATANBgkqhkiG9w0BAQUFAAOCAgEAGC2fBDlgs6kM9WPU+9p9CMX9
+Iz/vle0+ANUR9uomLw8eypbpdbYps89eohfNl6znS0Q8y7mO8YyHQU09FJ7RrqxV
+Tfkvy2H0YiJA6+CVnZ2QpQr5NlOf9l8S4Yd/N02JjWPBKzDo6t+M78fZgfMeVU2f
+nOS0YeGq6mf5Q5nHkRFcF5wGXQldgTY5jrogIBVpKXsakzSSZ1m9LIHC15UDYdSB
+6gOb7ulI/wYy31nmBoyyElaRK3M/k+JQDA9McAzEPgb8qoznk+TgVo8IQpKBQyV7
+sBlUylrJTMCsYPM7RKkEMSG3A2LM5a5lz0D5MWpyAs0vAsjx1gB5VpqmH5AxjB2F
+Gqku8Woy8RdhbD31XS0xO9G9Vu1dHEHUT+mfw+hnkPuRKaBcMBlx+lFndZcim/kT
+pMZ4SkokHzRYV8MIspnA3Rg3ueXwTWPe1XiarmysPGV7lsmrbOP+KDGB6uVGJsXz
+KDTvEoKay+7gHfcKY+Q4t3s8Z+8zXQvOgscUb3Xm6ERwSMhZUvPQujG1DTZy58LG
+Ae25jpyePSQxoGkpa9Ot9u0jTQcTcLFbLC20HLecgJ5m2DvWyHGYtKpFYrZYv6Dv
+fnSHQFKfSnEzAhF4J9HsiVj/H+9riSco57eeupOAe0Xa0Sah26BZSoJe6FxVrYHd
+63ZqCDPM0zH6NRcKTWk=
+-----END CERTIFICATE-----
diff --git a/ssl/client1.csr b/ssl/client1.csr
new file mode 100644
index 0000000..fb12c32
--- /dev/null
+++ b/ssl/client1.csr
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIB3zCCAUgCAQAwgYYxCzAJBgNVBAYTAkNBMQswCQYDVQQIEwJNQjERMA8GA1UE
+BxMIV2lubmlwZWcxEDAOBgNVBAoTB0NsaWVudDExCzAJBgNVBAsTAklUMRUwEwYD
+VQQDEwxjbGllbnQxLmZxZG4xITAfBgkqhkiG9w0BCQEWEmFkbWluQGNsaWVudDEu
+ZnFkbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzhkIYYf1pC9Dw7VLI0SA
+utUxnmnRftQxmnMVOeDLBJyjISuQsFbnmoHJv8g9h3PixZ/JkJ10WYRw7YP8DhLD
+Jy32QAlCj99bGVSHzZcwjjakhvLvGT+ze0xIOXT+kpWQvLDjmzqPSmReVcI1qPRS
+IzgYpVsxKXuALnRUYofNc5ECAwEAAaAYMBYGCSqGSIb3DQEJAjEJEwdDbGllbnQx
+MA0GCSqGSIb3DQEBBQUAA4GBAFK7RiWyPBKexYzaSGqnpGDuwYpQEdzWE8o41NLJ
+97Dm1EyJB+YOiYn4PcO6p6vMgTOMf2d02FYS/IoQE7AQlD4ICkiwIeOEz0MZPrAR
+9VJFrEzhKLwQ8Ik4BgS+8PTQcIuqz/T7w3cQXqnf4RlgmqVsYJHfEHQ94U5mMiaF
+JP3C
+-----END CERTIFICATE REQUEST-----
diff --git a/ssl/client1.key b/ssl/client1.key
new file mode 100644
index 0000000..780ac2f
--- /dev/null
+++ b/ssl/client1.key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICWwIBAAKBgQDOGQhhh/WkL0PDtUsjRIC61TGeadF+1DGacxU54MsEnKMhK5Cw
+Vueagcm/yD2Hc+LFn8mQnXRZhHDtg/wOEsMnLfZACUKP31sZVIfNlzCONqSG8u8Z
+P7N7TEg5dP6SlZC8sOObOo9KZF5VwjWo9FIjOBilWzEpe4AudFRih81zkQIDAQAB
+AoGAfqu0Ev3VZEwIgkjzHYIE/M/75zlyoVkaA6un6CLZpMQBH2n/S+KeBsCul0kj
+SBVZ080ZveCImlxkbBcq3Bt8BYT0eUOKGiD1c45Ov6V2WTpbsahojpcFVRKBMD93
+WbVezux6BS6oF1IH+0iJZslZZgQv7QI26rKTkrLmVTn+zgECQQD9CoJWKZuvLihz
+af8Rqd7tumz1L+LUDj3ikru/ZH4YGU69iizFeAwMWaiSUvPTwy1UHZBwXl92MYLI
+xDLnG91ZAkEA0IH/IsfSTns2TvnSde4CGviRCr+6Ngfm+qArfYX9OW8QU2NI4RnZ
+dKXejanENdxmbIKf3E7RSC2jpYGXzh9o+QJAQ32yFdkzNR5Sm7YB2mw8kZvPw/Xp
+wjWqO+x3Ny1OlI7reZKJLoI+dGzVkXGepzS/ulfIVrBVNekuwO3TxeCgwQJAGzB4
+dq6b7AQBJvdIzHwG5kF3mHE79QO+yPvN8AZi6PRkqpsNy9y1EJL4nHyAy408BfZa
+pj3Y6JKa/mARzZ0m8QJANT4KbjzrzY/pxhKT6/jUS6+lWk2XOu6NZxcrUi+uivxA
+eMS3Gq7le5+++ZfgCOtLrn09VcAdLoNPV/iUxDCPrg==
+-----END RSA PRIVATE KEY-----
diff --git a/ssl/client2.crt b/ssl/client2.crt
new file mode 100644
index 0000000..19e6c27
--- /dev/null
+++ b/ssl/client2.crt
@@ -0,0 +1,24 @@
+-----BEGIN CERTIFICATE-----
+MIID/TCCAeUCAQEwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkNBMQswCQYD
+VQQIEwJNQjERMA8GA1UEBxMIV2lubmlwZWcxFzAVBgNVBAoTDkNlcnRBdXRob3Jp
+dHkyMQswCQYDVQQLEwJJVDERMA8GA1UEAxMIY2EyLmZxZG4xHTAbBgkqhkiG9w0B
+CQEWDmFkbWluQGNhMi5mcWRuMB4XDTEzMTEwNTE5MjUyOVoXDTE0MTEwNTE5MjUy
+OVowgYYxCzAJBgNVBAYTAkNBMQswCQYDVQQIEwJNQjERMA8GA1UEBxMIV2lubmlw
+ZWcxEDAOBgNVBAoTB0NsaWVudDIxCzAJBgNVBAsTAklUMRUwEwYDVQQDEwxjbGll
+bnQyLmZxZG4xITAfBgkqhkiG9w0BCQEWEmFkbWluQGNsaWVudDIuZnFkbjCBnzAN
+BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvpQ2GU9R9/7iDXbdu9khPd/cOeeyldKF
+PhUDApU8aKfUH+M+ndB9Ne4ILkEkE3HAmzudDriVyQv0O/esY8yHiooSD6cTmm1H
+2Dsp83vs+uLsWfLce4Ykhy3Utuh/Bvm85FYrVpS55d6YqROwCMCBNTCS9Ran7Z/X
+dX3tfsQ39UUCAwEAATANBgkqhkiG9w0BAQUFAAOCAgEAbn418HoAehBLdRlKIakJ
+LwZr3z049ertZJQYTqf744gVoUQCzNPdpxWCxyalca7nK9W7Va+voryoIIp7KZvw
+yOSFmruX7oeOrueI90fwMRZKZ0xTLlAAARNYnhxwwWLXyXjXhGm6zxuNZZC5O3fb
+dSzQHnJ5CdB/fOUgRMX0l/2LHer13kbrSGcEIq0wdnqwYtrRi7h0vh3/QQrkqbkS
+9M84D51xjVuXrzYt9mBgm1PHW4ErA317nc3PRs2p91JiLsZcTQ+fzQYrxfuFbQ3j
+7LMWoVVMDa6q7zxZBmzWjqJnFlBqNgFfaB65awrfaU7SJ3ICOhkasuk/+hhOVYo7
+llQyMf+i3XidF5gqWXFRqyzXNw6rtj3hTiaX863SevdegBGUc/Jc+OMywnE8GZPz
+py0RmoQq8EG7lZIGMzb1jJDCCqZvpg9iUaZ+sRN5ILqMAImctbBp39h6KEgUEAbc
+j5CZpKaO/9rfitVRjhYYa+BOYH5uxCW77yjJL+x42ALBocSAu1sw/fkdOMvTJWTn
+RuZz067kNXCToGlThiPSA9O03v6E1RVwpCfyMjYz1Dql4gvxL55pPqsm689bXZP4
+we8t1FGhR3j/amhZ2jxg28/OjUeDYUVXfsQ44oBp1uiAg9/SWT5M+hU/cRDTkBtC
+eW9aS1D0FwOdZEvzWpdayBg=
+-----END CERTIFICATE-----
diff --git a/ssl/client2.csr b/ssl/client2.csr
new file mode 100644
index 0000000..ba7cede
--- /dev/null
+++ b/ssl/client2.csr
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIB3zCCAUgCAQAwgYYxCzAJBgNVBAYTAkNBMQswCQYDVQQIEwJNQjERMA8GA1UE
+BxMIV2lubmlwZWcxEDAOBgNVBAoTB0NsaWVudDIxCzAJBgNVBAsTAklUMRUwEwYD
+VQQDEwxjbGllbnQyLmZxZG4xITAfBgkqhkiG9w0BCQEWEmFkbWluQGNsaWVudDIu
+ZnFkbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvpQ2GU9R9/7iDXbdu9kh
+Pd/cOeeyldKFPhUDApU8aKfUH+M+ndB9Ne4ILkEkE3HAmzudDriVyQv0O/esY8yH
+iooSD6cTmm1H2Dsp83vs+uLsWfLce4Ykhy3Utuh/Bvm85FYrVpS55d6YqROwCMCB
+NTCS9Ran7Z/XdX3tfsQ39UUCAwEAAaAYMBYGCSqGSIb3DQEJAjEJEwdDbGllbnQy
+MA0GCSqGSIb3DQEBBQUAA4GBAFkLUaiSX9udL6MzTMO1KNbIGKiUfLLZboZTJKCS
+lt3jEHZDJ5HF1q+ImRXUgJqLsCDQhre5Agoe9fWgQrvmT5JmCxCkXxi/kDQeD0mO
+ysBTILyq6GGLqohMh1Ex/8sUhJaXD7sgSntKxKiA+88BRrLpZXNYxijxIAKbCtMU
+B9l2
+-----END CERTIFICATE REQUEST-----
diff --git a/ssl/client2.key b/ssl/client2.key
new file mode 100644
index 0000000..c2763a1
--- /dev/null
+++ b/ssl/client2.key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQC+lDYZT1H3/uINdt272SE939w557KV0oU+FQMClTxop9Qf4z6d
+0H017gguQSQTccCbO50OuJXJC/Q796xjzIeKihIPpxOabUfYOynze+z64uxZ8tx7
+hiSHLdS26H8G+bzkVitWlLnl3pipE7AIwIE1MJL1Fqftn9d1fe1+xDf1RQIDAQAB
+AoGBAIBC6YHxM15viR28sRB62nd1ERdbi4Jv08Lri0ISxDw/L3FilELMDWjdUV4n
+8yqu9QzEezhsHErZo780Oi5UeacmNwRZ2hZZ188OM74GdfQ3WGs5n2bx8HgFktiM
+vwDeqDaT8N5lCcQIglYgo3pgXW9BK1CUERLmmyMMtJwfafslAkEA8WKQaOmhdUUZ
+1sdlmtFEyRtG73qNPboUzhZ7CLXKw9bSnrZhjVx2g0pmDc7rCqjCZPmoVT27n1MI
+IoOZSe/FxwJBAMoeKO/mPOZmdsgPNNx1lVjFDP0EhE9rPf32doVVEC7Pu9mxRWR2
+FxquWyaO/QjK4vMZFuW6Ioq2QFR9yzJbfJMCQQC+KqeYb48K42Ci674pRPrK8Rlm
+a4dAfQwM/Hr7drUCqoiODyM1igW4E3HpKP3VDPTxNhqe5R6eO3zqLAEk1ahbAkAZ
+BhbnbMgJdpIqPse6q8wry2nKQa7n7k0kjkkqRNfWE94cG7iNsZk2snOSmI13czca
+BfcxxhPUvK/GRjTMLUuFAkAvKYemciK3omlb+sFDCHNq05vL4t+GEPJHkuY1t9lG
+8VRHAturv7S3+VaIpBmM80geUXqnZ/EFxOxkmphhwj5Q
+-----END RSA PRIVATE KEY-----
diff --git a/ssl/server.crt b/ssl/server.crt
new file mode 100644
index 0000000..35634b8
--- /dev/null
+++ b/ssl/server.crt
@@ -0,0 +1,24 @@
+-----BEGIN CERTIFICATE-----
+MIID9zCCAd8CAQEwDQYJKoZIhvcNAQEFBQAwgYIxCzAJBgNVBAYTAkNBMQswCQYD
+VQQIEwJNQjERMA8GA1UEBxMIV2lubmlwZWcxFjAUBgNVBAoTDUNlcnRBdXRob3Jp
+dHkxCzAJBgNVBAsTAklUMRAwDgYDVQQDEwdjYS5mcWRuMRwwGgYJKoZIhvcNAQkB
+Fg1hZG1pbkBjYS5mcWRuMB4XDTEzMTEwNTE5MjIxNVoXDTE0MTEwNTE5MjIxNVow
+gYMxCzAJBgNVBAYTAkNBMQswCQYDVQQIEwJNQjERMA8GA1UEBxMIV2lubmlwZWcx
+DzANBgNVBAoTBlNlcnZlcjELMAkGA1UECxMCSVQxFDASBgNVBAMTC3NlcnZlci5m
+cWRuMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBzZXJ2ZXIuZnFkbjCBnzANBgkqhkiG
+9w0BAQEFAAOBjQAwgYkCgYEA8aaP64GojqRUnUZqKcuK1rUoP3tqJfYO80dT83vh
+65G0edm5R3Ozk0RGj9MZwKyPK+S1gSJ1JWABeokw+sK/UEMKD6WBAp1u6yXPLN+6
+DQDvIW/i83K/oEl16tGP9sRLM4QonL6ZJ1Ki3Lxiwma1EzyBxw+9Gr+gBMojokLR
+AIECAwEAATANBgkqhkiG9w0BAQUFAAOCAgEAZgdBPXZdU1OBOnM4ZyBWdFxTBkiO
+UqsDySGElKrgeq56sfmAX2MGBelqdcCuD2O2J86ef3Ji89OpfU265cHoSkKrIt/C
+c8lr5CaG+/tlmpc6Dw2iG/W8YsuRTMFQKm51+bRK8TzEwAuXR1HjlGbYw+kEswSP
+vTkTjEwv+f7w77D5vM8Yq/ZTYzUHUyGyKHEI3oIRgVHBJCdqCc050skbmQm3ChVp
+r1fPQE8gLZnG5Kd+w2DVp3jXD8zvwG3pjKWm5zIVVCNfULtW+L7A3HYGAiddUOLt
+pqKzmDSvr/Utr6SWbQ2XR6ULX6/9ZAdR+qR13/RYnbSGeyzP8n3ckwnWzwE/P0nO
+pvA2CLy0hXCnPQznyGXZpnZqrngAQs8qbGeAbF9+fFxVDLUN1cRxi4pq4SpsxREM
+SilahQnXjLiT/8dTrPL7aYRdbmrSTi/ARJJZGCcJea2vXN6fxaxZvMDsj98pt8Wu
+vt//N5YkEGq3+pr6ekP+3H3enkdMlikKh7tiPQkQzRKa638wPhB5PnNXphX/FwwK
+j0/e2TR0oZe04ns5GvWHC9ZwIB40IVFlLiZPSUv4j9D7junLictBaQjOyePRkh0l
+smflIF4RUrfP6UrdIVqCLXf+q/XKXioyPSXKExPBFZubUGG22OwJlQiSViMi3O3v
+M6LNrxHEVdV/7ZY=
+-----END CERTIFICATE-----
diff --git a/ssl/server.csr b/ssl/server.csr
new file mode 100644
index 0000000..3def141
--- /dev/null
+++ b/ssl/server.csr
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIB2zCCAUQCAQAwgYMxCzAJBgNVBAYTAkNBMQswCQYDVQQIEwJNQjERMA8GA1UE
+BxMIV2lubmlwZWcxDzANBgNVBAoTBlNlcnZlcjELMAkGA1UECxMCSVQxFDASBgNV
+BAMTC3NlcnZlci5mcWRuMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBzZXJ2ZXIuZnFk
+bjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA8aaP64GojqRUnUZqKcuK1rUo
+P3tqJfYO80dT83vh65G0edm5R3Ozk0RGj9MZwKyPK+S1gSJ1JWABeokw+sK/UEMK
+D6WBAp1u6yXPLN+6DQDvIW/i83K/oEl16tGP9sRLM4QonL6ZJ1Ki3Lxiwma1EzyB
+xw+9Gr+gBMojokLRAIECAwEAAaAXMBUGCSqGSIb3DQEJAjEIEwZTZXJ2ZXIwDQYJ
+KoZIhvcNAQEFBQADgYEAZOc+11+kRUbeCA5j6ucC7iTjkpCovFJMLP7dpUu4r632
+0admsBAkqyosGBLo7lItj/YDNzztHpwLmr4Ig2k8mU3MnCNtv2P/G7JtyX+poiAz
+K0+BgMH4ELnAUOqcYtAcPl0Htp3w/3eowncL0H7oO0yGgWT7gZy3j6Mtlhe9NMY=
+-----END CERTIFICATE REQUEST-----
diff --git a/ssl/server.key b/ssl/server.key
new file mode 100644
index 0000000..6080f6d
--- /dev/null
+++ b/ssl/server.key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXwIBAAKBgQDxpo/rgaiOpFSdRmopy4rWtSg/e2ol9g7zR1Pze+HrkbR52blH
+c7OTREaP0xnArI8r5LWBInUlYAF6iTD6wr9QQwoPpYECnW7rJc8s37oNAO8hb+Lz
+cr+gSXXq0Y/2xEszhCicvpknUqLcvGLCZrUTPIHHD70av6AEyiOiQtEAgQIDAQAB
+AoGBANFX0WBdn++Kzz68zKXOjkW5BNgSC4A9bPA2v7S0gqB4Rpg1FPygcFZJFLPu
+VmYDV7jX1qG7fy7UwBMunL7wTZkEtup9vvSN3pHfrRTSeQzK2Mu2yOWyXtHQ31mp
+vXDQAdiYgercYnQ7bK6otzm/QEh5IlPIQ95W3EZTxLdlFcodAkEA+kSVxHL6sPbF
+VQbKWqc0cZpYjr9w4RdV502Zls2jSS6RlDWwPHOMZDmpC62M3YXSvtnxOGAaYpTJ
+EgYgeimCHwJBAPcvc2kCTA92nH32DfWkXVQiUAfIZylyanZH0KCN7cAv6jqbaTe6
+frgHKEISBC6zqSXiQAkCXgRkxc7WB3WVaV8CQQCXttYXxiAFAUO0/K3U8MHREGEZ
+ACL8wTm5Q4iVK8oNxiZIc5eHvgBgjbfVtXrMm6CbQ+GAbHnyQwH1ZDNx+xG/AkEA
+rKYw9ySKmbZgAb7t6yf9o/k/auA35gQrhigM+UeIy1bsRDkumaUiQ0mEffl1gGUu
+fO51iZVks67rVte5aBCPAwJBAKErDAvCAyfKWDDQt3O9540hjIsfdKAMobhD/Ba4
+ULuOtpbvJfDNdpTJDNuy+UlWm+AqQhDFL609+g3kElLOOLo=
+-----END RSA PRIVATE KEY-----
--
1.8.1.3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.