New certs to be used for CRL tests. Added test for passing and failing connections based on CRL check outcomes

This commit is contained in:
Andrey Ermolov 2023-09-26 21:15:57 +00:00
parent 401eb79584
commit c88d12da96
18 changed files with 1929 additions and 4 deletions

View File

@ -371,6 +371,31 @@ func (s) TestClientServerHandshake(t *testing.T) {
getRootCAsForServerBad := func(params *GetRootCAsParams) (*GetRootCAsResults, error) {
return nil, fmt.Errorf("bad root certificate reloading")
}
getRootCAsForClientCRL := func(params *GetRootCAsParams) (*GetRootCAsResults, error) {
return &GetRootCAsResults{TrustCerts: cs.ClientTrust3}, nil
}
getRootCAsForServerCRL := func(params *GetRootCAsParams) (*GetRootCAsResults, error) {
return &GetRootCAsResults{TrustCerts: cs.ServerTrust3}, nil
}
makeStaticCRLProvider := func(containsRevoked bool) *RevocationConfig {
cRLProvider := MakeStaticCRLProvider()
var crl *CRL
if containsRevoked {
crl = loadCRL(t, testdata.Path("crl/provider/crl_server_revoked.pem"))
} else {
crl = loadCRL(t, testdata.Path("crl/provider/crl_empty.pem"))
}
cRLProvider.AddCRL(crl)
return &RevocationConfig{
AllowUndetermined: true,
CRLProvider: cRLProvider,
}
}
cache, err := lru.New(5)
if err != nil {
t.Fatalf("lru.New: err = %v", err)
@ -594,14 +619,14 @@ func (s) TestClientServerHandshake(t *testing.T) {
// server custom check fails
{
desc: "Client sets peer cert, reload root function with verifyFuncGood; Server sets bad custom check; mutualTLS",
clientCert: []tls.Certificate{cs.ClientCert1},
clientGetRoot: getRootCAsForClient,
clientCert: []tls.Certificate{cs.ClientCert3},
clientGetRoot: getRootCAsForClientCRL,
clientVerifyFunc: clientVerifyFuncGood,
clientVType: CertVerification,
clientExpectHandshakeError: true,
serverMutualTLS: true,
serverCert: []tls.Certificate{cs.ServerCert1},
serverGetRoot: getRootCAsForServer,
serverCert: []tls.Certificate{cs.ServerCert3},
serverGetRoot: getRootCAsForServerCRL,
serverVerifyFunc: verifyFuncBad,
serverVType: CertVerification,
serverExpectError: true,
@ -704,6 +729,37 @@ func (s) TestClientServerHandshake(t *testing.T) {
Cache: cache,
},
},
// Client: set valid credentials with the revocation config
// Server: set valid credentials with the revocation config
// Expected Behavior: success, because non of the certificate chains sent in the connection are revoked
{
desc: "Client sets peer cert, reload root function with verifyFuncGood; Server sets peer cert, reload root function; Client uses CRL; mutualTLS",
clientCert: []tls.Certificate{cs.ClientCert3},
clientGetRoot: getRootCAsForClientCRL,
clientVerifyFunc: clientVerifyFuncGood,
clientVType: CertVerification,
clientRevocationConfig: makeStaticCRLProvider(false),
serverMutualTLS: true,
serverCert: []tls.Certificate{cs.ServerCert3},
serverGetRoot: getRootCAsForServerCRL,
serverVType: CertVerification,
},
// Client: set valid credentials with the revocation config
// Server: set revoked credentials with the revocation config
// Expected Behavior: fail, server creds are revoked
{
desc: "Client sets peer cert, reload root function with verifyFuncGood; Server sets revoked cert; Client uses CRL; mutualTLS",
clientCert: []tls.Certificate{cs.ClientCert3},
clientGetRoot: getRootCAsForClientCRL,
clientVerifyFunc: clientVerifyFuncGood,
clientVType: CertVerification,
clientRevocationConfig: makeStaticCRLProvider(true),
serverMutualTLS: true,
serverCert: []tls.Certificate{cs.ServerCert3},
serverGetRoot: getRootCAsForServerCRL,
serverVType: CertVerification,
serverExpectError: true,
},
} {
test := test
t.Run(test.desc, func(t *testing.T) {

File diff suppressed because it is too large Load Diff

View File

@ -35,12 +35,18 @@ type CertStore struct {
// ClientCert2 is the certificate sent by client to prove its identity.
// It is trusted by ServerTrust2.
ClientCert2 tls.Certificate
// ClientCert3 is the certificate sent by client to prove its identity.
// It is trusted by ServerTrust3. Used in CRL tests
ClientCert3 tls.Certificate
// ServerCert1 is the certificate sent by server to prove its identity.
// It is trusted by ClientTrust1.
ServerCert1 tls.Certificate
// ServerCert2 is the certificate sent by server to prove its identity.
// It is trusted by ClientTrust2.
ServerCert2 tls.Certificate
// ServerCert3 is a revoked certificate
// (this info is stored in crl_server_revoked.pem).
ServerCert3 tls.Certificate
// ServerPeer3 is the certificate sent by server to prove its identity.
ServerPeer3 tls.Certificate
// ServerPeerLocalhost1 is the certificate sent by server to prove its
@ -51,10 +57,14 @@ type CertStore struct {
ClientTrust1 *x509.CertPool
// ClientTrust2 is the root certificate used on the client side.
ClientTrust2 *x509.CertPool
// ClientTrust3 is the root certificate used on the client side.
ClientTrust3 *x509.CertPool
// ServerTrust1 is the root certificate used on the server side.
ServerTrust1 *x509.CertPool
// ServerTrust2 is the root certificate used on the server side.
ServerTrust2 *x509.CertPool
// ServerTrust2 is the root certificate used on the server side.
ServerTrust3 *x509.CertPool
}
func readTrustCert(fileName string) (*x509.CertPool, error) {
@ -79,12 +89,18 @@ func (cs *CertStore) LoadCerts() error {
if cs.ClientCert2, err = tls.LoadX509KeyPair(testdata.Path("client_cert_2.pem"), testdata.Path("client_key_2.pem")); err != nil {
return err
}
if cs.ClientCert3, err = tls.LoadX509KeyPair(testdata.Path("crl/provider/client_cert.pem"), testdata.Path("crl/provider/client_cert.key")); err != nil {
return err
}
if cs.ServerCert1, err = tls.LoadX509KeyPair(testdata.Path("server_cert_1.pem"), testdata.Path("server_key_1.pem")); err != nil {
return err
}
if cs.ServerCert2, err = tls.LoadX509KeyPair(testdata.Path("server_cert_2.pem"), testdata.Path("server_key_2.pem")); err != nil {
return err
}
if cs.ServerCert3, err = tls.LoadX509KeyPair(testdata.Path("crl/provider/server_cert.pem"), testdata.Path("crl/provider/server_cert.key")); err != nil {
return err
}
if cs.ServerPeer3, err = tls.LoadX509KeyPair(testdata.Path("server_cert_3.pem"), testdata.Path("server_key_3.pem")); err != nil {
return err
}
@ -97,11 +113,17 @@ func (cs *CertStore) LoadCerts() error {
if cs.ClientTrust2, err = readTrustCert(testdata.Path("client_trust_cert_2.pem")); err != nil {
return err
}
if cs.ClientTrust3, err = readTrustCert(testdata.Path("crl/provider/client_trust_cert.pem")); err != nil {
return err
}
if cs.ServerTrust1, err = readTrustCert(testdata.Path("server_trust_cert_1.pem")); err != nil {
return err
}
if cs.ServerTrust2, err = readTrustCert(testdata.Path("server_trust_cert_2.pem")); err != nil {
return err
}
if cs.ServerTrust3, err = readTrustCert(testdata.Path("crl/provider/server_trust_cert.pem")); err != nil {
return err
}
return nil
}

View File

@ -0,0 +1,14 @@
openssl req -x509 -newkey rsa:4096 -keyout server_trust_key.pem -out server_trust_cert.pem -days 365 -subj "/C=US/ST=VA/O=Internet Widgits Pty Ltd/CN=foo.bar.hoo.ca.com" -nodes
openssl req -x509 -newkey rsa:4096 -keyout client_trust_key.pem -out client_trust_cert.pem -days 365 -subj "/C=US/ST=CA/L=SVL/O=Internet Widgits Pty Ltd" -nodes
openssl req -newkey rsa:4096 -keyout server_cert.key -out new_cert.csr -nodes -subj "/C=US/ST=CA/L=DUMMYCITY/O=Internet Widgits Pty Ltd/CN=foo.bar.com" -sha256
openssl x509 -req -in new_cert.csr -out server_cert.pem -CA client_trust_cert.pem -CAkey client_trust_key.pem -CAcreateserial -days 3650 -sha256 -extfile extensions.conf
openssl req -newkey rsa:4096 -keyout client_cert.key -out new_cert.csr -nodes -subj "/C=US/ST=CA/O=Internet Widgits Pty Ltd/CN=foo.bar.hoo.com" -sha256
openssl x509 -req -in new_cert.csr -out client_cert.pem -CA server_trust_cert.pem -CAkey server_trust_key.pem -CAcreateserial -days 3650 -sha256 -extfile extensions.conf
#extensions.conf
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment

View File

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
wXbbl1Q950WxvkFwHVPEf0AjcNQ+vkE=
-----END PRIVATE KEY-----

View File

@ -0,0 +1,32 @@
-----BEGIN CERTIFICATE-----
MIIFmTCCA4GgAwIBAgIUKoNorgc78v8NhX5pT0eX29QTlxQwDQYJKoZIhvcNAQEL
BQAwWjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAlZBMSEwHwYDVQQKDBhJbnRlcm5l
dCBXaWRnaXRzIFB0eSBMdGQxGzAZBgNVBAMMEmZvby5iYXIuaG9vLmNhLmNvbTAe
Fw0yMzA5MjYwNDM5MTlaFw0zMzA5MjMwNDM5MTlaMFcxCzAJBgNVBAYTAlVTMQsw
CQYDVQQIDAJDQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRgw
FgYDVQQDDA9mb28uYmFyLmhvby5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDE6zfvwT6gRaNXc4sNpDqRQR9lHU53fh8cEuYN0tk9iO7aNJhXWOzx
/UTk5ccf9On91pIUQ1Px+crZvv5wHQXTH0ng4jgKe49tNzi23O7IqwPnTOS0v6Zl
pGzJprrMee+YP34SpbZLBwZW9oj1q0vr12pir35B6yTbJGOxRQXaN7302Knjorvj
GeETgIuDiqHv5swRbiOQS1JfquhHTOPJKWq2uK0r9C31euQiT0u0JB7XHcCJZQJ/
5ByG7I6N+rysU9u7CHgto92cjz7Oe5Fk4LrKj62bmL6EJMsucZGagtSnuXuuPcCm
BDRzNjjvp1/Mym4Fq5GmpOyRiNXXJgdqhR59uKc0Ed9t8Zg3gHT9kDb4/ubHe3ZY
2gPOSO4QJEt+mBWmV9MN9X7nOk+RjKY9TipMQ0+Tc3oZTdUMNohhUwi0GPuEEjbG
rvIIkpYtTKliLBZI8Nb/F3ibJeODA3NzcUDsTBRk7W6xW7qJSS9Bcl/9xVS5+wgC
JHZAuSCRw6yRPrO56CQqeHrKb+3H+oXHwyt/jdYQWL6qHeo6YCg4EV/C2q5R5crd
l4AhjZOm1Y03EbfbRcn4DntjFpkUkGfAMkSczRGH264DIuTLZ1c0zSM/4GoGbGrw
XbiYi89bzgI7rgGQ7xEpigJT0o6RGA3u6SI/5GHFqcHs5Vou8nbUTQIDAQABo1ow
WDAdBgNVHQ4EFgQUyf6qal9fKpoR1+GMfnFCzoK+ClcwHwYDVR0jBBgwFoAUDjmd
nNwr6MWPMhPftdbsTkQbdG8wCQYDVR0TBAIwADALBgNVHQ8EBAMCBaAwDQYJKoZI
hvcNAQELBQADggIBAA+ALoE20z6k0rt5tc1V8OvTav5igJxcO9+gc4G0j+SL6RO+
Z/uv2PTsR8Lyr0TYaqZQRANDA/hEXJK1UPGlFoVtAPTwLtasrSkvPPFS3puTv7Os
sXODpZsUHHouTQQHiMktCQLwI6W+3B/pH/YMx+vFnf+GQZ+JTfJXzv8UPrtVngU2
kvbIUd6csWjp1n6KniUf44t6s7n+1XXo3Njaifwx6bLMTAcPyqdzg87VhyDCb0nA
+cJUl/sq38Axj6P5fNh22g8HJXFA0yhJXqIOvGUOikc3Hq4Uyd6gEpisP8dnrhu3
Pucorv3ccLGJV2Vg+NI0fV/94dX9Yv09Sv0B23uCQqtATdLpL6ZBANn+lX15MkJP
E8kPMEvmi3qRP2lqbssgiyhcHUE0XIE9o/fYnwk8wfMtaS0XPSOWzPddzqjiNqDB
1vsHCWLLBDOvz0nFd5L5P/uzP1M72mfSWbndJnTTQXLOJKpeubyOlFDBLqE399wP
p6H/lsz9y/Qp299CiSpzdI0nWO2KHYbikTt4LicKz2VMRSytpAV0V6AHKC2cZmUz
589Gfn/pgtJ/c2ULRiTDbpnhsRtHWE/oWk/dxZHzs+Cd04fH7+3gxVDGYioF9YUH
nlvnvl+OsEdFckYfVq1zaSIHqKNBJUhf3CEtPmiyZ1a9zc+uwLpd4dPsh7v3
-----END CERTIFICATE-----

View File

@ -0,0 +1,32 @@
-----BEGIN CERTIFICATE-----
MIIFdzCCA1+gAwIBAgIUTzuP0DCVAESFS7E3nDyJIKuDPjowDQYJKoZIhvcNAQEL
BQAwSzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQwwCgYDVQQHDANTVkwxITAf
BgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMzA5MjYwMzQ5NTla
Fw0yNDA5MjUwMzQ5NTlaMEsxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEMMAoG
A1UEBwwDU1ZMMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC6DLiFSsZNQlctTUKjawO47LRt
Gg4fyerF7TP/+E+eWRxElBDoo7mq3va+x+A4FT9Xqoe20+ZSpXYCEhcATw1JEuXi
j2fPf5p2sHeWnv70/7aMeBhvzfh++qrup5LtwnASqYh6j05wOQFAecdqOlPTT9k9
39RQmUA6GNoMpv3NjToUM/9MgpvIEKBuiDt/hSUupkTz6P1T1RctKT0AFIA8Z3bJ
n8tbSo0H3R7TGQSIuIzzaFlMrZBOEiwURiX9q8YjVPgw2mZ4d/vDOBvWZxQ04Er8
Uvkq2eHZdQvfqvkqwwdri+rccI407iCg86XfwaMOt+W+p43SOB+fPa+IB58fvMYt
UtJalpjfEoOSRPrj+c6jRmJC7Ox3hWERHujNfncDf5ezpZNGicjDGyDafOjuButC
4Emq/0Ur/qi9+612wZwBDk3zP0SrhdXVBqfQVKnfm8bLDbV9HmatWTSu3e8zHsIK
RV+4dWZ7D/FtFtrjJGRdwVTN1nQ0XL9jwcXIlb+ADP4aSouHcSo+DJvl4tFYCoQy
icNz3/4UuWvJwSt5wq0OB8Q2yyaYm5+P7dYthBT4VAQNLdPQ4KKy/RyP15EE8Vpq
dECSi6BgiGjeX098qQU/qAzYtTFnbZJeI0u6C5sKDZgRK1RgBo2KZQX11c8P740I
hJhChi/Tv5ciembUfQIDAQABo1MwUTAdBgNVHQ4EFgQUxObRG/aeifFAEvKwMrL2
7uUMRU4wHwYDVR0jBBgwFoAUxObRG/aeifFAEvKwMrL27uUMRU4wDwYDVR0TAQH/
BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAjA2Wjwlarht6oGUGw7HY98uAC8gt
w/6m4wRWOkEJkGqW004eNnMqjt7OweJPBviRZafpXjMJE9yy/wGCsSWPpuC7+Akq
j/Xr0npSPS7UlvP0fvSA2a6WM3022tZhj0iWEf32w/m04JthRNNfznYT0KjUDosJ
U36MtesrUTytl6UIW9KSgWQ+jc+rVWwFjL/zCDuoDVsBT/WeHerJghpWp0XHCBxg
3E8ZCex9/u8eWl8YisMLbluV0QuCb7Fa5ybsb0xUShgYiHzj2kaRRB8Dg8ftKhXZ
DLp2b/rGs2F83i9S03DezbTH1zfw/ffjFO/ksxLCsn8xALEt8HbAu9sPNxMPRxgi
y5zIwU4eRjATseArO2cjMWjAwZVu49GjGWtSps1Azx1wUaHh8gbdypamyv8YP/Ie
NTUwZxbwTucMq3TGGOWApeQSFWPA5Sb2w2dBZEZWXX3dp6wVc+EY/C0opiSaUKw9
S+bpFPgi17pn2wYhtb9Jpo5DJm/iAmH7WrH6hJPfLmg4n3RG1ihsO9LaazQMIknb
DBkjprjnLN+a/YtFukd+XkZ1xuVbTRjYrV7QOJFzidWW5l49xx0ZTvgXbCKj5Wl4
ZqqU+z8KykBYaC85aBVbVwsbYhRLOilQrbtFNOgQFDnOq4tPjZVXsw/9hgC3FChr
+RQG8YEclj/l45k=
-----END CERTIFICATE-----

View File

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
/QygMqmjwwSOJi4P5uS604XabnKDo8V4
-----END PRIVATE KEY-----

View File

@ -0,0 +1,16 @@
[ ca ]
default_ca = my_ca
[ my_ca ]
crl = crl.pem
default_md = sha256
database = index.txt
crlnumber = crlnumber.txt
default_crl_days = 30
default_crl_hours = 1
crl_extensions = crl_ext
[crl_ext]
# Authority Key Identifier extension
authorityKeyIdentifier=keyid:always,issuer:always

View File

@ -0,0 +1,20 @@
-----BEGIN X509 CRL-----
MIIDMTCCARkCAQEwDQYJKoZIhvcNAQELBQAwSzELMAkGA1UEBhMCVVMxCzAJBgNV
BAgMAkNBMQwwCgYDVQQHDANTVkwxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMg
UHR5IEx0ZBcNMjMwOTI2MTU0ODExWhcNMjMxMDI2MTY0ODExWqCBmTCBljCBhgYD
VR0jBH8wfYAUxObRG/aeifFAEvKwMrL27uUMRU6hT6RNMEsxCzAJBgNVBAYTAlVT
MQswCQYDVQQIDAJDQTEMMAoGA1UEBwwDU1ZMMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGSCFE87j9AwlQBEhUuxN5w8iSCrgz46MAsGA1UdFAQEAgIQ
ATANBgkqhkiG9w0BAQsFAAOCAgEAMmcb01RBSBZ1/r7gIceXSB0WftdHgWQ3i+pe
kWdX6kxX/SBR1cd47ygdBSyDaRD2HUzwXAMa4icGFPZ33dtGnkoHjNxUMkK3O+2c
RArJFShXKRatvJgo/4peQx0/2Ho3dCNsrTbcbgQhMgHoRg4Rpgqp6KPFMEN6xysb
5ZJ75Pgp0wHAgcviq7zvoEObqoFX3CPeZ2ZYXO3qQElGFARg3K+2h5bugN7pJqWi
kVjfhf4bjkx2bt/4KDczatjvLk1FF6Mnlx9EWEABijelARI7l002RSrjkOsDa5Ya
vyLIT+6+wcb2qzJ4+ffo+U0Xpy4ZfKDnts2bXs997ro98KDutuJvEOhEcuNqoYxf
3qbzjeNJ82F8LcDHa89suNmqcX1lecEA6tM+kRXsuuQWuNczxDQ+t35jJ8QD0hD4
QX36JdZsk4Zqffunhm9vhciK2P4YvlAam1bC/fRVUzCnEaeTFXBbpZZfi2+gSJYw
PfLUlvVhICrQVCq2fMEvgaOreuL6prIBKSXDwA/fS1pV54bf9r9a5aBoJ4sYTPkx
4Y0ld8nmRLD5wPPs8ItIRReY2lqz2yR/ocEWbuFN0RqZItPCIsnaujWpF2a0UZeA
rlEW7RpPA8unGy9RasCq42Y4BOkmyF02Dudozvn01mGtWP6UwUyvEhkKIv7yc5ny
KVPnhaE=
-----END X509 CRL-----

View File

@ -0,0 +1,20 @@
-----BEGIN X509 CRL-----
MIIDWjCCAUICAQEwDQYJKoZIhvcNAQELBQAwSzELMAkGA1UEBhMCVVMxCzAJBgNV
BAgMAkNBMQwwCgYDVQQHDANTVkwxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMg
UHR5IEx0ZBcNMjMwOTI2MTYwMDI0WhcNMjMxMDI2MTcwMDI0WjAnMCUCFAHXnr3n
I/bocpxh4dhO2W7PGVGMFw0yMzA5MjYxNTU5NTBaoIGZMIGWMIGGBgNVHSMEfzB9
gBTE5tEb9p6J8UAS8rAysvbu5QxFTqFPpE0wSzELMAkGA1UEBhMCVVMxCzAJBgNV
BAgMAkNBMQwwCgYDVQQHDANTVkwxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMg
UHR5IEx0ZIIUTzuP0DCVAESFS7E3nDyJIKuDPjowCwYDVR0UBAQCAhACMA0GCSqG
SIb3DQEBCwUAA4ICAQA0zQRRPiEy2spIqiidE+10NAiKbbpGCfH7ZcUaxHeBoWTJ
bDU/cNqrOUISqkAR0npWwsTI8KADSv39vXXpush6FfabixeB53Och6S2Y5UGsLVE
6UCqcEOSvh42kIO5PiaLQJrFsFp1c1zWS4AVkPJTcjMTbev2cbPW88wRaRJ/GDKp
nfr0OTWY2PcSjaYjDmcTMO5s8kEQDAoNvhhTA2UUHZKuafcnjsgk3eOu62IXQQbP
fcKIKxSfJgGDgrCxIsKrKoH12gVcbEY7pupL9IdQSihf6ROW+9YphfzrzwL8/V+E
w5nZrd/DTrRSUQl+JcJ74xsjgX4PRCfbXM9FFzVuhD26sKJHwL8NUTwMmydrydF6
/1k3/K1bYf2+L0y4QN0XNTgfMUoRasPVv4bywg6bpPNXKijVKCyFxWFMrk/6ro5d
pDGYXco3l2g/mbINDT2piZWnBCDxI53wFtVfG99hXH3akSygeEt20cZT+qhNZ9eR
YIibCxWJYQ5xI/hTsoC0YFMirQsoI/CVZEkMOe/L44j5RdTdnemI3yvPanwy2s2l
zFWln9myyy7/OLEkEaYtNfZuCJId00ZHLdMmtpCN+woeiWuyWqext8pmTkMUousb
etIbd596MoTAXKg5AjimRzsaXASxpM6lhjvsBOD2iQ+VI94DQVSVj78lp61x1A==
-----END X509 CRL-----

View File

@ -0,0 +1 @@
1003

View File

@ -0,0 +1,4 @@
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment

View File

@ -0,0 +1 @@
R 330923042937Z 230926155950Z 01D79EBDE723F6E8729C61E1D84ED96ECF19518C unknown /C=US/ST=CA/L=DUMMYCITY/O=Internet Widgits Pty Ltd/CN=foo.bar.com

View File

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
9hhFTf+DrOyZ4lrtz2UjEPiueB2ZbFY=
-----END PRIVATE KEY-----

View File

@ -0,0 +1,32 @@
-----BEGIN CERTIFICATE-----
MIIFmjCCA4KgAwIBAgIUAdeevecj9uhynGHh2E7Zbs8ZUYwwDQYJKoZIhvcNAQEL
BQAwSzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQwwCgYDVQQHDANTVkwxITAf
BgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMzA5MjYwNDI5Mzda
Fw0zMzA5MjMwNDI5MzdaMGcxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAG
A1UEBwwJRFVNTVlDSVRZMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBM
dGQxFDASBgNVBAMMC2Zvby5iYXIuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
MIICCgKCAgEAmJT4PdVQeo2nzAmGelgpjOsiY1IHXqI/y/nx6xtpamQpAdNDlTyv
y7OgAVJoKJL+R/LnADeWI4yti2wIgGexNZOddxZejobS3c7H5q3LdZp6J0G6Ngas
OWU9tlZeu4Tya3GNOBI4eLCWx25iFe7VzfnUWP3U8hPsXo2+BuEfv/1cg4RBDtx5
4qFZUB/BzNQaam4Y5a3ENO4uUklcKJ3RSUNFz8dY0nM/rnlSUEKbKrE5h+ykV5Ek
uqn7Njtv69plOFjH/v9jl052BrmiuN11pAnG/jXo0dHGWzMhPc9wj50aLExgKIPc
1fVGvxwivKfcMx38cmJpYQJdBfdueiokQoZ8CmBytcQveQGCYj73QeLz3D5HnPk6
8WGIjw3rhs7DJHUfJPBmRmA6EQe3xsl0k0CtUV/sUWsfCMaxM8kgEJ8YpL7seYOT
XcTBA5ARd1AAiU356OH1X7XP2a4t6WRQrL+9G2imC3DTtuXrbu4VYG2WvqUxVkid
/YXPYmNbd6UDGuBMFlOMAcinG/Io8G/BEHqOxnBZrwHZIZzBC5kedoCQfJw2wfIz
z9AGEtGFwgZLfwSEy6ics3p+QKq+6Z+tU3UVhKzN8veEllYLuq81+qBwA7GyFzcz
aWzcSVwB7jpIxH343jIsvxxpawrof/9d8n+EwIwVwZeMehPHAYC5TX8CAwEAAaNa
MFgwHQYDVR0OBBYEFNfHmciiVzhqkHW8JLbtMgFNSc+1MB8GA1UdIwQYMBaAFMTm
0Rv2nonxQBLysDKy9u7lDEVOMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMA0GCSqG
SIb3DQEBCwUAA4ICAQAeK587sLTY3XQWKvIaJuWORsxAvhaEXHWTUJ+F0SHeeTdZ
Zgv0uDVQBmnwbndLy8/FKXPcJ2tKsUUCtu+/kCHKf89+yH1cRWU3PXfGAqqz61d1
curWJw2NYRX9N+SmlcsaLtv1ekRnkJFytehKyINy2c1efL+MURI7kk7IuhwBhNNR
p44rN9On5AJ1TN63LfM48U899kaN/85pHEcFuh1QBfVKKXCzZ6JfE88eKHhN8Sd8
alHoj9dlZboBqov1ehgrTuBgNR+mf9VkR31SPJe3valswpOwC9Smm3pOVSQW+GRb
tDRY4FExVNINCfwsYyPTJOys1AkYxz8J8cG96AYB11POZr4xniMoyPDdWuieDg7l
vImjlA3ZVAtIi1XWiWvMARTeV2hskVMVZdu62T2p1wzysxAa/L3K4jD0v9X+ID8o
0wREtTVpK7bfob5plbxEJMlOsBi2XWILRQNx5UsMAyBA8c3Ey47dTrJOOFHAx7dK
eUkztawJ3qxzwv6doUTtox8KlEZLijxuA302oQCb/JhuH4VweIUvbYvpbQ+1QKGo
Uqu1LcXj77hQmPp8Iqp4ygcXbKOIIIqNPQu4rcrAhgEAm7Qgv3hRDSYqNwA3e+MW
E9U/iK8rxaYZ7piVBruGHVI3+dNve9GgoINmWR/KTZnlEWBiX1yd0LVkoxBrPw==
-----END CERTIFICATE-----

View File

@ -0,0 +1,32 @@
-----BEGIN CERTIFICATE-----
MIIFlTCCA32gAwIBAgIUD9Cq8x4SnbHZnInvmS1GtsPPtDwwDQYJKoZIhvcNAQEL
BQAwWjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAlZBMSEwHwYDVQQKDBhJbnRlcm5l
dCBXaWRnaXRzIFB0eSBMdGQxGzAZBgNVBAMMEmZvby5iYXIuaG9vLmNhLmNvbTAe
Fw0yMzA5MjYwMzI2NTdaFw0yNDA5MjUwMzI2NTdaMFoxCzAJBgNVBAYTAlVTMQsw
CQYDVQQIDAJWQTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRsw
GQYDVQQDDBJmb28uYmFyLmhvby5jYS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4IC
DwAwggIKAoICAQC3ZtNlVOJz6fz7u+f1W851eUC6YviTNMNdOmsPlE2brQCHTO+b
EJ+1hyY/3v4ZRD1JtQ44Edic+7Bqnr0+EGMHaFaBE5R8InIQbKGSc869UpnZgYrI
Js1Q3icLuWOG8/Ll3hwQLe3P+I8WP5eA1xxZzwbRbSPGx28a2P5eXPOAy8MUzA6G
Hz4YoUNND+0x0sCQUXFVj3+NYCn6GGqwRUj1IfVLA6zpiwNdT5OYDwdEgEJKfhai
ZPcemIV08YgbreKPo52fzuWaS8WaaTNCLGHTuRCMMjOPssRdP9EzbIrTYxDQPRbN
uXPexjP8MWYGtDQqZYqafhDm6egk06Ihz/S7K8vXT3NnB7SDo5/afqBvjp8KCyuI
JPaL6c7mfNiD/dIc93uIdsIz8xbt3W4diZQeHPL8mapnPXYETV2T0U7/G+F/iprH
dCJIPVECGA1BAYnQ5mruFhsbzzVT/fELdRYnXHwxqQr689ChSz4O2mPBk7ECMt+4
bjmx9mDGISM2sSxTfJ7EjEoz2lxB36OJTQt5OCar5Rv6Gw6eLuW1VvWRiI5QTqAw
LL4tM+bba9P4Zf8ZcHyZtHjpKT5JHcSfiGfpdT/p1YFe7dkVw/uTT/3vIDFgeoeL
ZS6FqAOj7UfIV4L94r4f9ZclyDGuxsMgW3io45H77FVwQ86Q6EMKA/PCawIDAQAB
o1MwUTAdBgNVHQ4EFgQUDjmdnNwr6MWPMhPftdbsTkQbdG8wHwYDVR0jBBgwFoAU
DjmdnNwr6MWPMhPftdbsTkQbdG8wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B
AQsFAAOCAgEASz+WIWtN1piSwUpQ5xmL67q8MK11fEYR4JeeCSbNIz3E/6ExXwLh
m+k/sKuAR0Ab2YRry1gi2AiFLo4rsmkdSNegcndNI4OPiixJyEn1ZwJOaXziAqMH
E1yuwpWQmVyiHurVyILvcD4z/FD6HpVb3AEd09wlnUeLTj0GA3F3k8Q5wb7L33TQ
gD3rfJiR9kTHVCoaZdJlaEZH6WPs5xSLY+tYK8X3+jrglqTB5IDO2I2rr0ySoGDM
I6VS4ZkCpptfDw164Nd8EmL+T3iPFMgJYAUVKvtV3+YnmNz6qaHQDYRTXgdZNA0F
LVyYaxE4UIpm9I9eG1fZat2hOVZUuz8Nr9maeg33IrPOxji9Q9hjL5lG0l+Odqjj
17uQpBew+Ql3EXZ3Nk8RgDvHnl0vWPk0k/KoPbSGQdUFAtF/Rsv8CMEzK4wmtLhX
J0d5uGIX1X5R/mhAm6jl9crnw7XyLbd/3NfoqhKeFN+hEZ0TL9CUTth+O3y2Vj+A
+QNMBopGunnEsKbwfwjUIjqt0z2oH16pn/KFPxF8U+t7x2oYMDNk/8M6xVFkH8v9
gvuoTt+SoES6+qeU8nAD475SDp0JIaBmaugTkIa7RwsgHNGN/SVzfXcT6J2ht8Wj
o3SbSVt2T1KTGoaOpTv3FRzcwpWnqrOu7ZHxTco37NMTtKqQX6FaEFI=
-----END CERTIFICATE-----

View File

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
rUkotyfd34kJTx26P3/2MF5JtQqJVSCW
-----END PRIVATE KEY-----