Skip to content

Instantly share code, notes, and snippets.

@ccho-mongodb
Last active July 29, 2019 20:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ccho-mongodb/67dc14a2344971619403982def475a8d to your computer and use it in GitHub Desktop.
Save ccho-mongodb/67dc14a2344971619403982def475a8d to your computer and use it in GitHub Desktop.
Attempt to connect using x509 with mongoc driver fails
2019/07/29 16:33:07.0471: [87700]: DEBUG: cluster: Authentication failed: auth failed
auth failed
#include <mongoc/mongoc.h>
int
main (int argc, char *argv[])
{
mongoc_client_t *client;
mongoc_database_t *database;
mongoc_collection_t *collection;
bson_t *command, reply, *insert;
bson_error_t error;
char *str;
bool retval;
mongoc_init ();
const mongoc_ssl_opt_t *ssl_default = mongoc_ssl_opt_get_default ();
mongoc_ssl_opt_t ssl_opts = { 0 };
memcpy (&ssl_opts, ssl_default, sizeof ssl_opts);
ssl_opts.pem_file = "/Users/ccho/dev/drivers/certs/test-client.pem";
ssl_opts.ca_file = "/Users/ccho/dev/drivers/certs/test-ca.pem";
ssl_opts.weak_cert_validation = false;
ssl_opts.allow_invalid_hostname = false;
client = mongoc_client_new ("mongodb://localmongo1/?authMechanism=MONGODB-X509");
mongoc_client_set_ssl_opts (client, &ssl_opts);
mongoc_client_set_appname (client, "mongoc-example");
database = mongoc_client_get_database (client, "test");
collection = mongoc_client_get_collection (client, "test", "stuff");
command = BCON_NEW ("ping", BCON_INT32 (1));
retval = mongoc_client_command_simple (
client, "admin", command, NULL, &reply, &error);
if (!retval) {
fprintf (stderr, "%s\n", error.message);
return EXIT_FAILURE;
}
str = bson_as_json (&reply, NULL);
printf ("%s\n", str);
insert = BCON_NEW ("hello mongoc", BCON_UTF8 ("world"));
if (!mongoc_collection_insert_one (collection, insert, NULL, NULL, &error)) {
fprintf (stderr, "%s\n", error.message);
}
bson_destroy (insert);
bson_destroy (&reply);
bson_destroy (command);
bson_free (str);
mongoc_client_destroy (client);
mongoc_cleanup ();
return EXIT_SUCCESS;
}
const MongoClient = require('mongodb').MongoClient;
const fs = require('fs');
// Read the certificates
const cert = fs.readFileSync(__dirname + "/client.pem");
const key = fs.readFileSync(__dirname + "/client.pem");
const ca = fs.readFileSync(__dirname + "/ca.pem");
// Customized for sample client keys
const userName = "CN=Chris,OU=TestClientCertificateOrgUnit,O=EducationClientCertificate,L=TestClientCertificateLocality,ST=TestClientCertificateState,C=US";
const client = new MongoClient(`mongodb://${encodeURIComponent(userName)}@localmongo1:27017?authMechanism=MONGODB-X509&ssl=true`, {
useNewUrlParser: true,
sslCA: ca,
sslKey:key,
sslCert:cert,
});
client.connect(function(err, db) {
var dbo = db.db("test");
dbo.collection('node-data').insertMany([
{
item: 'pizza',
qty: 25,
tags: ['pepperoni', 'tomato', 'dough'],
},
{
item: 'shortrib',
qty: 85,
tags: ['beef'],
}
], function(err, res) {
if (err) throw err;
console.log("docs successfully inserted into node-data");
db.close();
});
client.close();
});
2019-07-29T16:25:41.269-0400 I ACCESS [conn12] authenticate db: $external { authenticate: 1, mechanism: "MONGODB-X509", user: "C=US,ST=TestClientCertificateState,L=TestClientCertificateLocality,O=EducationClientCertificate,OU=TestClientCertificateOrgUnit,CN=Chris", $db: "$external", $readPreference: { mode: "primaryPreferred" } }
2019-07-29T16:25:41.269-0400 I ACCESS [conn12] Failed to authenticate C=US,ST=TestClientCertificateState,L=TestClientCertificateLocality,O=EducationClientCertificate,OU=TestClientCertificateOrgUnit,CN=Chris@$external from client 127.0.0.1:58737 with mechanism MONGODB-X509: AuthenticationFailed: There is no x.509 client certificate matching the user.
2019-07-29T16:25:41.270-0400 I NETWORK [conn12] end connection 127.0.0.1:58737 (1 connection now open)
mongod -dbpath /Users/ccho/dev/drivers/test_db_data -logpath /Users/ccho/dev/drivers/test_db_data/mongod.log --sslMode requireSSL --clusterAuthMode=x509 --sslPEMKeyFile /Users/ccho/dev/drivers/certs/test-server1.pem --sslCAFile /Users/ccho/dev/drivers/certs/test-ca.pem -fork
-----BEGIN CERTIFICATE-----
MIIG9zCCBN+gAwIBAgIJAKahZELIq3a4MA0GCSqGSIb3DQEBCwUAMIGsMQswCQYD
VQQGEwJVUzEhMB8GA1UECAwYVGVzdENlcnRpZmljYXRlU3RhdGVOYW1lMSQwIgYD
VQQHDBtUZXN0Q2VydGlmaWNhdGVMb2NhbGl0eU5hbWUxHzAdBgNVBAoMFlRlc3RD
ZXJ0aWZpY2F0ZU9yZ05hbWUxIzAhBgNVBAsMGlRlc3RDZXJ0aWZpY2F0ZU9yZ1Vu
aXROYW1lMQ4wDAYDVQQDDAVDaHJpczAeFw0xOTA3MjYxNTA3MDRaFw0yNDA3MjUx
NTA3MDRaMIGsMQswCQYDVQQGEwJVUzEhMB8GA1UECAwYVGVzdENlcnRpZmljYXRl
U3RhdGVOYW1lMSQwIgYDVQQHDBtUZXN0Q2VydGlmaWNhdGVMb2NhbGl0eU5hbWUx
HzAdBgNVBAoMFlRlc3RDZXJ0aWZpY2F0ZU9yZ05hbWUxIzAhBgNVBAsMGlRlc3RD
ZXJ0aWZpY2F0ZU9yZ1VuaXROYW1lMQ4wDAYDVQQDDAVDaHJpczCCAiIwDQYJKoZI
hvcNAQEBBQADggIPADCCAgoCggIBAMIrkSvBVF7px6QudPVM2Xv9o7JPj9EK/2TK
S9LdVJym9tSaNn5AVUtYGdbL2+tGZPa2ANHc4BJdpTcCfRmGNjPpl9ua1cItfmmm
2ex0RFpugCjMwENenAYX900fzrb717gSROsEmxvAPE1PO28DzfAVMt2ROef4r71b
eVvEm5HKtbdX1R8xhAAAZAFbDK+GULTEjspgFzZQ+u71hAv6PLfCWSZnb0IdVDBH
K+DmQJyOhjxURQYMbwMYaAt7CA0jFzJ9SrYi7SR70EQr4EnteV0a/kz09rscAOWG
eqIPjcSBOWMw6+/M6nJm37bQm8RtgJxtf0sz8xgjOrC7pbmk6Imcb+RdWiFtO9VO
1hIRCC+zC2FwSSUzseqFuZTjVUYXQyalUc3lXVJO1P+VdJvsdJokC1O3v/3I4kvc
NdJ4YX1oaBoR61/12qVW3PkeVdGu5uddkzco6CHjxRLGo4xkjtL8pAsiklcowYn8
Czx5Rmeg0aPFQVmZgHBcNml3HxdBjtWMOTGRQ5zWoFeZ5m8gSyvwQVb3pxvtyI7V
iYz1OEYuQPglV78mfds0OzNuZLg0OKCT5GFWL6uxvbGgA2e4T+P5tS8cdId4P88Q
4u+NJSL5vvUx+TXtP2ex1Ngp6vo1a3JYIKTM1QoW4aiW7Niv/7DS7bf2fYntr5b0
YutRukNHAgMBAAGjggEYMIIBFDAdBgNVHQ4EFgQUZk9FJeh09lPGC4Y6JNLNOWXk
fFUwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0jBIHZMIHWgBRmT0Ul6HT2U8YLhjok
0s05ZeR8VaGBsqSBrzCBrDELMAkGA1UEBhMCVVMxITAfBgNVBAgMGFRlc3RDZXJ0
aWZpY2F0ZVN0YXRlTmFtZTEkMCIGA1UEBwwbVGVzdENlcnRpZmljYXRlTG9jYWxp
dHlOYW1lMR8wHQYDVQQKDBZUZXN0Q2VydGlmaWNhdGVPcmdOYW1lMSMwIQYDVQQL
DBpUZXN0Q2VydGlmaWNhdGVPcmdVbml0TmFtZTEOMAwGA1UEAwwFQ2hyaXOCCQCm
oWRCyKt2uDANBgkqhkiG9w0BAQsFAAOCAgEAcAeVdtgEhgChn8IW33i24ehZXG3O
RbGAMx7dZhZIziD7uMA9ztL2UTi4v6mZEIwCnC/INMz8yAL4njybdi7Y2rx54Al9
rZx03SyQfM2Oy+T8jfAcUAo7Bt2T0n+Dz03/FwI/9gMdwfaBvDFTPyaoHUKNOSDL
sOw7HJK+Xt2oeVshtWAiHNrrWNNbQxjDLi34+eMy5zjJy3h/2jNY2N8LXNjmHV8Y
1KaH8xXWSSUN8qmvBG/9RQk9W2RIfAdK6XLSrZ5QsMI8kDIdiW8A2vukhFpIPXiO
8stTSPmCR5Xhs/GGNSmyJJ/7qXxf/6R4VmgRkHILJhS34/pmvFgga4CqvZqSLUCu
RQPITsf/1NNJPF1Sge9EmQ2OEfLBG7mWHnmD1EakuKQ2fNPzeoW+4jjV3WUtoPSY
wJeU/OD8IVGTpGQJ+xBa6DNVHpZL7N/zX6BeU9hjBB2KW04yvmxJGfE0+SQJo1mn
0pZ4UXbA2hlr6Cu6YlewTrrMLbA0sbUpVeW3lGGKosDnQcfv+D3o9QA9Q4T6M1hA
oO0MVGPjsTCVhVGLoQigR53fao/MZac5EDJ1A6mdeGZDD2VQ0l4Lx68Gk1h5TZ10
IR3VdC476IwmNMTZ6SKXpl2ZmrS3sF2jEK3DqUIN2MHynap86OKrPUIYrlREKK/s
BvHsZq0Z492nD7U=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIG7zCCBNegAwIBAgIBATANBgkqhkiG9w0BAQsFADCBrDELMAkGA1UEBhMCVVMx
ITAfBgNVBAgMGFRlc3RDZXJ0aWZpY2F0ZVN0YXRlTmFtZTEkMCIGA1UEBwwbVGVz
dENlcnRpZmljYXRlTG9jYWxpdHlOYW1lMR8wHQYDVQQKDBZUZXN0Q2VydGlmaWNh
dGVPcmdOYW1lMSMwIQYDVQQLDBpUZXN0Q2VydGlmaWNhdGVPcmdVbml0TmFtZTEO
MAwGA1UEAwwFQ2hyaXMwHhcNMTkwNzI2MTUwNzU1WhcNMjEwNzI1MTUwNzU1WjCB
rDELMAkGA1UEBhMCVVMxITAfBgNVBAgMGFRlc3RDZXJ0aWZpY2F0ZVN0YXRlTmFt
ZTEkMCIGA1UEBwwbVGVzdENlcnRpZmljYXRlTG9jYWxpdHlOYW1lMR8wHQYDVQQK
DBZUZXN0Q2VydGlmaWNhdGVPcmdOYW1lMSMwIQYDVQQLDBpUZXN0Q2VydGlmaWNh
dGVPcmdVbml0TmFtZTEOMAwGA1UEAwwFQ2hyaXMwggIiMA0GCSqGSIb3DQEBAQUA
A4ICDwAwggIKAoICAQDwragKg7nLOiM5IG2b6B9E652wnKtL03gZRRZp5bK8ZGzE
3TK59YRB8Mf7E0izPLw9KoMfOeOE1aN4xKXOQ6V+LeQkO5ZjBOHWIgoc45xHuE26
MQ3GF70VAh0405Z7eXBD3miGfLhSOfZpO5abN8zgtZeHKKzAczer0gS4+sRwJbg+
GwmA9IqFG6Tbuig+Xv431DUmVhl3v0/k4p0cvzDu6l+38DXkIqnR67nlCg+DZPjQ
vc/oloYPvASxEo5GSV8BSjdNyUdkPDuF0VsemcsCsXpQiXSu78MP8ZSzBmc42HPD
nUxe2AFvaP6LQkUptlXNIMn2lNQ09/NjyV9SDGdKQPRgjy/GJtiNPdMV4TmEsMml
nAp0gAuYvL8LLutQP4b34pB8ZzN+mbGIaXgGORiS8D0/9WGfx86VEk5WIWQR9Tx8
LNfZCiBA37Lcbowt4TEKhwGI/xLY7RtoWYV7rvqz3w2PSLaQW/4m0wIoji6WCEpa
KtcdQd9OEWUyiPywcqcAaSOi+tKl9lZh0PRnDQolNZUxnGbquWJZ9ltsZADa5bJn
jLNTqJF2IxLI7xmod5EQqOH1SFAVx2luNLMyxKgNuCpEuOUjPOcy50eiZZ8MY2on
2Ca5joJLKlZfr1XRKkKDV4XIvphb4wfjFP+4t9t3A3bnJQvS8+4/wcX2r1IjKQID
AQABo4IBGDCCARQwHQYDVR0OBBYEFPxyB+YyYOEjsNV45MV/MBn38xdRMA8GA1Ud
EwEB/wQFMAMBAf8wgeEGA1UdIwSB2TCB1oAUZk9FJeh09lPGC4Y6JNLNOWXkfFWh
gbKkga8wgawxCzAJBgNVBAYTAlVTMSEwHwYDVQQIDBhUZXN0Q2VydGlmaWNhdGVT
dGF0ZU5hbWUxJDAiBgNVBAcMG1Rlc3RDZXJ0aWZpY2F0ZUxvY2FsaXR5TmFtZTEf
MB0GA1UECgwWVGVzdENlcnRpZmljYXRlT3JnTmFtZTEjMCEGA1UECwwaVGVzdENl
cnRpZmljYXRlT3JnVW5pdE5hbWUxDjAMBgNVBAMMBUNocmlzggkApqFkQsirdrgw
DQYJKoZIhvcNAQELBQADggIBABLMkOSUC3eEf4rDoy5z0etDfhreEEDfa/kTM430
td6xQ2EW+yms7WYffDX5vASCfRAiCz/v2hHfm3v8oa+qrKBQlvUCWqxB89teGFZl
l6T7HwutdA3zAXNlFP5O6m4XE9rCPjwOcFHi8Ok4JMmyyt8Tm9PBJiOAVuSfGbge
BZ35wPXutDgIomDkEHeGBAIn9HLaExibT0Ivtf3SQU4Q3QhaQbE0/uCghEiqNHBc
4Z6UxryXk2WKyivQuYEX7A2keFbDmNMzNLl9fkoxdRSrlwjZ1pNkTzBIGxPhzPYi
JDJeF23HxLi50f5bwBx/KQR26zhwk8FDdMkL2kyJSILkNaL0LTGyimoMYvRpKeNx
+a/EAMK5NGioF820vWEHPlFRLjzzVrglXGGTmiZccU5CjKgiJiSJEAYtQ9RHtjiW
+40H/IWquJoYHhfkv+V8BsTuIbWcBU0IFnR6j1mGQ+M4ZOBh0RKQhVv2wMh+f1cU
ZYd/cZsnjzBSWPyi6v6luDQQN4CLuiv1ze8p/ErswQszCF+VTfG+Cc7xjVw/czad
Kz1L8LKm22fN/mNwwz13kpy9clpC2xii3X8gu4hNZ3mL1Qonh1jJf63vfMYpwgg9
PxVkV7FM/VpyPgMEt9Jz5Y7EdLbp+cN8M+l4reT4tU4lZgIKQfWaPGWp4Afo5pLU
8KGn
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGnTCCBIWgAwIBAgIJAOcFggFzI7rDMA0GCSqGSIb3DQEBCwUAMIGsMQswCQYD
VQQGEwJVUzEhMB8GA1UECAwYVGVzdENlcnRpZmljYXRlU3RhdGVOYW1lMSQwIgYD
VQQHDBtUZXN0Q2VydGlmaWNhdGVMb2NhbGl0eU5hbWUxHzAdBgNVBAoMFlRlc3RD
ZXJ0aWZpY2F0ZU9yZ05hbWUxIzAhBgNVBAsMGlRlc3RDZXJ0aWZpY2F0ZU9yZ1Vu
aXROYW1lMQ4wDAYDVQQDDAVDaHJpczAeFw0xOTA3MjYxNzA5NTNaFw0yMDA3MjUx
NzA5NTNaMIG2MQswCQYDVQQGEwJVUzEjMCEGA1UECAwaVGVzdENsaWVudENlcnRp
ZmljYXRlU3RhdGUxJjAkBgNVBAcMHVRlc3RDbGllbnRDZXJ0aWZpY2F0ZUxvY2Fs
aXR5MSMwIQYDVQQKDBpFZHVjYXRpb25DbGllbnRDZXJ0aWZpY2F0ZTElMCMGA1UE
CwwcVGVzdENsaWVudENlcnRpZmljYXRlT3JnVW5pdDEOMAwGA1UEAwwFQ2hyaXMw
ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDrniZEeNkro8qn5W0JiscF
uvMeHnC97dTr7L8P9bNbfJNMKVAS+eQqJkwjWh7xQ/FA8xcaaXmxF/6iBGY7u4jl
LzCgkiqjK/8Kh1yXR1gUhQcrTDxzke2ScCNMkDAwxDgcHtI4/UBkPQTlP+1nfIjV
H076Lxw2yZAQ6SK1e9ek1q3AY9qD0fJgsd/HtUo+YkcRSQdbPQsPqoZEDzk2LHpU
Oyq4M01x73KsDcPC/X0kAFBV4y2nY+MMuAOR1jlDx+emRBTEc+oMt5sOQuVq5GZB
8dkOe1W6CWV7JA5OPWxinGoSan/d+WWhOjQQDGjknmhRWJUkCpL11/cXTf3uIoAV
jNI1je40DgjOLoi7d8yGUrQ7kmG4/yO0YeCd/WuQosL6+2YRKM9RWug6ZpomblDa
7SousZiEkFni2vuLGo8Gz/8JwA7g7xaOq6sEgnRBcMFvkcRK10VnQpPLp+S3uJH4
/jjNQ1UIYN2/zB3m9KezBhwMHx/aInj/cXut9mQHR5pOyB1cmymSeuHnaMMqgkSO
zeMFHtGGO57d4uiqC+xZawA1YzacYSsjeC9VcZeaiEnocVY5KLs2T9e8JaKeMTD4
gvR1wpxO4szB7t9i1i5kcdRV7z3evHmKV/ZewPvrSb71KFqvRWLEXXgCc/NolYUz
7Z32VeGqURwO5VwO8ho4UwIDAQABo4G1MIGyMB0GA1UdDgQWBBQ8zUR1rtnNvJJp
cSdbDLjuR4SYYjAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIFoDBXBglghkgBhvhC
AQ0EShZIT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUgZm9yIFRFU1RJTkcg
b25seS4gIE5PVCBGT1IgUFJPRFVDVElPTiBVU0UuMB0GA1UdJQQWMBQGCCsGAQUF
BwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEACrY4dCulwXDEansO7Voq
eQ85jwvf9/duziT4pK3e3b6oYpVplMNEgxsZ5GSxNF7jZq+gxSbr93NFJW157SfK
9YODDkqczTWNaZ24ezxm2CoB1y3S580xgdb0RgmQzYhaqQFYNopHwJZhZMJUsN6A
wPQS0X2KvLB3HNsS4eKCQCBUj0Q30OkvFuKb4PkodJC5xyQeMfa+O0f1mz6dmlgA
QqcxD9fJQ0wtqqi1VS5hrBOkrLlhyjYte8qL8yo6qfYn7syXI9Jwezu620oMIJ9+
5mrGOjv+0kMfYfn0uJ4LS2ep/15OdTVRUPzBKsL834doAcokgLV+pJRLPF4BkPkr
80UJ4tyfduCAhdOHQJOVlMBrv8qyZ+mPFsFxXvRjB4MdJsJ4DoXLllNWqwajb/aq
wfsmT1Xxy3xZzxUrRSsjjmDQzNy6KF6cR0IO8dTy/ah2UHhNfPxR+LdKM5WdCWds
bsHWvim8y2Dl9Hy88zcXgqiLPzwd9ktdB3vQ+xwrRk4nXuuIRJwPVid64ej+BTjp
7zxnFIZ5Yw0kjHMROWwFKjr4UhMwFJCZEODMS8kvW7MgodbaBV3YxR7rbczNdof9
MN+Kivc/MNzzksWbW3Rz9nC7gB2bD8gmWQSs+2rW63X3229UIqCMFWpCe6lCWtaB
Ce7Dn6wnJZssknPx+BYfQmQ=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIGwjCCBKqgAwIBAgIJAOcFggFzI7rCMA0GCSqGSIb3DQEBCwUAMIGsMQswCQYD
VQQGEwJVUzEhMB8GA1UECAwYVGVzdENlcnRpZmljYXRlU3RhdGVOYW1lMSQwIgYD
VQQHDBtUZXN0Q2VydGlmaWNhdGVMb2NhbGl0eU5hbWUxHzAdBgNVBAoMFlRlc3RD
ZXJ0aWZpY2F0ZU9yZ05hbWUxIzAhBgNVBAsMGlRlc3RDZXJ0aWZpY2F0ZU9yZ1Vu
aXROYW1lMQ4wDAYDVQQDDAVDaHJpczAeFw0xOTA3MjYxNTIwMTBaFw0yMDA3MjUx
NTIwMTBaMIG2MQswCQYDVQQGEwJVUzEjMCEGA1UECAwaVGVzdFNlcnZlckNlcnRp
ZmljYXRlU3RhdGUxJjAkBgNVBAcMHVRlc3RTZXJ2ZXJDZXJ0aWZpY2F0ZUxvY2Fs
aXR5MSMwIQYDVQQKDBpFZHVjYXRpb25TZXJ2ZXJDZXJ0aWZpY2F0ZTElMCMGA1UE
CwwcVGVzdFNlcnZlckNlcnRpZmljYXRlT3JnVW5pdDEOMAwGA1UEAwwFQ2hyaXMw
ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDasqyk5DhZkQT4IWpd79r4
TToKjtzkrGi7afx4N4zjGQRvQKtWNgAw93ncgvvBZ9aTQwZ65X8v4jHFfvRQ4V/L
NaYgG+Oe8MtgNUMUfiWXejJZwHEpukVMeTM+FjOptvjQluLERE3GhdE+wjFcVoF8
oSnZrYuSmrDS3pnWsgyNingsxA6gLl1hFT6/s9HC5twLbzqmVQIFS2/3cIc6xw6e
tNB60U7mwqIHzDkchjAnpluAoabikG7bVonoAofRZE4QmNrVCG+WJ8I+bfn1D0KX
e6ahu5SYeqGvbFhWBQIyP0CqwgBFjsTMCiSqmCcZfk90e/RexBMM2L+XeUwBtcGL
mBJ+6vSFgj63Mi9wambW6nl99P14DnYjS2aACTxFizhchp5SmJ+FUiTnDSiHxRjL
Th/k/Jtnq0xlD+OO8ktEs6R3TorOW0TH66kdHy9nz4R9fqD9yFenfgtQWasSuRHF
NF/9Lbja+t7U5Ouh/JLxAcR+qhWY6j1PD6wX5UXw+s0L73sXOccc7RytqGEfJLJb
FU3NmM6TrjWTFrMizirMNmSlGlZjFtJ2gxtWQ4Nc7PEskuGITvzwgKraggrQyZhE
m9vaV3FyorpG1PRrenbNudydS29VHrx5S5A13jtkrij4/Gy4kCa6H9l1yL7J97Ho
NQ60MlNExVmQmu9taB5TYwIDAQABo4HaMIHXMB0GA1UdDgQWBBRs8KvbhCLVUN9p
Q/6Ef48ikp7KZTAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIFoDBXBglghkgBhvhC
AQ0EShZIT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUgZm9yIFRFU1RJTkcg
b25seS4gIE5PVCBGT1IgUFJPRFVDVElPTiBVU0UuMB0GA1UdJQQWMBQGCCsGAQUF
BwMBBggrBgEFBQcDAjAjBgNVHREEHDAaggtsb2NhbG1vbmdvMYILbG9jYWxtb25n
bzIwDQYJKoZIhvcNAQELBQADggIBAN377/71fTGavFdhnEMU4qVxAVC4lKQKKD9C
Lr3mBZbpLOg78l2vfn3yxYphPHiupcAZs+xaHBMEGYV5oBZVlY/7s1uGj0tSIaJC
sRq1c/EFmA4SWUY+Q1wHZ1K6Gp8K6buW3BwwKRXr7yWx3S4fwfseDCrW83aslnDh
RNrL4Bd8C7hYk5SD8hJpoMN/ELP8gundgnFquWSmBj7drq1TfrGda/D/N9JRkkHC
glK9kFtT6mQPuZ4Gjh0mUgdAPPzrTxtis/Gd0g49VW2eJGwGU0PJ3V5Yy6hiQz+G
zp1a3VqdeRNHOwYhodhQyX/9gPYDFDKE9kMCbh15EHm1DYFUn3dcVq3ZtLwz6XS5
0e5nzDCV2oAjOYGCru53caMFfjzJ0OSe/m7ttYpenO3U5aaUfoN+vVYLSsc//Pk3
GCD3TpOfFPXFIZqlfcDC81Gs7ECTkI778h5+fTQg7wjcwLFdQzmGyXiA0/PzhfeC
IBSWB5VhTmkC748gDW/WGgCJL1Vn1H98ARInmEiUiNG1k9dSwe8/mCkvJTy+y/zo
evyegxva32s0PvoD36rRhcH5cUajYIGGhXWIucN6JWkusBI3JwEsNo2fqoiw9BxO
9XlZ4bOGObz67LQbJ+w3ZhCjrePr7MFggteOYUdK7SaI89lZxKtt0YnLVkmgZrUN
fIxMjgd0
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment