Commit bb79aaa5 authored by Mingtao Yang's avatar Mingtao Yang Committed by Facebook GitHub Bot

Update test certs

Summary:
The test cert "test-cert.pem" is signed with a SHA1 based signature algorithm, and newer distros such as
CentOS 8 will fail loading this certificate due to its default security policy.

This diff regenerates the test certificates, following the old certificates
names as closely as possible. I included the script to generate these in case
they need to be changed in the future.

Reviewed By: AjanthanAsogamoorthy

Differential Revision: D21271202

fbshipit-source-id: de4227ae81dfffaf00f8d355e83936db6eb5fe31
parent 6e85117e
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAKMZICGWUzawMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
BAYTAlVTMQ8wDQYDVQQKDAZUaHJpZnQxJTAjBgNVBAMMHFRocmlmdCBDZXJ0aWZp
Y2F0ZSBBdXRob3JpdHkwHhcNMTQwNTE2MjAyODUyWhcNNDExMDAxMjAyODUyWjBF
MQswCQYDVQQGEwJVUzEPMA0GA1UECgwGVGhyaWZ0MSUwIwYDVQQDDBxUaHJpZnQg
Q2VydGlmaWNhdGUgQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEA1Bx2vUvXZ8PrvEBxwdH5qM1F2Xo7UkeC1jzQ+OLUBEcCiEduyStitSvB
NOAzAGdjt7NmHTP/7OJngp2vzQGjSQzm20XacyTieFUuPBuikUc0Ge3Tf+uQXtiU
zZPh+xn6arHH+zBWtmUCt3cBrpgRqdnWUsbl8eqo5HsczY781FxQbDoT9VP6A+9R
KGTsEhxxKbWJ1C7OngwLKc7Zv4DtTC1JFlFyKd8ryDtxP4s/GgsXJkoK0Hkpputr
cMxMm6OGt77mFvzR2qRY1CpEK/9rjBB6Gqd8GakXsvoOsqL/37k2wVhN/JoS/Pde
12Mp6TZ2rA8NW8vRujfWU0u55gnQnwIDAQABo1AwTjAdBgNVHQ4EFgQUQ00NGVmY
NZ6LJg8UQUOVLZX1Gh8wHwYDVR0jBBgwFoAUQ00NGVmYNZ6LJg8UQUOVLZX1Gh8w
DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAdlxt5+z9uXCBr1Wt6r49
4MmOYw9lOnEOG1JPMRo108TLpmwXEWReCAtjQuR7BitRJW0kJtlO1M6t3qoIh6GA
sBkgsjQM1xNY3YEpx71MLt1V+JD+2WtSBKMyysj1TiOmIH66kkvXO3ptXzhjhZyX
G6B+kxLtxrqkn9SJULyN55X8T+dkW28UIBZVLavoREDU+UPrYU9JgZeIVObtGSWi
DvS4RIJZNjgG3vTrT00rfUGEfTlI54Vbcmv0cYvswP/nMsLtDStCdgI7c/ipyJve
dfuI4CedjE240AxK5OFxFg/k/IfnB4a5oojbdIR9hKrTU57TPaUVD50Na9WA1aqX
5Q==
MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDDBxUaHJp
ZnQgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTIwMDQyODAwNTYwMloXDTIwMDUy
ODAwNTYwMlowJzElMCMGA1UEAwwcVGhyaWZ0IENlcnRpZmljYXRlIEF1dGhvcml0
eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKCLBTaIBUFW1F3oRHsD
Df00gf9OicbGcx7tC08LqrD7pKPniuITJF3AHdqj3b39tjG926YWdOWzJ/tIQXQm
ehar+fpAPGt+00lIyBB3B1c9D0kOqFJ821ux6wy0Y/NlIFc0V/1C8BCHL3Nk5xYQ
Uv8BAooxVY9pSd5V4YemVuJiINh22PLFH3X/+UMZXweFSa/VaBFgZ01mVe1gfczV
yrOTGmI4VcaNq3fivsJJkbBwcl9b0cO2dLsYA/jdJ0ry1faPVlg8qUUalnpS/xtM
ouFRQx6rzJRkLEnWruN2tGsjEgI1Q7ftw1jja8q6WLVjXOu5CWc3NYYW3MjXzVvu
sx0CAwEAAaOBlDCBkTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTWuz4AvwCK
Cx9nyfYrW7uFYAOujzBPBgNVHSMESDBGgBTWuz4AvwCKCx9nyfYrW7uFYAOuj6Er
pCkwJzElMCMGA1UEAwwcVGhyaWZ0IENlcnRpZmljYXRlIEF1dGhvcml0eYIBATAO
BgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggEBAFGc6OORCr1cc+Q5EtkU
K6l1Z5+CpfG7mhdylu7XKlxOvRRRGyxBuRDjIWBSHo+k+k57inp2s5IpdP5BKMVT
FtKOPybQ7BHtmDzeYUG91+mvG3USGf3o7b8ps9LGBLTmOjsc/saY3MeYcXHL9ffW
JBatTmuBggDKtMGsvDirdIhhV0jFChWUvRykQbpOar14rUYUSKZnwpHp6iYkI5Mx
KEBhJh2riwtin1czwHwPzxH9y62E0idsN3uG4rvSQoFhyeNgYryOaROAWujAmvza
djQWu9Lm48fBtTOzilhDCX/Nk+TmulWHQI1lw6wBIynG6GGa0jScB+QcIwGg8oV2
Mnk=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAoIsFNogFQVbUXehEewMN/TSB/06JxsZzHu0LTwuqsPuko+eK
4hMkXcAd2qPdvf22Mb3bphZ05bMn+0hBdCZ6Fqv5+kA8a37TSUjIEHcHVz0PSQ6o
UnzbW7HrDLRj82UgVzRX/ULwEIcvc2TnFhBS/wECijFVj2lJ3lXhh6ZW4mIg2HbY
8sUfdf/5QxlfB4VJr9VoEWBnTWZV7WB9zNXKs5MaYjhVxo2rd+K+wkmRsHByX1vR
w7Z0uxgD+N0nSvLV9o9WWDypRRqWelL/G0yi4VFDHqvMlGQsSdau43a0ayMSAjVD
t+3DWONryrpYtWNc67kJZzc1hhbcyNfNW+6zHQIDAQABAoIBAB+VWfAxcD87csoK
sLY2kqD2nIB6lfZKAknaPnhNhkYNK4WnPpZdR7E942GpDS2cZSSCAl05W8P4q+vu
ehn8m9Yr/SCzVG+dYrmvHNTIZeROudwYixq3P3xZkzFLp8IxadxeCtVjPtExly8v
cZrQmVNbgoFnVTrCburToGvMWJlufsQRbHwPPZMyrGgU698Z1Motzu3ona70QkH5
bN/5F7Q6WH5momY41+7+Kde83BS54qumy2dfYfSKalPTS3aBJiyIDxajijLlgcPt
TqWSJc/zxjLGzufX8YtxrSFInAHWprPIRIO3enN9ZSCIFC3wjXrErFd8Wh0ueI2g
rsuQoe0CgYEA1RuoF/pEwTKfTMIbdErdcFGmJ7QLb+sd6bs189sw1YY+nM4Ly2uI
J9gZ4rqYwIXPCsY8aiw8zGHwIh8wqg73AGJgeOFuscIuybL6YAlG+MZJXAU3mCdB
8CZvo5nJoszr2im9p6AHi2Vb+095NppvRgjIssXCnMWZ9rBye5xqwVsCgYEAwNr2
+HU4hH8jclTYls5pn5ZndfsOFudMMObwZ3x/BRM9Fg5YAjUm3mNSbF0ERjlsdh8z
AEyBE7/ctgYeUP/thlIypS3XlIqwxokOqs68MM4O8tK/XXSF5yr7pyLiE+6oduss
A1fvJnqXQI0Zw9mIvbAqJ/dv1tmdFxjoR4R5zucCgYEAuBseiyhxQZ8kNEH1SfBr
gd9n9iD7SIMM4qITqEqS08UYTotLcT/C7vko09F0qc5v4dUE2IzDMabit/fOKPyo
szJKOeQ3p2Yk2ae/2jvpjn5vXgo7zz0LIBd0lxgDNJxonZ8185yzJ+A3KNOt2lht
DUoFaTykNqAXtSEWpmepasUCgYEAhc6m8oZqW0vXLTl/OUsn78ksKaiyAuQicf+Z
p0Oy4bOSe54iJA361Ov2wSbck1i+T0qgWUG7gRdqrIScPjkD9WFMsFyZKf/8XRO1
MH/WBMrDhmkAy3fQfC7Pggxq7cd17WSIGh3F2V3PWcNMsB1bibkT1r0QRPKh0ue+
KfjZhtsCgYB0HRFNYRndtCmjGbabFVyn3zLLrDi4BqOEknj21aEmlcCZPQ/2mVOv
fX+5GSvQNO9YqxpcWqDJBHgD2hFuxZr6C46SJJ4r0Ah7D8C0t7AumzJd6h+w3YB4
/llNcZzj8lBEX6YPZRm9Ig0o5xJVi98AOQsGNOVKB2/++BWjhM0NHg==
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDmjCCAoKgAwIBAgIBATANBgkqhkiG9w0BAQsFADBQMQswCQYDVQQGEwJVUzEL
MAkGA1UECAwCQ0ExDTALBgNVBAoMBEFzb3gxJTAjBgNVBAMMHEFzb3ggQ2VydGlm
aWNhdGlvbiBBdXRob3JpdHkwHhcNMTcwODAzMjMyMTA1WhcNNDQxMjE5MjMyMTA1
WjBQMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExDTALBgNVBAoMBEFzb3gxJTAj
BgNVBAMMHEFzb3ggQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDfv3KonszKqaZLZ5Vwnl/v6BhwQNqyx3nEDXTY
pCn17En3DJzsa0zlqkmw8XJeQrx6+iZjLyGqEjIcqHAFcabux7PJ5z+T41kabNzU
+WEYBhNbEB1xRm7Rqz9OzroajWIK8Wugzmqu2Sz+QYaFPjsW85+zVB6E3YPbBpz/
uPmAecwpInzFH7C9o5TZGoYS+0K1fH935EhM617HSVvHQflQL8IcGZuLExVxiOZ+
SkJIXO+JaM2cXBFnqf4halHQ5O+866Xk09WbhUpOqi/tGE74VQBKC2u2F1DUga0W
37Gwcp4o9WWdeCL10323QOSnAJoaMccBpILZSL3g7YJD1ZlFAgMBAAGjfzB9MB0G
A1UdDgQWBBR8WSTHikglMmAbowGKfg4kFNNFbzAfBgNVHSMEGDAWgBR8WSTHikgl
MmAbowGKfg4kFNNFbzAMBgNVHRMEBTADAQH/MC0GCCsGAQUFBwEBBCEwHzAdBggr
BgEFBQcwAoYRaHR0cHM6Ly90ZXN0X2NlcnQwDQYJKoZIhvcNAQELBQADggEBAACe
5R64MK058S3g6mQuviburcnKeBojMt1liqKGcCDwFKFHiYCN3hKoZmEQ4XvQu0U5
U2a3/sFG5mZD8UjAQzlQQkdjy4CwM3iGA5EeTT+VYnc9/UQU1yeyiGIRkNDJKp2y
p4vw5sm40uBwc+QfUAl7AExO4Q8FOdVqoS/zixYtFNQ2CjlLEzY5FRgyzfHQQDtn
rmtdVKOeWd0itvgSCeMs5KfetZlFAHavclcAN/721ukGiaWXyxQPfRLX2dS4RB8j
TwC15NBTsRTbYhJLYuBoUwTdhCojBUr8NN1kgwjHsT6wjtLJpRl6qeKHMw+Y9IlT
VgbFH84VIfIB1tnMNNA=
MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDDBxBc294
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTIwMDQyODAwNTYwMloXDTIwMDUy
ODAwNTYwMlowJzElMCMGA1UEAwwcQXNveCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKYUWvqrAy0MgXxpSeMw
K9NFxOLYAHDxiGsT/0P0FiYbp1w9rZGEgQMyTAvRYvR2JU9ic83nKeWGV69fnNDZ
pmpz8TbxOWBTlrxtMZIyPPtxC3cvPVC4DFqhPYWxj5Gseq1hi8wBnDj84PUrJJLA
Zl+eGvNyIL98VFJUuaXYbom9CT0NizzUdGBUnKVrtSHOSWqPFEBuhxYwOBzU21Ts
+cYITcWji694CzC1fA5NI8qrt4z5TyMImEAJdhO8T8nLAA4/JqaDWBWBvQyK2kpX
ANS4qrSzFVEWcAthA74UEIEHgaxPglHHJcnjdrvEXjh/GxgC+5KWffFIXLLQgJ+F
fNkCAwEAAaOBlDCBkTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSFMacdeI/i
LqtwMmtKN891eM2/GjBPBgNVHSMESDBGgBSFMacdeI/iLqtwMmtKN891eM2/GqEr
pCkwJzElMCMGA1UEAwwcQXNveCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIBATAO
BgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggEBAJrN/GUWUUyAh2koFIBD
sOdruAduzH1R315LjdPGiI2RsbwBTgbSUDMgPBxq6EnyT+NmAF4gLtap7sotDi/9
kJQYdDWaztToYAGogmlxu6MuTw49EBDWcZwRscXYE/i3GxX0XDJbnHypJqgwMUMj
mC90uF8aqQ5KJ0zvHtohT4NnkazkzrJNUpC2xHkzZ26Ac7DOZpFnEqoeJ3Qwr27m
qs2rZNVA5pQGa5aD/fuHxFYtp1b7t7ZqqIRYInfi1bBzVtDdQxTPGJ2JE1ri8SEp
hCp4nmmhC45DWF2UENSAf/gnDtPPzeVDemFGPIBGcnw+cRadp2KvtC2QkSF7tiTg
3HE=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAphRa+qsDLQyBfGlJ4zAr00XE4tgAcPGIaxP/Q/QWJhunXD2t
kYSBAzJMC9Fi9HYlT2Jzzecp5YZXr1+c0NmmanPxNvE5YFOWvG0xkjI8+3ELdy89
ULgMWqE9hbGPkax6rWGLzAGcOPzg9SskksBmX54a83Igv3xUUlS5pdhuib0JPQ2L
PNR0YFScpWu1Ic5Jao8UQG6HFjA4HNTbVOz5xghNxaOLr3gLMLV8Dk0jyqu3jPlP
IwiYQAl2E7xPycsADj8mpoNYFYG9DIraSlcA1LiqtLMVURZwC2EDvhQQgQeBrE+C
UcclyeN2u8ReOH8bGAL7kpZ98UhcstCAn4V82QIDAQABAoIBAQCEZAeeeUK/3489
MOWAoL7e3Wg0+MFpR3FbAobjkakyWasRQe2h6cG6XZb3eMPsYl4dqTrtcZAZcv1l
RM/KQSaDB8fK54K4ggnQTS9N/pRUUGo2aUb0mLLocE6Ny9zJ4HeuzOrXBpWVbCib
5/dwsMUrBeswE9N9Mcw6EWYoiZ6cVvcodkATqiXcSosBnCcElT8d3zwgK7pfgihd
hezjtjAXNTZF3bQX064L3dJfram31cVsGl4zgHf8WKgiJGr664h9tYvuHNiK0r0D
heiBBILqqsCDlH5K/P3zCJPY2WKAEIcq1dIlg1puiF6YFjZ3yovJfNT3krPazopD
9vBBs+YBAoGBANSMkGu/i8nsvG+RIgcpE4zMDdSH+lXlABjaNlZG8kev3ootnzcE
QF96B9AMEFl0stEtfplxPOrkj1rTLYhCS1jitBPvg4U9Qkn7cZnk1tBRJdAZpf2A
Zrp8sOeXvQdq1MGwMsENUPL1hhUEun3EmQu1iWCOUcGqvjPVmq9TMULBAoGBAMgH
4GSgXPW00ZhMnpY3glyZfsO4MyT/1K41tLDnNq4Atq0U/v6g/y6fwsufSvq2fRm8
vFOX9WZZictimfnIqyKauSQ1zCNiuvvYHCW9aOx9Iu2WW1MytUfwtWDUHSXiAt6B
mR8ecFQSqqboffvYPpQ38X73UGVRw5liaSfYy/gZAoGBAJuJeS2/77WGDaa+193R
i0LfF8fM8b3lZBrLpDOimy0mX31SQU5rSAgWLp1qFpS/txMnbZsvqFpjgxv9qTYq
/SRAUXK9NMtNtrKY09rAAQpUN41/F17YlVQmZvYyrds9rA9ItvtamUARt1quKSJb
uXs+DxefTeig36rixt1BzayBAoGAKNwLByMGuh38blrATjj6hQXJshsPP3COtiM8
TKJ+Nd7pccOHLuYeGh0CQmvAeiQKu9YktgKlWwnRLt1uTGqkIoZuaSogD95cCZOk
dEUTiLMrDlMXRpBmHVLbCfNqHNHk+iSI7aVfFp1VhJCbI3WRmt8uklvcbUXdaZiD
mGMdjwkCgYEAxCDM30+Fe/C6PSE8kANtsKl6I9BTodZtR0Q6roZLVZhJWVqDFD9T
h007xgX3j2S7KiCy+DQSXAOGqujrR38XQwrzkJX0YTj/tZHFzOug5jbNgUlzc7iA
+Wucl+OPLXhhpIhJXJRX/OegEljqeuboEOsc1CiIhyYy0Jj9ZCx2qW8=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDZjCCAk6gAwIBAgIBCjANBgkqhkiG9w0BAQsFADBQMQswCQYDVQQGEwJVUzEL
MAkGA1UECAwCQ0ExDTALBgNVBAoMBEFzb3gxJTAjBgNVBAMMHEFzb3ggQ2VydGlm
aWNhdGlvbiBBdXRob3JpdHkwHhcNMTcwODAzMjMyMTA2WhcNNDQxMjE5MjMyMTA2
WjAwMQswCQYDVQQGEwJVUzENMAsGA1UECgwEQXNveDESMBAGA1UEAwwJdGVzdHVz
ZXIxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxNjbq/fOD9BZN1N+
UPwTLK0jSE3zW3o4YIIZKnOc8ln3kY6xI0Xtm96uGD/y+nWFHGiEX5eqcTZEEaX7
4kHBU3mcWaZvC/JfBwyG1gf3/5sl5yxgJB9LsSZRcBKcET+JJ8Ps7WADBU0IVUsj
yejt25wnpsmglXbt7rObay8H0AYstRmNhpq7N92R6CKeVpHzuvUujSFnMGmxh5ux
l9anytFfr84E4G/AEUFkEKimFsqtG5Je3ZAfREhoNdCSERENYNtNXgLVCeWLGAT8
Mp0gNDHgBGheiWDIFRK5PKbJENMfOZt0mjQAM3ypmsLCNhSV81CDc9Q/GEOLMMxX
VP773wIDAQABo2swaTAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUE
FjAUBggrBgEFBQgCAgYIKwYBBQUHAwIwLQYIKwYBBQUHAQEEITAfMB0GCCsGAQUF
BzAChhFodHRwczovL3Rlc3RfY2VydDANBgkqhkiG9w0BAQsFAAOCAQEAO/kPyxvj
ZXxb4uCjqLFiPWKcGHhX1U+rE6tHf/iBh6WJ7D751Z56AT8YjtSWXxDgD3zOvhml
TGjkWIofG5yhYBeYEvrlHzXIqsPmUhOYgO42V4AXFB8u5gPw7tB5aozhxA4jB6Ik
JXkmDiBsyP4DvYknl7gGl4eubOPM/MDy0YasZH3C3shmjAJEW2CEbIrLXyT+N6yK
+zVtxEVlTZ4TPmXzOLqMIrgjLBWq5I9ATf5BCcqjs2bnHvVkErmY6WcpPTKDyCg6
Nmtla39ffF6V1S9BItLB7nZsGwMuExwPvotFseTppiAQyZGH0rPECxyPDpNNij/G
5ro+AZN3usfsqw==
MIIDMDCCAhigAwIBAgIBZDANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDDBxBc294
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MCAXDTIwMDQyODAwNTYwMloYDzIxMjAw
NDA0MDA1NjAyWjAUMRIwEAYDVQQDDAl0ZXN0dXNlcjEwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCm5bearLpKBdXE/0RALz1eQCdx4K1GQ0/LTeQJ6eZK
H8bodcCdKycBxTtwLXnl5AylEem48IHZoGgZdVZTSTSaB1xa0UBCWsru7BnzytPb
FZkr7vJJv/QeW/nM+NHVeq/kTFT0CmIA7el/SQQKzL/SHsqFjt7yvH4KilK0a6da
7y/VBHrMXA1KgVDcsYwq+DVKo3Tl88IrDeP2NqDN+PwC3JFnx4t6NE+hm/66jLj8
8NyNk0SaQY08e/VCHiOJbnQIZsjXjNlkFX/OHWKL+bWU2ML36qu1v1vifcu5kPI2
V0o9Snbb+VG6eukpmy0zSbsHI4vQ2O/jbNTGpY18OCV3AgMBAAGjeDB2MAwGA1Ud
EwEB/wQCMAAwHQYDVR0OBBYEFK+sK5SU+axHT/gvxsOOH+t6suWcMB8GA1UdIwQY
MBaAFIUxpx14j+Iuq3Aya0o3z3V4zb8aMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSUB
Af8EDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAQEAckX+MMeK8ggHWFld
8/Zh47noE5pT0lzzZlTvarrrpGGg//QzfRs3avrMkde0KxHiKotwYFpjIqcfIw3n
uPz3SczAJ2Lcs+AafZM1Vv0UtGQaRn59w/irvORKwq4rwGKkMrsNSSMP1b8OCZBW
nUPSA0XmYAFiW3lgVG+VkNeX6eP5DeLGFUgeQxW7Xkpu449333D3wmoSzpp9ma8h
qdmYaiDBkWVEpbeh4WEDRGlS/cytXzffwsQYT/YuxUxKxV/vGQHBOrQWIH4D4agH
wg1qJNkHG7z//wySnPYUiG1O9tgfgQf4WaOy3YZ87l+Osm8EVw5ScN1JCOorfW6a
AuhuBg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICVzCCAf2gAwIBAgIUB/qVvTbWZsztr6u/wXwjmEnXz+swCgYIKoZIzj0EAwIw
TDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRgwFgYDVQQDEw9JbnRlcm1lZGlhdGUgQ0EwHhcNMTgxMTEzMDE0MzAwWhcN
MTkxMTEzMDE0MzAwWjBNMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNV
BAcTDVNhbiBGcmFuY2lzY28xGTAXBgNVBAMTEGxlYWYuZXhhbXBsZS5uZXQwWTAT
BgcqhkjOPQIBBggqhkjOPQMBBwNCAARRiN/3qvao/w5Th8VKoDXPpie83L1R2Pvy
p7foZ1ZrL9pc4GzX4ySWYAWGWyy5c2SdEViCyk3xzMJjJSPhmpoCo4G7MIG4MA4G
A1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYD
VR0TAQH/BAIwADAdBgNVHQ4EFgQURh82WDnSPqkvNqKGz6yPm2l2fnYwHwYDVR0j
BBgwFoAUKOEhuE+Vl0OihP80sAf8mQnZ1VkwOQYDVR0RBDIwMIILZXhhbXBsZS5u
ZXSCD3d3dy5leGFtcGxlLm5ldIIQbGVhZi5leGFtcGxlLm5ldDAKBggqhkjOPQQD
AgNIADBFAiEApbOwJiXXyvaq0mJOXUOSCxLXHlgcw6Kni2ObVRTofmgCIFQxxCsk
mXwjMzhBO1V0iv8bwais/ZtD9L99tyRCQPvW
MIIDKzCCAhOgAwIBAgICAMgwDQYJKoZIhvcNAQELBQAwGjEYMBYGA1UEAwwPSW50
ZXJtZWRpYXRlIENBMCAXDTIwMDQyODAwNTYwMloYDzIxMjAwNDA0MDA1NjAyWjAb
MRkwFwYDVQQDDBBMZWFmIENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAsLVH+HB91LSDe3QO5dY43TKv/+3h0woUzvCeLNn9Qx7U5ltW
CGpQXSHs3SK8x21PRXiKuc7SjuH0rRajDonos0XnomsNJpklRq5vSdyKXoooU0z7
GEiLjORaycxlkblyatXHWvhv4OwHEc/woWMiShEsyeGnKXsnru/EWLyDloMCWbuV
iyuz2DNaYih/HH4BPZCDgU/NS5ZntRa8V3DApOTVv4yJ5nP1Gp1q69UfjKfGv94Z
ffJKAjFHwJh2NCjvZjGqMFMHfGc875cTNDFVA4nSuSUzSvF2NY1BuzFb8tGxaQQz
z1t0B1GBp4QanD/Zci3iF+1fddbJOfAjYOOXOQIDAQABo3gwdjAMBgNVHRMBAf8E
AjAAMB0GA1UdDgQWBBQVMUe/Cq/wysrGnnp4Hs66VMaSnjAfBgNVHSMEGDAWgBSm
TR7NOZQyHiyJ+3D+MLfr48PMpjAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0lAQH/BAww
CgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAHwjaMApiwHEkXehG10m5Gb0
37sMU2eaoCb6T1+T0qIVg9ApaIwg3BbXDGiYCfx0YQywvhumNunBjI/893zHTHE+
lv16VrbvjOPs94lhZl0A/9OFqCF6R5zmpGjDo6BHOqnZ27CyR6x8jwT4zP4knNXr
ZR+yufTd8uyWYrZpxf+6wwkAOg4WkjjbYNaHeS3PVhiv1ZtQziD37ZJG7HXBOCuP
DvTF0wm0HBsTdapkFh/lPwxbxo/O38a6I53yQi9Wsm9UlE4lK+eWlI7souVdkvb5
DWrvuGX264juX5mF/6axZ7CVZqWIO1KNosdGQQPaZQ2rzneCr7ySLI3ChGou6WY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB2zCCAYKgAwIBAgIUUUublA7fgBvQ5kTGcp6ch/SrnAEwCgYIKoZIzj0EAwIw
TDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRgwFgYDVQQDEw9JbnRlcm1lZGlhdGUgQ0EwHhcNMTgxMTEzMDE0MTAwWhcN
MjMxMTEyMDE0MTAwWjBMMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNV
BAcTDVNhbiBGcmFuY2lzY28xGDAWBgNVBAMTD0ludGVybWVkaWF0ZSBDQTBZMBMG
ByqGSM49AgEGCCqGSM49AwEHA0IABC4WqVy2GthTC157KiQ3ojizm7p4gD5H1XMZ
sGXW1T+9UMVlTiQEPr/F36lbw+Gts01ApkeE13nbKUZeqRZDIvqjQjBAMA4GA1Ud
DwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQo4SG4T5WXQ6KE
/zSwB/yZCdnVWTAKBggqhkjOPQQDAgNHADBEAiATD0cfB4Nf/g9hF3GOHxPE6QUe
w8MeJlMRwkUsblabhwIgZVLqoRNY3UVLQwl7kBj2nwZ0217Cmr6aOEAVR9A2I6U=
MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDDBxBc294
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MCAXDTIwMDQyODAwNTYwMloYDzIxMjAw
NDA0MDA1NjAyWjAaMRgwFgYDVQQDDA9JbnRlcm1lZGlhdGUgQ0EwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/kt/AzSF88kCr92pqKAlNeHgQhJQhs/BY
rcKyQqVsJMlnjDUhnw4Isz3SrDi4OFel6GvnbUuXRth2fCJT36X1GNrsaQj9vPAB
HHeem8v9by2/5kSupWAvo3+EFdn2NanzZSGLq8etnJYUwIXRBo0J1yU2zTR7z2d5
zVHXOFaUPBJPzm/xH/PzZRlTd0OGTJ3aMB+mWOG5yWuUW3bgtsKnAFklt9my9lXg
ENW0BrDO7XGm9Pz/bgYFXuapy8OeswpeTsgpBuDl6cqItT7jtCGKyEJTHeGLtD9K
DrVufDtSUb7rVyIAbSdO574O5GkIKYRrAgOtCOLf/D2SKwCnwq4jAgMBAAGjgZQw
gZEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUpk0ezTmUMh4siftw/jC36+PD
zKYwTwYDVR0jBEgwRoAUhTGnHXiP4i6rcDJrSjfPdXjNvxqhK6QpMCcxJTAjBgNV
BAMMHEFzb3ggQ2VydGlmaWNhdGlvbiBBdXRob3JpdHmCAQEwDgYDVR0PAQH/BAQD
AgGGMA0GCSqGSIb3DQEBCwUAA4IBAQCZZj4TT6QO8rYDlPpov1AEdreYfN+etwm6
l748KB1pb8EsgC82nmS1xST3OEbavKFDEonm6p7EUz4Urzdekw40zL/XryIAm8cw
hcX75B1xUwVjbrfsXK/4otxBJFhn1lUUQ1hJSMCGI/qykXnILkqltn/OArQIhDYh
V9czQnCwOAG6ngJ90zrahm00J3ndJcoD9k8UoKsgbdnzxm5rGIsAjJRTTAPkjXEr
kL32t0tFJODLjUODfjtsFWy9go0e5DMBTCgUut7W6NI06ORlsaYTL4tavSNm4VIw
9+qWbBynkL8I8u2rQ1TqynFe0KFV0rrb0PDBV1r9n7tRMvsa0IRg
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDDBxBc294
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MCAXDTIwMDQyODAwNTYwMloYDzIxMjAw
NDA0MDA1NjAyWjAaMRgwFgYDVQQDDA9JbnRlcm1lZGlhdGUgQ0EwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/kt/AzSF88kCr92pqKAlNeHgQhJQhs/BY
rcKyQqVsJMlnjDUhnw4Isz3SrDi4OFel6GvnbUuXRth2fCJT36X1GNrsaQj9vPAB
HHeem8v9by2/5kSupWAvo3+EFdn2NanzZSGLq8etnJYUwIXRBo0J1yU2zTR7z2d5
zVHXOFaUPBJPzm/xH/PzZRlTd0OGTJ3aMB+mWOG5yWuUW3bgtsKnAFklt9my9lXg
ENW0BrDO7XGm9Pz/bgYFXuapy8OeswpeTsgpBuDl6cqItT7jtCGKyEJTHeGLtD9K
DrVufDtSUb7rVyIAbSdO574O5GkIKYRrAgOtCOLf/D2SKwCnwq4jAgMBAAGjgZQw
gZEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUpk0ezTmUMh4siftw/jC36+PD
zKYwTwYDVR0jBEgwRoAUhTGnHXiP4i6rcDJrSjfPdXjNvxqhK6QpMCcxJTAjBgNV
BAMMHEFzb3ggQ2VydGlmaWNhdGlvbiBBdXRob3JpdHmCAQEwDgYDVR0PAQH/BAQD
AgGGMA0GCSqGSIb3DQEBCwUAA4IBAQCZZj4TT6QO8rYDlPpov1AEdreYfN+etwm6
l748KB1pb8EsgC82nmS1xST3OEbavKFDEonm6p7EUz4Urzdekw40zL/XryIAm8cw
hcX75B1xUwVjbrfsXK/4otxBJFhn1lUUQ1hJSMCGI/qykXnILkqltn/OArQIhDYh
V9czQnCwOAG6ngJ90zrahm00J3ndJcoD9k8UoKsgbdnzxm5rGIsAjJRTTAPkjXEr
kL32t0tFJODLjUODfjtsFWy9go0e5DMBTCgUut7W6NI06ORlsaYTL4tavSNm4VIw
9+qWbBynkL8I8u2rQ1TqynFe0KFV0rrb0PDBV1r9n7tRMvsa0IRg
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAv5LfwM0hfPJAq/dqaigJTXh4EISUIbPwWK3CskKlbCTJZ4w1
IZ8OCLM90qw4uDhXpehr521Ll0bYdnwiU9+l9Rja7GkI/bzwARx3npvL/W8tv+ZE
rqVgL6N/hBXZ9jWp82Uhi6vHrZyWFMCF0QaNCdclNs00e89nec1R1zhWlDwST85v
8R/z82UZU3dDhkyd2jAfpljhuclrlFt24LbCpwBZJbfZsvZV4BDVtAawzu1xpvT8
/24GBV7mqcvDnrMKXk7IKQbg5enKiLU+47QhishCUx3hi7Q/Sg61bnw7UlG+61ci
AG0nTue+DuRpCCmEawIDrQji3/w9kisAp8KuIwIDAQABAoIBAQC7VQ6EZJM4sVPY
VYqz4A6ouQL/dAW+p0yCCvh2hIFqrNZd8VcLV5PLoir0VgDo8/+RdyP9HH1sopSN
2Hlg9zQ75mA+CcAHD7jJ/WJjsQna+9sK6kuDVKgoLYNGUG/hOTzFi8Ev6XzLInII
PPMeIX/NfZsgaa3G3FvdWY+MG8VeEWYfPpS3pNFOm2CpBJXXPC90ftPf2oXDEoSt
pGOANTEZoYQXQT+9uF4UcUfCBFD2eszEo5/57BWOLy7/ZpRICFqc0P1hTK1bidJW
XRDXEHkMp897xL0uJpUBnDQDft8t0v7BD4kcXQ4PT2Ujrku+z8C/r+G+RYPJ0nJk
T6EVYJRBAoGBAOr39aclcuj1gi5vNJy5hkpeYMDxiWE3T5nEiPGq/Pm9jhhqa6ii
yoRQBD1GuVFmUl2cFH88YzrK8RNutlmzN9eEX0PgYkReU3gfjzxM2tmN766cniTW
0VLl3xvnyyCu+Sh0aoLJwfduzzyb3vqbe63rrK/wtEEynyBsV+2EVLYTAoGBANC4
ke1/VRfjgtdxtpq0coIK1zjPfDEEosYG6XwjwU4zlY77v+mD836+JE6HcVxEAgXh
OCWiVXi64qvfk4iWk6jAkDQ67NsRmNbKx5ief0ooACWz0E4ZgxyMxD3RjkCPcbAN
zvL5MM5G7X9mViYwbRAL2p1AlHEKjLBnIPDH0WmxAoGAFIEU38Ql1exussyjg7Ww
4VaBDPVG7sPb32hGJwir0MNY3gqTYIDsOUWeSRad31uVfnO7WisT4bKJ/Q8hPIym
J9l2Ur8G9D5i/E2Mu09dnbSEIPGr3z0bwScsJAxDLpP2TDB0hvtCQOxbi0dy2t2s
mk3BoQzZPgND3Zl2xtRQbB8CgYBqKvhPjk2CcT/ExxrTZqY4b7s6MpBBftItWKa7
dpSFasfQi037QhtBhQaCy3JmNFGzG/Srb/96AdX7BybMe4twc0LmznJcnH7aAxu0
DitBVUd95hE3KNMAWroXl9h8DnsNynhSL18cDggQncWEd22ClAUHqCnZtjwKHusq
jvl+gQKBgQDNJV7ziD3ZwKrALY2wY13KI37SH2LQtAtx5tqlsS7d05rWgF9c/Yad
4MommD/5AmTOOhMuHw4Uj9S4i9Gc1RaKtwkkbaixKt7DAre7MEd3LEyZ+ySbGMHg
RzilL6JTTprRGbc83aok5M6tTXIL7FhLxvsQQhyGuLBxQOUyYMmHCw==
-----END RSA PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDKzCCAhOgAwIBAgICAMgwDQYJKoZIhvcNAQELBQAwGjEYMBYGA1UEAwwPSW50
ZXJtZWRpYXRlIENBMCAXDTIwMDQyODAwNTYwMloYDzIxMjAwNDA0MDA1NjAyWjAb
MRkwFwYDVQQDDBBMZWFmIENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAsLVH+HB91LSDe3QO5dY43TKv/+3h0woUzvCeLNn9Qx7U5ltW
CGpQXSHs3SK8x21PRXiKuc7SjuH0rRajDonos0XnomsNJpklRq5vSdyKXoooU0z7
GEiLjORaycxlkblyatXHWvhv4OwHEc/woWMiShEsyeGnKXsnru/EWLyDloMCWbuV
iyuz2DNaYih/HH4BPZCDgU/NS5ZntRa8V3DApOTVv4yJ5nP1Gp1q69UfjKfGv94Z
ffJKAjFHwJh2NCjvZjGqMFMHfGc875cTNDFVA4nSuSUzSvF2NY1BuzFb8tGxaQQz
z1t0B1GBp4QanD/Zci3iF+1fddbJOfAjYOOXOQIDAQABo3gwdjAMBgNVHRMBAf8E
AjAAMB0GA1UdDgQWBBQVMUe/Cq/wysrGnnp4Hs66VMaSnjAfBgNVHSMEGDAWgBSm
TR7NOZQyHiyJ+3D+MLfr48PMpjAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0lAQH/BAww
CgYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAHwjaMApiwHEkXehG10m5Gb0
37sMU2eaoCb6T1+T0qIVg9ApaIwg3BbXDGiYCfx0YQywvhumNunBjI/893zHTHE+
lv16VrbvjOPs94lhZl0A/9OFqCF6R5zmpGjDo6BHOqnZ27CyR6x8jwT4zP4knNXr
ZR+yufTd8uyWYrZpxf+6wwkAOg4WkjjbYNaHeS3PVhiv1ZtQziD37ZJG7HXBOCuP
DvTF0wm0HBsTdapkFh/lPwxbxo/O38a6I53yQi9Wsm9UlE4lK+eWlI7souVdkvb5
DWrvuGX264juX5mF/6axZ7CVZqWIO1KNosdGQQPaZQ2rzneCr7ySLI3ChGou6WY=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAsLVH+HB91LSDe3QO5dY43TKv/+3h0woUzvCeLNn9Qx7U5ltW
CGpQXSHs3SK8x21PRXiKuc7SjuH0rRajDonos0XnomsNJpklRq5vSdyKXoooU0z7
GEiLjORaycxlkblyatXHWvhv4OwHEc/woWMiShEsyeGnKXsnru/EWLyDloMCWbuV
iyuz2DNaYih/HH4BPZCDgU/NS5ZntRa8V3DApOTVv4yJ5nP1Gp1q69UfjKfGv94Z
ffJKAjFHwJh2NCjvZjGqMFMHfGc875cTNDFVA4nSuSUzSvF2NY1BuzFb8tGxaQQz
z1t0B1GBp4QanD/Zci3iF+1fddbJOfAjYOOXOQIDAQABAoIBAQCmbVYnautYFdtv
vlL5rNVJn5+bj1QNC4WlkYGoBHc/bB5gBs30hwzBal5Ht5vMx+rNJ0ag0WYGJFHp
Y1SXMNP1ZHVQxzpPjBVLiKZQDmJTwBNSwUIMEOc9/yRywws2QE6+yDFGQI4+bI4L
/KhJl7CHyb1BNkHWE6PAYxmt6X6VlaUFbvOdvaAXJEgiZptQ7GPJnugI+a4cvClJ
oXNkFkJjmK/kRp4ZIHa3Sae9hND7ZPFFXOJ9UPqP0G3JSgUXgM2Mf3QdSmnV7AV6
5lvECIik9Fmea/LWFuuEMCLFXBZnPLs8knDQYsqo7HYHJyP6jAiD8bPqpR59qx+u
GeGi5/yxAoGBAN0NgGjFSoloDed7T2q7aTMqDxO4KcY+V4NEkNIK5vAx9z11H59V
9HaU31ATo0asj8PXqfHa73cBpQNS1JhOgT9ck0CYK0a+Tt72RScZysjUaMXgHhih
sPPl2JiixefoCSBqOqBqxHqjF/gN9JTsNRN6Iu8/7pkOwXFNVMxRR6wfAoGBAMyl
DdSC6tBEshGKZbBtMXPzecxkOX3K9ZKkvKytar9ewi5X1hp+dD8zErwAxYEUj1cf
9Ca7VYrZWZhItDIq+gk0DUOiJgf6ghj2zItbZh0KqQLQ4CVJcAQddMKfBNygz2yk
Jj3cH0gLuInEcN4Ws2oTvSRlhSHvQ4p8RQHEw9GnAoGAKmeYpoCSV+GaKTnCdlsV
RzdeRQ4jFWCIMSpKDcEBpDoxj5yUQGCg0M6mOBpMTBZ2Tb9lXnv9S/sIyKZvGfiV
Wq5LoSyPwLZpMuRTR7ju6a+1mZ/wphD+fQsujblL9bzRY2J9dKCGqG/4/SDQNnFJ
jT70zKibAMmP2khXaAp/kUkCgYEAg8UXtamitv40xpSdy89Tk3zIBXLXjgccvxLy
JiH35UeHsz19sEuSYItrWcEJa4cokQoTNMlVWHWBekv+M3t2ymxIyi7jXCnSkW6A
4I62nqaZkyWZ3oh95zhsUVEBWWr2hNbhhN1zCvn5FkR2BJsLZZdWJ9RyuBoPHGHO
MUhYamsCgYBdqHcTBMiiYNn5XILSOlxJS/djW4d7q+Ilw51McJP0CMlzYGrpLkaZ
TD94x5cMa9SZDKs7lGQuWYan1cKLKdeEqPV0fNrj3riwaJGR+ZYSbwiatQUdyShJ
vr9poc+/tX5OObF4xNeHqv5I1jQLEBuhDjov289c/OdozLGsCPWmrg==
-----END RSA PRIVATE KEY-----
#!/bin/bash -ue
# Copyright (c) Facebook, Inc. and its affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
CERT_LIFETIME_DAYS=${CERT_LIFETIME_DAYS:-36500}
extensions() {
cat << EOF
[ca]
basicConstraints = critical, CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer:always
keyUsage = critical, cRLSign, digitalSignature, keyCertSign
[client]
basicConstraints = critical, CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = critical, clientAuth
[server]
basicConstraints = critical, CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment, keyAgreement
extendedKeyUsage = critical, serverAuth
subjectAltName = IP:127.0.0.1,IP:::1
[client_and_server]
basicConstraints = critical, CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment, keyAgreement
extendedKeyUsage = critical, serverAuth, clientAuth
subjectAltName = IP:127.0.0.1,IP:::1
EOF
}
die() {
echo "$@" >&2
exit 1
}
generate_key() {
keytype="$1"
modulus_bits="$2"
outfile="$3"
[ "$keytype" != "rsa" ] && die "unsupported key type"
openssl genrsa -out "$outfile" "$modulus_bits" 2>/dev/null
}
mkcsr() {
local key="$1"
local name="$2"
local output="$3"
openssl req -new \
-sha256 \
-key "$key" \
-keyform PEM \
-subj "/CN=$name/" \
-outform PEM \
-out "$output" \
}
selfsign() {
local incsr="$1"
local inkey="$2"
local outfile="$3"
openssl x509 \
-req \
-set_serial 1 \
-signkey "$inkey" \
-inform PEM \
-in "$incsr" \
-outform PEM \
-out "$outfile" \
-extfile <(extensions) \
-extensions "ca" \
}
sign() {
csr="$1"
cacert="$2"
cakey="$3"
serial="$4"
extensions="$5"
outfile="$6"
openssl x509 \
-req \
-set_serial "$serial" \
-CA "$cacert" \
-CAkey "$cakey" \
-inform PEM \
-in "$csr" \
-outform PEM \
-out "$outfile" \
-days "$CERT_LIFETIME_DAYS" \
-extfile <(extensions) \
-extensions "$extensions" \
}
# Client CA
generate_key rsa 2048 client_ca_key.pem
mkcsr client_ca_key.pem "Asox Certification Authority" client_ca.csr.pem
selfsign client_ca.csr.pem client_ca_key.pem client_ca_cert.pem
# Client Intermediate CA
generate_key rsa 2048 client_intermediate_ca_key.pem
mkcsr client_intermediate_ca_key.pem "Intermediate CA" client_intermediate_ca.csr.pem
sign client_intermediate_ca.csr.pem client_ca_cert.pem client_ca_key.pem 2 ca client_intermediate_ca.pem
# Directly signed client cert (client_key.pem)
generate_key rsa 2048 client_key.pem
mkcsr client_key.pem "testuser1" client.csr.pem
sign client.csr.pem client_ca_cert.pem client_ca_key.pem 100 client client_cert.pem
# Client signed by an intermediate
generate_key rsa 2048 clienti_key.pem
mkcsr clienti_key.pem "Leaf Certificate" clienti.csr.pem
sign clienti.csr.pem client_intermediate_ca.pem client_intermediate_ca_key.pem 200 client clienti_cert.pem
cat clienti_cert.pem client_intermediate_ca.pem > client_chain.pem
# Server CA "Thrift Certificate Authority"
generate_key rsa 2048 ca-key.pem
mkcsr ca-key.pem "Thrift Certificate Authority" ca.csr.pem
selfsign ca.csr.pem ca-key.pem ca-cert.pem
# Server cert "Asox Company"
generate_key rsa 2048 tests-key.pem
mkcsr tests-key.pem "Asox Company" tests.csr.pem
sign tests.csr.pem ca-cert.pem ca-key.pem 300 client_and_server tests-cert.pem
# Remove all of the CSRs but leave the keys in case you need to regenerate a
# different cert with the same key.
rm ./*.csr.pem
-----BEGIN CERTIFICATE-----
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
FC85h/ArGg==
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
......@@ -309,18 +309,18 @@ TEST_P(OpenSSLCertUtilsTest, TestReadCertsFromMixedBuffer) {
}
TEST_P(OpenSSLCertUtilsTest, TestX509Digest) {
auto x509 = readCertFromFile(kTestCertWithoutSan);
auto x509 = readCertFromData(kTestCertWithSan);
EXPECT_NE(x509, nullptr);
auto sha1Digest = folly::ssl::OpenSSLCertUtils::getDigestSha1(*x509);
EXPECT_EQ(
folly::hexlify(folly::range(sha1Digest)),
"b84e951d6c4e6cc70346357fab43d7ed73a07b0f");
"692c24cbc0f595b668480a8b62e5cd6bf5041c64");
auto sha2Digest = folly::ssl::OpenSSLCertUtils::getDigestSha256(*x509);
EXPECT_EQ(
folly::hexlify(folly::range(sha2Digest)),
"364d3a6a0b10d0635ce59b40c0b7f505ab2cd9fd0a06661cdc61d9cb8c9c9821");
"82f800877c004fc8e5d89d6646b15d135d2d4677d56dfcdf29a4698fce1c257f");
}
TEST_P(OpenSSLCertUtilsTest, TestX509Store) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment