Skip to content

Pki

A 'simple' example, as seen on : visit

But a little more verbose to show what happens.

It is a simple signing CA, but also we create the root CA above that and get some certificates from them.

Configuration files.

These are a little bulky, so see their full form on the link shown above, here i only show some interesting lines when needed.

They cane be cloned fro git :

git clone visit cd pki-example-1

We now have a base tree :

tree
1
2
3
4
5
`-- etc
    |-- email.conf
    |-- root-ca.conf
    |-- server.conf
    `-- signing-ca.conf

Root CA

Normally this is an external party, since no-one will trust the one we will generate... but us!

We base the root CA on the root-ca.conf file. Some interesting lines:

The default section

root-ca.conf
1
2
3
[ default ]
ca                      = root-ca               # CA name
dir                     = .                     # Top dir

Names of the CA:

root-ca.conf
1
2
3
4
5
6
[ ca_dn ]
0.domainComponent       = "org"
1.domainComponent       = "simple"
organizationName        = "Simple Inc"
organizationalUnitName  = "Simple Root CA"
commonName              = "Simple Root CA"

See the directory structure reflected here :

root-ca.conf
1
2
3
4
5
6
7
[ root_ca ]
certificate             = $dir/ca/$ca.crt       # The CA cert
private_key             = $dir/ca/$ca/private/$ca.key # CA private key
new_certs_dir           = $dir/ca/$ca           # Certificate archive
serial                  = $dir/ca/$ca/db/$ca.crt.srl # Serial number file
crlnumber               = $dir/ca/$ca/db/$ca.crl.srl # CRL number file
database                = $dir/ca/$ca/db/$ca.db # Index file

create directories

directories
mkdir -p ca/root-ca/private ca/root-ca/db crl certs
chmod 700 ca/root-ca/private

Of course the private directory has te be closed We now have :

tree
|-- ca
|   `-- root-ca
|       |-- db
|       `-- private
|-- certs
|-- crl
`-- etc
   |-- email.conf
    |-- root-ca.conf
    |-- server.conf
    `-- signing-ca.conf

create database :

First we need to initialize the database with empty/default values :

initialize
cp /dev/null ca/root-ca/db/root-ca.db
cp /dev/null ca/root-ca/db/root-ca.db.attr
echo 01 > ca/root-ca/db/root-ca.crt.srl
echo 01 > ca/root-ca/db/root-ca.crl.srl

|-- ca
|   `-- root-ca
|       |-- db
|       |   |-- root-ca.crl.srl
|       |   |-- root-ca.crt.srl
|       |   |-- root-ca.db
|       |   `-- root-ca.db.attr
|       `-- private
|-- certs
|-- crl
`-- etc
   |-- email.conf
   |-- root-ca.conf
   |-- server.conf
   `-- signing-ca.conf

create CA request

CA request
1
2
3
4
openssl req -new \
   -config etc/root-ca.conf \
   -out ca/root-ca.csr \
   -keyout ca/root-ca/private/root-ca.key

Here we request a new key based on the info in root-ca.conf, and we get a certificate request in ca/root-ca.csr:

certificate request
-----BEGIN CERTIFICATE REQUEST-----
MIIDCjCCAfICAQAwdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixk
ARkWBnNpbXBsZTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUGA1UECwwOU2ltcGxl
IFJvb3QgQ0ExFzAVBgNVBAMMDlNpbXBsZSBSb290IENBMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEAvBNadyG8ArNLNaoU+FY/fSuxyd00jn8cpydAL42I
p5QT41VLJpZahITKujZRG7PsgWqkHo1I/OEeHFgQjLMim0pcCIucx017yOcS63xt
cK5w3CEfqexL7ZNkrcNnOkrHpSbAnaepsVYq6bweb8jpQvGelQ6zFNK0U1pGsNQQ
Ao6nf5qBxkYqp4ZpwC62wPlAuWMi8A5kgCgRF8qZcZXLkHMJhfZ8fYsm8x7NQaYs
Z9+edwCE1AZiz2S4fPMR6ZsUEsGsm6svURkAKIbIQTZ2ccdGWaOv2kkHj//cbF30
XQ10rnvpp7nAIoEbgiVTLffn9KOeZzBL5RWjipWOhB/vTwIDAQABoFEwTwYJKoZI 
hvcNAQkOMUIwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
HQ4EFgQUtnq6Pk0MzswP7cn7p35DW1GpjR8wDQYJKoZIhvcNAQEFBQADggEBACfR
bV5ds0Du6HotevpUG/kl87LURmRa68iOXcm4EgiGCa/rAQGKup6+fsXn/sIczZbK
4dP/JEdvw5TOvpPCyDm9XLw/ZMbxSVhfzH/sTjUpV+RyOLTbBF9en23pIhwce7Eb
PfFbNQJZmmNqfPpXB1FDCu26ZLXxVqv9vgdNdpRF39WGCzB6gAf3eCvHQ8/0Cxtr
AZyczBPh12ofUuq60bjKmeq25YXtwkdHYj6fbQcUQt4Q2LGju7MuXJokOwPxxksJ
LQp3LoGzrzmezAL4mFXKt9Rg5B3UeKf3X7sgz2C7hLSH0WCnH0H+9iQ82DW6jro6
hhh7HHp9jDvefu3SleU=
-----END CERTIFICATE REQUEST-----

It also generated a private key in "ca/root-ca/private/root-ca.key", formatted like :

private key
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,3F4F2F72015B0A2D

rLZ5u/DZKizmfJgd+Vmhjzg1eHxvamr1fstgetHorqUrUzAIYReZjX8MglBx9jjs
vsG40kF+xCX56dgu8H7gLwRhmrtWjdFfrSbufd7dbHRgOuCybMqdrPs/TxXwKvEz
.....
.....
k75YSUSaYHgsf0tveti+I5O91YG63Fg7F+Ni9731NpWtRGU3XreaDN4EFr6WQLyb
Do/CAAYPy8UMqxXjGm20eTYP/uRWXwZOyAu4QPmJea90PxgPDWlvkA==
-----END RSA PRIVATE KEY-----

Create CA certificate

Now we create the certificate with :

CA certificate
1
2
3
4
5
openssl ca -selfsign \
    -config etc/root-ca.conf \
    -in ca/root-ca.csr \
    -out ca/root-ca.crt \
    -extensions root_ca_ext

This will generate the certificate : ca/root-ca.crt based on the certificate signing request, and it will look like this :

content
Certificate:
      Data:
          Version: 3 (0x2)
          Serial Number: 1 (0x1)
          Signature Algorithm: sha1WithRSAEncryption
          Issuer: DC=org, DC=simple, O=Simple Inc, OU=Simple Root CA, CN=Simple Roo
          Validity
              Not Before: Feb  6 14:45:10 2015 GMT
              Not After : Feb  5 14:45:10 2025 GMT
          Subject: DC=org, DC=simple, O=Simple Inc, OU=Simple Root CA, CN=Simple Ro
          Subject Public Key Info:
              Public Key Algorithm: rsaEncryption
              RSA Public Key: (2048 bit)
                  Modulus (2048 bit):
                      00:bc:13:5a:77:21:bc:02:b3:4b:35:aa:14:f8:56:
                      3f:7d:2b:b1:c9:dd:34:8e:7f:1c:a7:27:40:2f:8d:
                      88:a7:94:13:e3:55:4b:26:96:5a:84:84:ca:ba:36:
                      51:1b:b3:ec:81:6a:a4:1e:8d:48:fc:e1:1e:1c:58:
                      10:8c:b3:22:9b:4a:5c:08:8b:9c:c7:4d:7b:c8:e7:
                      12:eb:7c:6d:70:ae:70:dc:21:1f:a9:ec:4b:ed:93:
                      64:ad:c3:67:3a:4a:c7:a5:26:c0:9d:a7:a9:b1:56:
                      2a:e9:bc:1e:6f:c8:e9:42:f1:9e:95:0e:b3:14:d2:
                      b4:53:5a:46:b0:d4:10:02:8e:a7:7f:9a:81:c6:46:
                      2a:a7:86:69:c0:2e:b6:c0:f9:40:b9:63:22:f0:0e:
                      64:80:28:11:17:ca:99:71:95:cb:90:73:09:85:f6:
                      7c:7d:8b:26:f3:1e:cd:41:a6:2c:67:df:9e:77:00:
                      84:d4:06:62:cf:64:b8:7c:f3:11:e9:9b:14:12:c1:
                      ac:9b:ab:2f:51:19:00:28:86:c8:41:36:76:71:c7:
                      46:59:a3:af:da:49:07:8f:ff:dc:6c:5d:f4:5d:0d:
                      74:ae:7b:e9:a7:b9:c0:22:81:1b:82:25:53:2d:f7:
                      e7:f4:a3:9e:67:30:4b:e5:15:a3:8a:95:8e:84:1f:
                      ef:4f
                  Exponent: 65537 (0x10001)
          X509v3 extensions:
              X509v3 Key Usage: critical
                  Certificate Sign, CRL Sign
              X509v3 Basic Constraints: critical
                  CA:TRUE
              X509v3 Subject Key Identifier: 
                  B6:7A:BA:3E:4D:0C:CE:CC:0F:ED:C9:FB:A7:7E:43:5B:51:A9:8D:1F
              X509v3 Authority Key Identifier: 
                  keyid:B6:7A:BA:3E:4D:0C:CE:CC:0F:ED:C9:FB:A7:7E:43:5B:51:A9:8D:1F

    Signature Algorithm: sha1WithRSAEncryption
          32:1a:92:a2:06:03:3f:cb:07:4b:26:29:e1:19:80:de:0e:cb:
          8f:bb:bc:b7:72:71:cc:b2:7d:5f:1a:a5:a9:51:07:7e:17:de:
          ab:64:02:c8:dc:cb:33:5e:2b:a1:00:c2:6d:d0:3c:6a:6e:49:
          c3:e0:5e:23:a0:fa:bf:04:8f:fc:f1:41:5b:8c:e8:03:c6:cf:
          ae:e2:a0:e6:f7:93:67:a5:f6:bf:b2:51:9a:72:3e:c4:0b:2b:
          1b:b6:e9:c4:cf:46:20:4b:e8:f5:47:86:a4:25:50:c0:d9:d3:
          70:f5:f8:d0:3c:65:25:da:49:77:55:36:ef:f0:c6:e7:70:7a:
          83:ed:13:87:2c:a3:69:0e:35:67:42:83:14:f1:ef:08:2b:23:
          d3:42:c8:d8:58:4a:fa:ae:8e:53:18:c8:70:92:e7:d2:9e:1c:
          e4:73:41:ee:d9:38:70:f9:61:4d:89:37:18:9c:32:d5:f0:54:
          5c:90:c3:81:74:96:04:af:01:b0:20:ef:b7:ff:b5:45:ba:04:
          92:3d:d9:57:53:6f:21:b2:3b:80:d6:21:74:ef:a0:45:b8:7e:
          51:34:f8:d7:51:9d:a7:a6:9a:83:23:08:6c:14:7c:1f:e3:f5:
          d0:8d:9b:d1:91:bf:ec:37:4e:f5:b1:dd:c1:a5:05:80:d5:f2:
          b8:f4:ce:b5
-----BEGIN CERTIFICATE-----
MIIDxjCCAq6gAwIBAgIBATANBgkqhkiG9w0BAQUFADB0MRMwEQYKCZImiZPyLGQB
GRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRMwEQYDVQQKDApTaW1wbGUg
SW5jMRcwFQYDVQQLDA5TaW1wbGUgUm9vdCBDQTEXMBUGA1UEAwwOU2ltcGxlIFJv
b3QgQ0EwHhcNMTUwMjA2MTQ0NTEwWhcNMjUwMjA1MTQ0NTEwWjB0MRMwEQYKCZIm
iZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRMwEQYDVQQKDApT
aW1wbGUgSW5jMRcwFQYDVQQLDA5TaW1wbGUgUm9vdCBDQTEXMBUGA1UEAwwOU2lt
cGxlIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8E1p3
IbwCs0s1qhT4Vj99K7HJ3TSOfxynJ0AvjYinlBPjVUsmllqEhMq6NlEbs+yBaqQe
jUj84R4cWBCMsyKbSlwIi5zHTXvI5xLrfG1wrnDcIR+p7Evtk2Stw2c6SselJsCd
p6mxVirpvB5vyOlC8Z6VDrMU0rRTWkaw1BACjqd/moHGRiqnhmnALrbA+UC5YyLw
DmSAKBEXyplxlcuQcwmF9nx9iybzHs1Bpixn3553AITUBmLPZLh88xHpmxQSwayb
qy9RGQAohshBNnZxx0ZZo6/aSQeP/9xsXfRdDXSue+mnucAigRuCJVMt9+f0o55n
MEvlFaOKlY6EH+9PAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
BTADAQH/MB0GA1UdDgQWBBS2ero+TQzOzA/tyfunfkNbUamNHzAfBgNVHSMEGDAW
gBS2ero+TQzOzA/tyfunfkNbUamNHzANBgkqhkiG9w0BAQUFAAOCAQEAMhqSogYD
P8sHSyYp4RmA3g7Lj7u8t3JxzLJ9XxqlqVEHfhfeq2QCyNzLM14roQDCbdA8am5J
w+BeI6D6vwSP/PFBW4zoA8bPruKg5veTZ6X2v7JRmnI+xAsrG7bpxM9GIEvo9UeG
pCVQwNnTcPX40DxlJdpJd1U27/DG53B6g+0ThyyjaQ41Z0KDFPHvCCsj00LI2FhK
+q6OUxjIcJLn0p4c5HNB7tk4cPlhTYk3GJwy1fBUXJDDgXSWBK8BsCDvt/+1RboE
kj3ZV1NvIbI7gNYhdO+gRbh+UTT411Gdp6aagyMIbBR8H+P10I2b0ZG/7DdO9bHd
waUFgNXyuPTOtQ==
-----END CERTIFICATE-----

It also seems to create an exact copy of this file in ca/root-ca/01.pem

create signing CA

Now this is of course much the same, so i will just note the differences :

create directories :

directories
mkdir -p ca/signing-ca/private ca/signing-ca/db crl certs
chmod 700 ca/signing-ca/private

clearly, signing-ca instead of root-ca. Same goes for the database creation :

initialize
1
2
3
4
cp /dev/null ca/signing-ca/db/signing-ca.db
cp /dev/null ca/signing-ca/db/signing-ca.db.attr
echo 01 > ca/signing-ca/db/signing-ca.crt.srl
echo 01 > ca/signing-ca/db/signing-ca.crl.srl

Creating the request, no real differences just different input.

request
1
2
3
4
openssl req -new \
    -config etc/signing-ca.conf \
    -out ca/signing-ca.csr \
    -keyout ca/signing-ca/private/signing-ca.key

Generate certificate : same but note that the extension is signing_ca_ext :

certificate
1
2
3
4
5
openssl ca \
    -config etc/root-ca.conf \
    -in ca/signing-ca.csr \
    -out ca/signing-ca.crt \
    -extensions signing_ca_ext

Also note : this is not a self signed certificate anymore, the config file is again that for root-ca !!

operate signing CA

Now we have a small tree of signing authorities, we can start creating signed certificates.

email request

signing
1
2
3
4
openssl req -new \
    -config etc/email.conf \
    -out certs/fred.csr \
    -keyout certs/fred.key

This should create a csr for email and store it in certs/fred.csr :

request
-----BEGIN CERTIFICATE REQUEST-----
MIIDHDCCAgQCAQAwXDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixk
ARkWBnNpbXBsZTETMBEGA1UECgwKU2ltcGxlIEluYzEYMBYGA1UEAwwPRnJlZCBG
bGludHN0b25lMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvCxRcs71
8w1hdM2TDWMMH+vVWP8Dk2ZmeZLZX2lRut0cOSKVpxt36S+zefOxcyDYjywOA5m7
RRgsuFaQu820C27W80IXDWcmj0+DIqUAHIzzGsGGvh/i+WrK4F6Sy2kPlYY8zNta
tEEa1XsJ7NwhUNg8rjeqrl5hOf/IaD29N2AcW+rhrR0+cjUG4f58UwW08B/xdS8w
J5XKW9Z9zUFWk3AHGmjlBT8SvnbZ5KI9JNRDOCJ0fCeo7ZyLlVfU6dW+14Nhm23I
STwIBHfSpCciNjcpnz7PgftwEFyvTJ0MjBBvwda4dRn3KmFucKtd07s7EBFBS+7u
Wk8yvPxak9OVTQIDAQABoHsweQYJKoZIhvcNAQkOMWwwajAOBgNVHQ8BAf8EBAMC
BaAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMCMB0GA1UdDgQWBBQgzxeu
yHf9voQBOmAB2EYbFvPwGzAaBgNVHREEEzARgQ9mcmVkQHNpbXBsZS5vcmcwDQYJ
KoZIhvcNAQEFBQADggEBAAJtTa6pFGWJUNSHxx9Wv5b94Ivezf2SzPuGdi9mBgJr
nD2qqs+8AGFXTJTYCmpFfEbPYE6YUBFt5PUCyFxVo3quGsXyQMcoR4Uui9AUsUy4
06zKUg/GCp/qvIjjGgSwbICHhWJBcB97aS98aWy1a03iNLfKRVXQPCIXiLlbGG6w
Nwflix0IvvTLKCmYMKyZ4Or/8IQoekvba9fZuOiUBVsXwTIcW/rS5Lgcc4IM/TRF
3XSGbbfympmwEeiz/7mmiKE1mWhMzbIyrnBsP+BSkYl0hhmkjU/R/WmXf6d2uaxI
w/28djkECgcCooN0KC0NEOf79fkeM/0CAjbn3oCB228=
-----END CERTIFICATE REQUEST-----

And from that a certificate with extension email_ext :

email
openssl ca     -config etc/signing-ca.conf     -in certs/fred.csr     -out certs/fred.crt     -extensions email_ext

Which is :

content
Certificate:
        Data:
            Version: 3 (0x2)
            Serial Number: 1 (0x1)
            Signature Algorithm: sha1WithRSAEncryption
            Issuer: DC=org, DC=simple, O=Simple Inc, OU=Simple Signing CA, CN=Simple Signing CA
            Validity
                Not Before: Feb  6 16:26:18 2015 GMT
                Not After : Feb  5 16:26:18 2017 GMT
            Subject: DC=org, DC=simple, O=Simple Inc, CN=Fred Flintstone
            Subject Public Key Info:
                Public Key Algorithm: rsaEncryption
                RSA Public Key: (2048 bit)
                    Modulus (2048 bit):
                        00:bc:2c:51:72:ce:f5:f3:0d:61:74:cd:93:0d:63:
                        0c:1f:eb:d5:58:ff:03:93:66:66:79:92:d9:5f:69:
                        51:ba:dd:1c:39:22:95:a7:1b:77:e9:2f:b3:79:f3:
                        b1:73:20:d8:8f:2c:0e:03:99:bb:45:18:2c:b8:56:
                        90:bb:cd:b4:0b:6e:d6:f3:42:17:0d:67:26:8f:4f:
                        83:22:a5:00:1c:8c:f3:1a:c1:86:be:1f:e2:f9:6a:
                        ca:e0:5e:92:cb:69:0f:95:86:3c:cc:db:5a:b4:41:
                        1a:d5:7b:09:ec:dc:21:50:d8:3c:ae:37:aa:ae:5e:
                        61:39:ff:c8:68:3d:bd:37:60:1c:5b:ea:e1:ad:1d:
                        3e:72:35:06:e1:fe:7c:53:05:b4:f0:1f:f1:75:2f:
                        30:27:95:ca:5b:d6:7d:cd:41:56:93:70:07:1a:68:
                        e5:05:3f:12:be:76:d9:e4:a2:3d:24:d4:43:38:22:
                        74:7c:27:a8:ed:9c:8b:95:57:d4:e9:d5:be:d7:83:
                        61:9b:6d:c8:49:3c:08:04:77:d2:a4:27:22:36:37:
                        29:9f:3e:cf:81:fb:70:10:5c:af:4c:9d:0c:8c:10:
                        6f:c1:d6:b8:75:19:f7:2a:61:6e:70:ab:5d:d3:bb:
                        3b:10:11:41:4b:ee:ee:5a:4f:32:bc:fc:5a:93:d3:
                        95:4d
                    Exponent: 65537 (0x10001)
            X509v3 extensions:
                X509v3 Key Usage: critical
                    Digital Signature, Key Encipherment
                X509v3 Basic Constraints:
                    CA:FALSE
                X509v3 Extended Key Usage:
                    E-mail Protection, TLS Web Client Authentication
                X509v3 Subject Key Identifier:
                    20:CF:17:AE:C8:77:FD:BE:84:01:3A:60:01:D8:46:1B:16:F3:F0:1B
                X509v3 Authority Key Identifier:
                    keyid:9D:83:0D:88:EA:1F:FB:1D:9E:63:0C:66:8B:6E:80:EA:2E:A6:28:44

                X509v3 Subject Alternative Name:
                    email:fred@simple.org
        Signature Algorithm: sha1WithRSAEncryption
            8f:41:09:57:d0:de:9b:7a:92:cd:d8:e8:c5:22:b4:7d:92:af:
            d3:c6:af:23:5c:1e:0b:21:98:ca:8c:72:a8:53:35:86:1e:b5:
            04:6b:ae:9b:c0:c3:cb:ef:06:4b:f3:75:4b:fd:7a:87:51:64:
            36:66:53:c4:16:41:a0:a6:8c:12:2b:e7:e4:18:0d:f0:42:7d:
            73:0b:85:4c:61:33:fb:16:2e:ef:29:e2:9d:da:a9:97:1f:67:
            70:04:6c:18:4b:32:bf:18:26:57:4a:1b:51:62:a5:2f:49:9e:
            8c:52:e0:2c:3f:2d:00:df:9f:cf:0b:e7:71:38:ca:2c:a5:98:
            48:d9:4c:1d:03:64:61:2d:f4:ab:5b:89:c8:83:a2:d8:73:72:
            2b:19:3f:8b:2b:f1:17:3f:fd:cf:63:43:ba:19:f2:ac:b5:7c:
            f8:71:5e:e5:d5:cf:13:2b:ef:05:29:3a:e0:69:7e:31:d0:74:
            e9:2b:7e:13:66:a2:05:1b:2b:00:5c:14:c0:de:73:b8:2c:c6:
            8a:d0:99:31:ae:20:6f:d9:23:6c:3b:82:b8:cd:60:62:9c:38:
            5c:d7:20:90:8b:33:0e:d3:6a:fc:76:60:26:6f:66:38:fc:7e:
            d3:b9:8d:61:3d:44:94:1e:04:ab:01:0c:27:f7:60:03:5b:e1:
            54:ff:02:4f
    -----BEGIN CERTIFICATE-----
    MIID6zCCAtOgAwIBAgIBATANBgkqhkiG9w0BAQUFADB6MRMwEQYKCZImiZPyLGQB
    GRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRMwEQYDVQQKDApTaW1wbGUg
    SW5jMRowGAYDVQQLDBFTaW1wbGUgU2lnbmluZyBDQTEaMBgGA1UEAwwRU2ltcGxl
    IFNpZ25pbmcgQ0EwHhcNMTUwMjA2MTYyNjE4WhcNMTcwMjA1MTYyNjE4WjBcMRMw
    EQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRMwEQYD
    VQQKDApTaW1wbGUgSW5jMRgwFgYDVQQDDA9GcmVkIEZsaW50c3RvbmUwggEiMA0G
    CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8LFFyzvXzDWF0zZMNYwwf69VY/wOT
    ZmZ5ktlfaVG63Rw5IpWnG3fpL7N587FzINiPLA4DmbtFGCy4VpC7zbQLbtbzQhcN
    ZyaPT4MipQAcjPMawYa+H+L5asrgXpLLaQ+VhjzM21q0QRrVewns3CFQ2DyuN6qu
    XmE5/8hoPb03YBxb6uGtHT5yNQbh/nxTBbTwH/F1LzAnlcpb1n3NQVaTcAcaaOUF
    PxK+dtnkoj0k1EM4InR8J6jtnIuVV9Tp1b7Xg2GbbchJPAgEd9KkJyI2NymfPs+B
    +3AQXK9MnQyMEG/B1rh1GfcqYW5wq13TuzsQEUFL7u5aTzK8/FqT05VNAgMBAAGj
    gZkwgZYwDgYDVR0PAQH/BAQDAgWgMAkGA1UdEwQCMAAwHQYDVR0lBBYwFAYIKwYB
    BQUHAwQGCCsGAQUFBwMCMB0GA1UdDgQWBBQgzxeuyHf9voQBOmAB2EYbFvPwGzAf
    BgNVHSMEGDAWgBSdgw2I6h/7HZ5jDGaLboDqLqYoRDAaBgNVHREEEzARgQ9mcmVk
    QHNpbXBsZS5vcmcwDQYJKoZIhvcNAQEFBQADggEBAI9BCVfQ3pt6ks3Y6MUitH2S
    r9PGryNcHgshmMqMcqhTNYYetQRrrpvAw8vvBkvzdUv9eodRZDZmU8QWQaCmjBIr
    5+QYDfBCfXMLhUxhM/sWLu8p4p3aqZcfZ3AEbBhLMr8YJldKG1FipS9JnoxS4Cw/
    LQDfn88L53E4yiylmEjZTB0DZGEt9KtbiciDothzcisZP4sr8Rc//c9jQ7oZ8qy1
    fPhxXuXVzxMr7wUpOuBpfjHQdOkrfhNmogUbKwBcFMDec7gsxorQmTGuIG/ZI2w7
    grjNYGKcOFzXIJCLMw7Tavx2YCZvZjj8ftO5jWE9RJQeBKsBDCf3YANb4VT/Ak8=
    -----END CERTIFICATE-----