Add --leaf flag to view the first cert only, including for json and pem

added dump-pkcs12-chain-to-pem.t to contrast with dump-pkcs12-chain-to-pem-first-only and show that multiple pem blocks are dumped without the --first flag.t
This commit is contained in:
Isaac Semaya
2022-02-23 16:44:05 -08:00
parent 9e92473320
commit 328db64fa0
6 changed files with 576 additions and 0 deletions
+2
View File
@@ -61,6 +61,7 @@ Commands:
-p, --password=PASSWORD Password for PKCS12/JCEKS key stores (reads from TTY if missing).
-m, --pem Write output as PEM blocks instead of human-readable format.
-j, --json Write output as machine-readable JSON format.
-l, --first Only display the first certificate. This flag can be paired with --json or --pem.
connect [<flags>] [<server:port>]
Connect to a server and print its certificate(s).
@@ -75,6 +76,7 @@ Commands:
--timeout=5s Timeout for connecting to remote server (can be '5m', '1s', etc).
-m, --pem Write output as PEM blocks instead of human-readable format.
-j, --json Write output as machine-readable JSON format.
-l, --first Only display the first certificate. This flag can be paired with --json or --pem.
--verify Verify certificate chain.
--expected-name Name expected in the server TLS certificate. Defaults to name from SNI or, if SNI not overridden, the hostname to connect to.
+26
View File
@@ -24,6 +24,7 @@ var (
dumpPassword = dump.Flag("password", "Password for PKCS12/JCEKS key stores (reads from TTY if missing).").Short('p').String()
dumpPem = dump.Flag("pem", "Write output as PEM blocks instead of human-readable format.").Short('m').Bool()
dumpJSON = dump.Flag("json", "Write output as machine-readable JSON format.").Short('j').Bool()
dumpFirst = dump.Flag("first", "Only display the first certificate. This flag can be paired with --json or --pem.").Short('l').Bool()
connect = app.Command("connect", "Connect to a server and print its certificate(s).")
connectTo = connect.Arg("server[:port]", "Hostname or IP to connect to, with optional port.").Required().String()
@@ -37,6 +38,7 @@ var (
connectTimeout = connect.Flag("timeout", "Timeout for connecting to remote server (can be '5m', '1s', etc).").Default("5s").Duration()
connectPem = connect.Flag("pem", "Write output as PEM blocks instead of human-readable format.").Short('m').Bool()
connectJSON = connect.Flag("json", "Write output as machine-readable JSON format.").Short('j').Bool()
connectFirst = connect.Flag("first", "Only display the first certificate. This flag can be paired with --json or --pem.").Short('l').Bool()
connectVerify = connect.Flag("verify", "Verify certificate chain.").Bool()
connectVerifyExpectedName = connect.Flag("expected-name", "Name expected in the server TLS certificate. Defaults to name from SNI or, if SNI not overridden, the hostname to connect to.").String()
@@ -94,8 +96,14 @@ func Run(args []string, tty terminal.Terminal) int {
}()
if *dumpPem {
dumped := 0
err = lib.ReadAsPEMFromFiles(files, *dumpType, tty.ReadPassword, func(block *pem.Block, format string) error {
if *dumpFirst && dumped > 0 {
return nil
}
block.Headers = nil
dumped++
return pem.Encode(stdout, block)
})
} else {
@@ -109,6 +117,15 @@ func Run(args []string, tty terminal.Terminal) int {
return nil
})
certList := result.Certificates
formatList := result.Formats
if *dumpFirst && len(certList) > 0 {
certList = certList[:1]
formatList = formatList[:1]
result.Certificates = certList
result.Formats = formatList
}
if *dumpJSON {
blob, _ := json.Marshal(result)
fmt.Println(string(blob))
@@ -162,6 +179,15 @@ func Run(args []string, tty terminal.Terminal) int {
verifyResult := lib.VerifyChain(connState.PeerCertificates, connState.OCSPResponse, expectedNameInCertificate, *connectCaPath)
result.VerifyResult = &verifyResult
certList := result.Certificates
formatList := result.Formats
if *connectFirst && len(certList) > 0 {
certList = certList[:1]
formatList = formatList[:1]
result.Certificates = certList
result.Formats = formatList
}
if *connectJSON {
blob, _ := json.Marshal(result)
fmt.Println(string(blob))
+109
View File
@@ -0,0 +1,109 @@
Set up test data.
$ cat > squareup-chain.crt <<EOF
> -----BEGIN CERTIFICATE-----
> MIIHnjCCBoagAwIBAgIRAMQdTn1Z7px7AAAAAFTMznkwDQYJKoZIhvcNAQELBQAw
> gboxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQL
> Ex9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykg
> MjAxNCBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxLjAs
> BgNVBAMTJUVudHJ1c3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBMMU0wHhcN
> MTYwNzE1MjAxNTUyWhcNMTcwNzMxMjA0NTUwWjCBzTELMAkGA1UEBhMCVVMxEzAR
> BgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEzARBgsr
> BgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVsYXdhcmUxFTATBgNV
> BAoTDFNxdWFyZSwgSW5jLjEdMBsGA1UEDxMUUHJpdmF0ZSBPcmdhbml6YXRpb24x
> EDAOBgNVBAUTBzQ2OTk4NTUxGTAXBgNVBAMTEHd3dy5zcXVhcmV1cC5jb20wggEi
> MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDk+qX7IYPlzj+SJijzKDSOEh5x
> LDyVq6N8k+5bgSISr9pXbhJB2yFDsvzHn+s67B5x2jjwUfvvMYnS8Aad73UqeVJQ
> 5zPhLh9TL0U6ltgVUbKeVvxcZlGVj34WgqDJL3rMAEAJzDPZJ/Td/GNBWtrDOpdZ
> GQoNwdf/xK26ep/RKiqJWjCDBVd8Grxq0xqxaNvdml6mMJS49s5Ku5e5kvHwq7E7
> sVX79h1k3IfYgPM5VFU0CLxBVwXwg2eQrDxxbQbgqf+am5vBaEB0olCIPrp4WImv
> 2B5cQa5/9AjXihCusXmyvDp0UBZOoFy1D6La1eJyMxgUK3uj2C+Z2DkdpythAgMB
> AAGjggOIMIIDhDCBmgYDVR0RBIGSMIGPghB3d3cuc3F1YXJldXAuY29tggxzcXVh
> cmV1cC5jb22CFGFjY291bnQuc3F1YXJldXAuY29tggdta3QuY29tggt3d3cubWt0
> LmNvbYITbWFya2V0LnNxdWFyZXVwLmNvbYIIZ29zcS5jb22CDHd3dy5nb3NxLmNv
> bYIHZ29zcS5jb4ILd3d3Lmdvc3EuY28wggF+BgorBgEEAdZ5AgQCBIIBbgSCAWoB
> aAB2AGj2mPgfZIK+OozuuSgdTPxxUV1nk9RE0QpnrLtPT/vEAAABVfBO8foAAAQD
> AEcwRQIgHRuE49MQdG9gn47iHetv5bNzKLcaP9uReKBa/0c7luECIQCE/Km4MXBr
> 1fTTezjnGD5ZTxdcfnuStsy2FejS0ldWUQB2AFYUBpov18Ls0/XhvUSyPsdGdrm8
> mRFcwO+UmFXWidDdAAABVfBO9scAAAQDAEcwRQIgWG3bnNz07rT7yjGdjvCC6F9i
> aiBxsWpnLmYxc0ycrogCIQD7a1RbCM8o+bGbTRmpZv9Z5M6beO+eoC/TXDFZdK58
> JAB2AKS5CZC0GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABVfBO+BQAAAQD
> AEcwRQIgVmnuQ6nwHIwGcXRAqXVvqAQJkdzbe5DpCYM/e5FD15wCIQCdGxXNam6p
> xblJX2oUnPdsxfUvP++u94bgKgJDUdDMgDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0l
> BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMGgGCCsGAQUFBwEBBFwwWjAjBggrBgEF
> BQcwAYYXaHR0cDovL29jc3AuZW50cnVzdC5uZXQwMwYIKwYBBQUHMAKGJ2h0dHA6
> Ly9haWEuZW50cnVzdC5uZXQvbDFtLWNoYWluMjU2LmNlcjAzBgNVHR8ELDAqMCig
> JqAkhiJodHRwOi8vY3JsLmVudHJ1c3QubmV0L2xldmVsMW0uY3JsMEoGA1UdIARD
> MEEwNgYKYIZIAYb6bAoBAjAoMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3LmVudHJ1
> c3QubmV0L3JwYTAHBgVngQwBATAfBgNVHSMEGDAWgBTD99C1KjCtrw2RIXA5VN28
> iXDHOjAdBgNVHQ4EFgQU1BcUbwvFIKHW/iF+3J74V5ztrmowCQYDVR0TBAIwADAN
> BgkqhkiG9w0BAQsFAAOCAQEAhb0ixKT20fiDn+0tjAM/WeqQZpQRyQFT1jIK8ERI
> HsTeEV291SiLaatV6laocpx7R/JgwAQc1bPItf3HguhetWeXSTFDBQyy4InN0ceB
> RQJDPl6gcmq9xC9KMgMgXmh0FDrG2yMHRC3Qz9dSPDTPTNrCjLvW1PPK0o1pQ9cz
> ISdRtVnLz6/3tkx/bUNkT1TQ6mpslx5CBqyZS8LHzLr13Ei8D5P6RhsKXT6JS3Ki
> G2TfXmg9UFgsiNho7aRpLhyI66wNB+akENKPk0n23RkxpYkRtIcFUY9LIYBbvGHT
> Qq1IhY7LwcjCwcGePa0CtcnnwrA6jPnlEpTR6bh1NW5IaA==
> -----END CERTIFICATE-----
> -----BEGIN CERTIFICATE-----
> MIIFLTCCBBWgAwIBAgIMYaHn0gAAAABR02amMA0GCSqGSIb3DQEBCwUAMIG+MQsw
> CQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2Vl
> IHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMDkg
> RW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVzZSBvbmx5MTIwMAYDVQQD
> EylFbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjAeFw0x
> NDEyMTUxNTI1MDNaFw0zMDEwMTUxNTU1MDNaMIG6MQswCQYDVQQGEwJVUzEWMBQG
> A1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5l
> dC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMTQgRW50cnVzdCwgSW5jLiAt
> IGZvciBhdXRob3JpemVkIHVzZSBvbmx5MS4wLAYDVQQDEyVFbnRydXN0IENlcnRp
> ZmljYXRpb24gQXV0aG9yaXR5IC0gTDFNMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
> MIIBCgKCAQEA0IHBOSPCsdHs91fdVSQ2kSAiSPf8ylIKsKs/M7WwhAf23056sPuY
> Ij0BrFb7cW2y7rmgD1J3q5iTvjOK64dex6qwymmPQwhqPyK/MzlG1ZTy4kwFItln
> gJHxBEoOm3yiydJs/TwJhL39axSagR3nioPvYRZ1R5gTOw2QFpi/iuInMlOZmcP7
> lhw192LtjL1JcdJDQ6Gh4yEqI3CodT2ybEYGYW8YZ+QpfrI8wcVfCR5uRE7sIZlY
> FUj0VUgqtzS0BeN8SYwAWN46lsw53GEzVc4qLj/RmWLoquY0djGqr3kplnjLgRSv
> adr7BLlZg0SqCU+01CwBnZuUMWstoc/B5QIDAQABo4IBKzCCAScwDgYDVR0PAQH/
> BAQDAgEGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8E
> CDAGAQH/AgEAMDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29j
> c3AuZW50cnVzdC5uZXQwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2NybC5lbnRy
> dXN0Lm5ldC9nMmNhLmNybDA7BgNVHSAENDAyMDAGBFUdIAAwKDAmBggrBgEFBQcC
> ARYaaHR0cDovL3d3dy5lbnRydXN0Lm5ldC9ycGEwHQYDVR0OBBYEFMP30LUqMK2v
> DZEhcDlU3byJcMc6MB8GA1UdIwQYMBaAFGpyJnrQHu995ztpUdRsjZ+QEmarMA0G
> CSqGSIb3DQEBCwUAA4IBAQC0h8eEIhopwKR47PVPG7SEl2937tTPWa+oQ5YvHVje
> pvMVWy7ZQ5xMQrkXFxGttLFBx2YMIoYFp7Qi+8VoaIqIMthx1hGOjlJ+Qgld2dnA
> DizvRGsf2yS89byxqsGK5Wbb0CTz34mmi/5e0FC6m3UAyQhKS3Q/WFOv9rihbISY
> Jnz8/DVRZZgeO2x28JkPxLkJ1YXYJKd/KsLak0tkuHB8VCnTglTVz6WUwzOeTTRn
> 4Dh2ZgCN0C/GqwmqcvrOLzWJ/MDtBgO334wlV/H77yiI2YIowAQPlIFpI+CRKMVe
> 1QzX1CA778n4wI+nQc1XRG5sZ2L+hN/nYNjvv9QiHg3n
> -----END CERTIFICATE-----
> -----BEGIN CERTIFICATE-----
> MIIE/zCCA+egAwIBAgIEUdNARDANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMC
> VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0
> Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW
> KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl
> cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE0MDkyMjE3MTQ1N1oXDTI0MDkyMzAx
> MzE1M1owgb4xCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgw
> JgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQL
> EzAoYykgMjAwOSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9u
> bHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
> eSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuoS2ctueDGvi
> mekwAad26jK4lUEaydphTlhyz/72gnm/c2EGCqUn2LNf00VOHHLWTjLycooP94MZ
> 0GqAgABFHrDH55q/ElcnHKNoLwqHvWprDl5l8xx31dSFjXAhtLMy54ui1YY5ArG4
> 0kfO5MlJxDun3vtUfVe+8OhuwnmyOgtV4lCYFjITXC94VsHClLPyWuQnmp8k18bs
> 0JslguPMwsRFxYyXegZrKhGfqQpuSDtv29QRGUL3jwe/9VNfnD70FyzmaaxOMkxi
> d+q36OW7NLwZi66cUee3frVTsTMi5W3PcDwa+uKbZ7aD9I2lr2JMTeBYrGQ0EgP4
> to2UYySkcQIDAQABo4IBDzCCAQswDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQI
> MAYBAf8CAQEwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2Nz
> cC5lbnRydXN0Lm5ldDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3JsLmVudHJ1
> c3QubmV0L3Jvb3RjYTEuY3JsMDsGA1UdIAQ0MDIwMAYEVR0gADAoMCYGCCsGAQUF
> BwIBFhpodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NQUzAdBgNVHQ4EFgQUanImetAe
> 733nO2lR1GyNn5ASZqswHwYDVR0jBBgwFoAUaJDkZ6SmU4DHhmak8fdLQ/uEvW0w
> DQYJKoZIhvcNAQELBQADggEBAGkzg/woem99751V68U+ep11s8zDODbZNKIoaBjq
> HmnTvefQd9q4AINOSs9v0fHBIj905PeYSZ6btp7h25h3LVY0sag82f3Azce/BQPU
> AsXx5cbaCKUTx2IjEdFhMB1ghEXveajGJpOkt800uGnFE/aRs8lFc3a2kvZ2Clvh
> A0e36SlMkTIjN0qcNdh4/R0f5IOJJICtt/nP5F2l1HHEhVtwH9s/HAHrGkUmMRTM
> Zb9n3srMM2XlQZHXN75BGpad5oqXnafOrE6aPb0BoGrZTyIAi0TVaWJ7LuvMuueS
> fWlnPfy4fN5Bh9Bp6roKGHoalUOzeXEodm2h+1dK7E3IDhA=
> -----END CERTIFICATE-----
> EOF
Dump a live cert chain (squareup-chain.crt) with leaf flag
$ certigo --verbose dump squareup-chain.crt --json --first
{"certificates":[{"serial":"260680855742043049380997676879525498489","not_before":"2016-07-15T20:15:52Z","not_after":"2017-07-31T20:45:50Z","signature_algorithm":"SHA256-RSA","is_self_signed":false,"subject":{"business_category":["Private Organization"],"common_name":"www.squareup.com","country":["US"],"ev_country":["US"],"ev_province":["Delaware"],"ev_registration_number":"4699855","key_id":"D4:17:14:6F:0B:C5:20:A1:D6:FE:21:7E:DC:9E:F8:57:9C:ED:AE:6A","locality":["San Francisco"],"organization":["Square, Inc."],"province":["California"]},"issuer":{"common_name":"Entrust Certification Authority - L1M","country":["US"],"key_id":"C3:F7:D0:B5:2A:30:AD:AF:0D:91:21:70:39:54:DD:BC:89:70:C7:3A","organization":["Entrust, Inc."],"organizational_unit":["See www.entrust.net/legal-terms","(c) 2014 Entrust, Inc. - for authorized use only"]},"basic_constraints":{"is_ca":false},"ocsp_server":["http://ocsp.entrust.net"],"issuing_certificate":["http://aia.entrust.net/l1m-chain256.cer"],"key_usage":["Digital Signature","Key Encipherment"],"extended_key_usage":["Server Auth","Client Auth"],"dns_names":["www.squareup.com","squareup.com","account.squareup.com","mkt.com","www.mkt.com","market.squareup.com","gosq.com","www.gosq.com","gosq.co","www.gosq.co"],"pem":"-----BEGIN CERTIFICATE-----\nMIIHnjCCBoagAwIBAgIRAMQdTn1Z7px7AAAAAFTMznkwDQYJKoZIhvcNAQELBQAw\ngboxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQL\nEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykg\nMjAxNCBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxLjAs\nBgNVBAMTJUVudHJ1c3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBMMU0wHhcN\nMTYwNzE1MjAxNTUyWhcNMTcwNzMxMjA0NTUwWjCBzTELMAkGA1UEBhMCVVMxEzAR\nBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEzARBgsr\nBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVsYXdhcmUxFTATBgNV\nBAoTDFNxdWFyZSwgSW5jLjEdMBsGA1UEDxMUUHJpdmF0ZSBPcmdhbml6YXRpb24x\nEDAOBgNVBAUTBzQ2OTk4NTUxGTAXBgNVBAMTEHd3dy5zcXVhcmV1cC5jb20wggEi\nMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDk+qX7IYPlzj+SJijzKDSOEh5x\nLDyVq6N8k+5bgSISr9pXbhJB2yFDsvzHn+s67B5x2jjwUfvvMYnS8Aad73UqeVJQ\n5zPhLh9TL0U6ltgVUbKeVvxcZlGVj34WgqDJL3rMAEAJzDPZJ/Td/GNBWtrDOpdZ\nGQoNwdf/xK26ep/RKiqJWjCDBVd8Grxq0xqxaNvdml6mMJS49s5Ku5e5kvHwq7E7\nsVX79h1k3IfYgPM5VFU0CLxBVwXwg2eQrDxxbQbgqf+am5vBaEB0olCIPrp4WImv\n2B5cQa5/9AjXihCusXmyvDp0UBZOoFy1D6La1eJyMxgUK3uj2C+Z2DkdpythAgMB\nAAGjggOIMIIDhDCBmgYDVR0RBIGSMIGPghB3d3cuc3F1YXJldXAuY29tggxzcXVh\ncmV1cC5jb22CFGFjY291bnQuc3F1YXJldXAuY29tggdta3QuY29tggt3d3cubWt0\nLmNvbYITbWFya2V0LnNxdWFyZXVwLmNvbYIIZ29zcS5jb22CDHd3dy5nb3NxLmNv\nbYIHZ29zcS5jb4ILd3d3Lmdvc3EuY28wggF+BgorBgEEAdZ5AgQCBIIBbgSCAWoB\naAB2AGj2mPgfZIK+OozuuSgdTPxxUV1nk9RE0QpnrLtPT/vEAAABVfBO8foAAAQD\nAEcwRQIgHRuE49MQdG9gn47iHetv5bNzKLcaP9uReKBa/0c7luECIQCE/Km4MXBr\n1fTTezjnGD5ZTxdcfnuStsy2FejS0ldWUQB2AFYUBpov18Ls0/XhvUSyPsdGdrm8\nmRFcwO+UmFXWidDdAAABVfBO9scAAAQDAEcwRQIgWG3bnNz07rT7yjGdjvCC6F9i\naiBxsWpnLmYxc0ycrogCIQD7a1RbCM8o+bGbTRmpZv9Z5M6beO+eoC/TXDFZdK58\nJAB2AKS5CZC0GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABVfBO+BQAAAQD\nAEcwRQIgVmnuQ6nwHIwGcXRAqXVvqAQJkdzbe5DpCYM/e5FD15wCIQCdGxXNam6p\nxblJX2oUnPdsxfUvP++u94bgKgJDUdDMgDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0l\nBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMGgGCCsGAQUFBwEBBFwwWjAjBggrBgEF\nBQcwAYYXaHR0cDovL29jc3AuZW50cnVzdC5uZXQwMwYIKwYBBQUHMAKGJ2h0dHA6\nLy9haWEuZW50cnVzdC5uZXQvbDFtLWNoYWluMjU2LmNlcjAzBgNVHR8ELDAqMCig\nJqAkhiJodHRwOi8vY3JsLmVudHJ1c3QubmV0L2xldmVsMW0uY3JsMEoGA1UdIARD\nMEEwNgYKYIZIAYb6bAoBAjAoMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3LmVudHJ1\nc3QubmV0L3JwYTAHBgVngQwBATAfBgNVHSMEGDAWgBTD99C1KjCtrw2RIXA5VN28\niXDHOjAdBgNVHQ4EFgQU1BcUbwvFIKHW/iF+3J74V5ztrmowCQYDVR0TBAIwADAN\nBgkqhkiG9w0BAQsFAAOCAQEAhb0ixKT20fiDn+0tjAM/WeqQZpQRyQFT1jIK8ERI\nHsTeEV291SiLaatV6laocpx7R/JgwAQc1bPItf3HguhetWeXSTFDBQyy4InN0ceB\nRQJDPl6gcmq9xC9KMgMgXmh0FDrG2yMHRC3Qz9dSPDTPTNrCjLvW1PPK0o1pQ9cz\nISdRtVnLz6/3tkx/bUNkT1TQ6mpslx5CBqyZS8LHzLr13Ei8D5P6RhsKXT6JS3Ki\nG2TfXmg9UFgsiNho7aRpLhyI66wNB+akENKPk0n23RkxpYkRtIcFUY9LIYBbvGHT\nQq1IhY7LwcjCwcGePa0CtcnnwrA6jPnlEpTR6bh1NW5IaA==\n-----END CERTIFICATE-----\n"}]}
+150
View File
@@ -0,0 +1,150 @@
Set up test data.
$ cat > squareup-chain-leaf-only.crt <<EOF
> -----BEGIN CERTIFICATE-----
> MIIHnjCCBoagAwIBAgIRAMQdTn1Z7px7AAAAAFTMznkwDQYJKoZIhvcNAQELBQAw
> gboxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQL
> Ex9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykg
> MjAxNCBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxLjAs
> BgNVBAMTJUVudHJ1c3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBMMU0wHhcN
> MTYwNzE1MjAxNTUyWhcNMTcwNzMxMjA0NTUwWjCBzTELMAkGA1UEBhMCVVMxEzAR
> BgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEzARBgsr
> BgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMIRGVsYXdhcmUxFTATBgNV
> BAoTDFNxdWFyZSwgSW5jLjEdMBsGA1UEDxMUUHJpdmF0ZSBPcmdhbml6YXRpb24x
> EDAOBgNVBAUTBzQ2OTk4NTUxGTAXBgNVBAMTEHd3dy5zcXVhcmV1cC5jb20wggEi
> MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDk+qX7IYPlzj+SJijzKDSOEh5x
> LDyVq6N8k+5bgSISr9pXbhJB2yFDsvzHn+s67B5x2jjwUfvvMYnS8Aad73UqeVJQ
> 5zPhLh9TL0U6ltgVUbKeVvxcZlGVj34WgqDJL3rMAEAJzDPZJ/Td/GNBWtrDOpdZ
> GQoNwdf/xK26ep/RKiqJWjCDBVd8Grxq0xqxaNvdml6mMJS49s5Ku5e5kvHwq7E7
> sVX79h1k3IfYgPM5VFU0CLxBVwXwg2eQrDxxbQbgqf+am5vBaEB0olCIPrp4WImv
> 2B5cQa5/9AjXihCusXmyvDp0UBZOoFy1D6La1eJyMxgUK3uj2C+Z2DkdpythAgMB
> AAGjggOIMIIDhDCBmgYDVR0RBIGSMIGPghB3d3cuc3F1YXJldXAuY29tggxzcXVh
> cmV1cC5jb22CFGFjY291bnQuc3F1YXJldXAuY29tggdta3QuY29tggt3d3cubWt0
> LmNvbYITbWFya2V0LnNxdWFyZXVwLmNvbYIIZ29zcS5jb22CDHd3dy5nb3NxLmNv
> bYIHZ29zcS5jb4ILd3d3Lmdvc3EuY28wggF+BgorBgEEAdZ5AgQCBIIBbgSCAWoB
> aAB2AGj2mPgfZIK+OozuuSgdTPxxUV1nk9RE0QpnrLtPT/vEAAABVfBO8foAAAQD
> AEcwRQIgHRuE49MQdG9gn47iHetv5bNzKLcaP9uReKBa/0c7luECIQCE/Km4MXBr
> 1fTTezjnGD5ZTxdcfnuStsy2FejS0ldWUQB2AFYUBpov18Ls0/XhvUSyPsdGdrm8
> mRFcwO+UmFXWidDdAAABVfBO9scAAAQDAEcwRQIgWG3bnNz07rT7yjGdjvCC6F9i
> aiBxsWpnLmYxc0ycrogCIQD7a1RbCM8o+bGbTRmpZv9Z5M6beO+eoC/TXDFZdK58
> JAB2AKS5CZC0GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABVfBO+BQAAAQD
> AEcwRQIgVmnuQ6nwHIwGcXRAqXVvqAQJkdzbe5DpCYM/e5FD15wCIQCdGxXNam6p
> xblJX2oUnPdsxfUvP++u94bgKgJDUdDMgDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0l
> BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMGgGCCsGAQUFBwEBBFwwWjAjBggrBgEF
> BQcwAYYXaHR0cDovL29jc3AuZW50cnVzdC5uZXQwMwYIKwYBBQUHMAKGJ2h0dHA6
> Ly9haWEuZW50cnVzdC5uZXQvbDFtLWNoYWluMjU2LmNlcjAzBgNVHR8ELDAqMCig
> JqAkhiJodHRwOi8vY3JsLmVudHJ1c3QubmV0L2xldmVsMW0uY3JsMEoGA1UdIARD
> MEEwNgYKYIZIAYb6bAoBAjAoMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3LmVudHJ1
> c3QubmV0L3JwYTAHBgVngQwBATAfBgNVHSMEGDAWgBTD99C1KjCtrw2RIXA5VN28
> iXDHOjAdBgNVHQ4EFgQU1BcUbwvFIKHW/iF+3J74V5ztrmowCQYDVR0TBAIwADAN
> BgkqhkiG9w0BAQsFAAOCAQEAhb0ixKT20fiDn+0tjAM/WeqQZpQRyQFT1jIK8ERI
> HsTeEV291SiLaatV6laocpx7R/JgwAQc1bPItf3HguhetWeXSTFDBQyy4InN0ceB
> RQJDPl6gcmq9xC9KMgMgXmh0FDrG2yMHRC3Qz9dSPDTPTNrCjLvW1PPK0o1pQ9cz
> ISdRtVnLz6/3tkx/bUNkT1TQ6mpslx5CBqyZS8LHzLr13Ei8D5P6RhsKXT6JS3Ki
> G2TfXmg9UFgsiNho7aRpLhyI66wNB+akENKPk0n23RkxpYkRtIcFUY9LIYBbvGHT
> Qq1IhY7LwcjCwcGePa0CtcnnwrA6jPnlEpTR6bh1NW5IaA==
> -----END CERTIFICATE-----
> -----BEGIN CERTIFICATE-----
> MIIFLTCCBBWgAwIBAgIMYaHn0gAAAABR02amMA0GCSqGSIb3DQEBCwUAMIG+MQsw
> CQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2Vl
> IHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMDkg
> RW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVzZSBvbmx5MTIwMAYDVQQD
> EylFbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjAeFw0x
> NDEyMTUxNTI1MDNaFw0zMDEwMTUxNTU1MDNaMIG6MQswCQYDVQQGEwJVUzEWMBQG
> A1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5l
> dC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMTQgRW50cnVzdCwgSW5jLiAt
> IGZvciBhdXRob3JpemVkIHVzZSBvbmx5MS4wLAYDVQQDEyVFbnRydXN0IENlcnRp
> ZmljYXRpb24gQXV0aG9yaXR5IC0gTDFNMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
> MIIBCgKCAQEA0IHBOSPCsdHs91fdVSQ2kSAiSPf8ylIKsKs/M7WwhAf23056sPuY
> Ij0BrFb7cW2y7rmgD1J3q5iTvjOK64dex6qwymmPQwhqPyK/MzlG1ZTy4kwFItln
> gJHxBEoOm3yiydJs/TwJhL39axSagR3nioPvYRZ1R5gTOw2QFpi/iuInMlOZmcP7
> lhw192LtjL1JcdJDQ6Gh4yEqI3CodT2ybEYGYW8YZ+QpfrI8wcVfCR5uRE7sIZlY
> FUj0VUgqtzS0BeN8SYwAWN46lsw53GEzVc4qLj/RmWLoquY0djGqr3kplnjLgRSv
> adr7BLlZg0SqCU+01CwBnZuUMWstoc/B5QIDAQABo4IBKzCCAScwDgYDVR0PAQH/
> BAQDAgEGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8E
> CDAGAQH/AgEAMDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29j
> c3AuZW50cnVzdC5uZXQwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2NybC5lbnRy
> dXN0Lm5ldC9nMmNhLmNybDA7BgNVHSAENDAyMDAGBFUdIAAwKDAmBggrBgEFBQcC
> ARYaaHR0cDovL3d3dy5lbnRydXN0Lm5ldC9ycGEwHQYDVR0OBBYEFMP30LUqMK2v
> DZEhcDlU3byJcMc6MB8GA1UdIwQYMBaAFGpyJnrQHu995ztpUdRsjZ+QEmarMA0G
> CSqGSIb3DQEBCwUAA4IBAQC0h8eEIhopwKR47PVPG7SEl2937tTPWa+oQ5YvHVje
> pvMVWy7ZQ5xMQrkXFxGttLFBx2YMIoYFp7Qi+8VoaIqIMthx1hGOjlJ+Qgld2dnA
> DizvRGsf2yS89byxqsGK5Wbb0CTz34mmi/5e0FC6m3UAyQhKS3Q/WFOv9rihbISY
> Jnz8/DVRZZgeO2x28JkPxLkJ1YXYJKd/KsLak0tkuHB8VCnTglTVz6WUwzOeTTRn
> 4Dh2ZgCN0C/GqwmqcvrOLzWJ/MDtBgO334wlV/H77yiI2YIowAQPlIFpI+CRKMVe
> 1QzX1CA778n4wI+nQc1XRG5sZ2L+hN/nYNjvv9QiHg3n
> -----END CERTIFICATE-----
> -----BEGIN CERTIFICATE-----
> MIIE/zCCA+egAwIBAgIEUdNARDANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMC
> VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0
> Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW
> KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl
> cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE0MDkyMjE3MTQ1N1oXDTI0MDkyMzAx
> MzE1M1owgb4xCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgw
> JgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQL
> EzAoYykgMjAwOSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9u
> bHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
> eSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuoS2ctueDGvi
> mekwAad26jK4lUEaydphTlhyz/72gnm/c2EGCqUn2LNf00VOHHLWTjLycooP94MZ
> 0GqAgABFHrDH55q/ElcnHKNoLwqHvWprDl5l8xx31dSFjXAhtLMy54ui1YY5ArG4
> 0kfO5MlJxDun3vtUfVe+8OhuwnmyOgtV4lCYFjITXC94VsHClLPyWuQnmp8k18bs
> 0JslguPMwsRFxYyXegZrKhGfqQpuSDtv29QRGUL3jwe/9VNfnD70FyzmaaxOMkxi
> d+q36OW7NLwZi66cUee3frVTsTMi5W3PcDwa+uKbZ7aD9I2lr2JMTeBYrGQ0EgP4
> to2UYySkcQIDAQABo4IBDzCCAQswDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQI
> MAYBAf8CAQEwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2Nz
> cC5lbnRydXN0Lm5ldDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3JsLmVudHJ1
> c3QubmV0L3Jvb3RjYTEuY3JsMDsGA1UdIAQ0MDIwMAYEVR0gADAoMCYGCCsGAQUF
> BwIBFhpodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NQUzAdBgNVHQ4EFgQUanImetAe
> 733nO2lR1GyNn5ASZqswHwYDVR0jBBgwFoAUaJDkZ6SmU4DHhmak8fdLQ/uEvW0w
> DQYJKoZIhvcNAQELBQADggEBAGkzg/woem99751V68U+ep11s8zDODbZNKIoaBjq
> HmnTvefQd9q4AINOSs9v0fHBIj905PeYSZ6btp7h25h3LVY0sag82f3Azce/BQPU
> AsXx5cbaCKUTx2IjEdFhMB1ghEXveajGJpOkt800uGnFE/aRs8lFc3a2kvZ2Clvh
> A0e36SlMkTIjN0qcNdh4/R0f5IOJJICtt/nP5F2l1HHEhVtwH9s/HAHrGkUmMRTM
> Zb9n3srMM2XlQZHXN75BGpad5oqXnafOrE6aPb0BoGrZTyIAi0TVaWJ7LuvMuueS
> fWlnPfy4fN5Bh9Bp6roKGHoalUOzeXEodm2h+1dK7E3IDhA=
> -----END CERTIFICATE-----
> EOF
Dump a live cert chain (squareup-chain.crt) with leaf flag
$ certigo --verbose dump squareup-chain-leaf-only.crt --first
** CERTIFICATE 1 **
Input Format: PEM
Serial: 260680855742043049380997676879525498489
Valid: 2016-07-15 20:15 UTC to 2017-07-31 20:45 UTC
Signature: SHA256-RSA
Subject Info:
\tCountry: US (esc)
\tProvince: California (esc)
\tLocality: San Francisco (esc)
\tEV Incorporation Country: US (esc)
\tEV Incorporation Province: Delaware (esc)
\tOrganization: Square, Inc. (esc)
\tBusiness Category: Private Organization (esc)
\tEV Incorporation Registration Number: 4699855 (esc)
\tCommonName: www.squareup.com (esc)
Issuer Info:
\tCountry: US (esc)
\tOrganization: Entrust, Inc. (esc)
\tOrganizational Unit: See www.entrust.net/legal-terms (esc)
\tOrganizational Unit: (c) 2014 Entrust, Inc. - for authorized use only (esc)
\tCommonName: Entrust Certification Authority - L1M (esc)
Subject Key ID: D4:17:14:6F:0B:C5:20:A1:D6:FE:21:7E:DC:9E:F8:57:9C:ED:AE:6A
Authority Key ID: C3:F7:D0:B5:2A:30:AD:AF:0D:91:21:70:39:54:DD:BC:89:70:C7:3A
Basic Constraints: CA:false
OCSP Server(s):
\thttp://ocsp.entrust.net (esc)
Issuing Certificate URL(s):
\thttp://aia.entrust.net/l1m-chain256.cer (esc)
Key Usage:
\tDigital Signature (esc)
\tKey Encipherment (esc)
Extended Key Usage:
\tServer Auth (esc)
\tClient Auth (esc)
DNS Names:
\twww.squareup.com, squareup.com, (esc)
\taccount.squareup.com, mkt.com, www.mkt.com, (esc)
\tmarket.squareup.com, gosq.com, www.gosq.com, (esc)
\tgosq.co, www.gosq.co (esc)
+117
View File
@@ -0,0 +1,117 @@
Set up test data.
$ base64 --decode > example.p12 <<EOF
> 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
> TlfIjZvesIFwoYNabyLXBAiheBe+L56f7AICCAA=
> EOF
Dump PEM blocks from a PKCS12 keystore. Only the first pem block should be shown
(note that the private key is not printed as a result)
$ certigo --verbose dump --first --pem --password password example.p12
-----BEGIN CERTIFICATE-----
MIIEHzCCAgegAwIBAgIRAMNYYdrU6LgeLMBAy2UeGDowDQYJKoZIhvcNAQELBQAw
EzERMA8GA1UEAxMIQ2VydEF1dGgwHhcNMjIwMjIzMDI0MTIxWhcNMjMwODIzMDI0
MzE2WjAQMQ4wDAYDVQQDEwVBbGljZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBALx3haTR1grI1eO38F75leR6SnaD6puo9VJX1BScl8ZsWNCqE6XV6Fj+
Q5LWWYjui9qZW+uLdFCsYfyshzjvJ7+2xOwTAbAHP6GJjJqqLuaA1chFgFHepZVT
e0zf96PA1TDkcCILeeEw6qgoi8pafQxE3eLlLIPYYQMC0Y7QMk0B/5UFToTA1PCM
jstBe+QRjgzADGCbmn0mZulvZ9/aVCuLGuY8mhSEyJw6qxGwBrkbObZhVj4+fbfC
0i0HoMBPHGIa5K2xJSCBliVynXCtdGzpFjH64uLn+ShzQPUir1lpRCFt4UPgpP1l
W4uSWg3WiF+XHokVjmlGpLjQWZZtIs0CAwEAAaNxMG8wDgYDVR0PAQH/BAQDAgO4
MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4EFgQUrSU3Jr/d
3TccQDrYn+0Z8vNRSAMwHwYDVR0jBBgwFoAU5GRfJoIow7TFwMIn8/QYzRf8U+gw
DQYJKoZIhvcNAQELBQADggIBAAz2a8UWg4qay3s8iOUiMH55l+O6KpBUlEDEvunJ
Q8EwueXWr5P4gfDuKorK7dg9fql5Q9N3Yj3c4a6+0HEN26jmPZb0xKQlqoQ72K6H
GbGEqXvcZ3Ai/EBH09e5DcM0lqEtre5ftBFespelQ423uDWTbWKZONOiaWEUkyUL
LBtPXVW514bctIwrusc7ReSJ3PW3f9rP4pIyjcA8ikUi2bc7m+Ti1qQQtbVRwJV2
wJLCHqszIOhyZpq4Ni92auK9Gqvx3W3wSQQ74od0odkeCuHmsTOHOy5ug+0TTDf/
ss+mmo8BFsOeAxVmVQoM0B3rbJeDiMiLX2BLFMHIqGKlTwLV3DtAotJhrRWpM3Ej
+iUHrAgh64P3m1x0t/yYy6HH3FuARLI8S9m7vCQPTOM67gF8A0sQfTVbrbM9VJ9Z
WrOL/ffwbkIakDXi4gEr1ednMyIyNwvbh9K+aLoHAzO1ZXGBqTZnb2eyjv6C/3zd
tHOWSHtgiH0VFeckpZc4UzOXzbcsDZk9xKWIxhFSqPcOZxhZLLBSXB9VZfkFAOcE
h01onBl0rqaFtkwb7gyz7h2+V04E3+YWS75I8GfiUi5EDgtEErY5AN6RgmP+nNoS
26M7EEhpxkSJvoxyzyor2T+7SlIdoerMi4A0zHZ2M3tQP0nOoSbeJiz5QK72hcC5
4zi0
-----END CERTIFICATE-----
+172
View File
@@ -0,0 +1,172 @@
Set up test data.
$ base64 --decode > example.p12 <<EOF
> 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
> TlfIjZvesIFwoYNabyLXBAiheBe+L56f7AICCAA=
> EOF
Dump PEM blocks from a PKCS12 keystore. Multiple pem blocks are displayed
$ certigo --verbose dump --pem --password password example.p12
-----BEGIN CERTIFICATE-----
MIIEHzCCAgegAwIBAgIRAMNYYdrU6LgeLMBAy2UeGDowDQYJKoZIhvcNAQELBQAw
EzERMA8GA1UEAxMIQ2VydEF1dGgwHhcNMjIwMjIzMDI0MTIxWhcNMjMwODIzMDI0
MzE2WjAQMQ4wDAYDVQQDEwVBbGljZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBALx3haTR1grI1eO38F75leR6SnaD6puo9VJX1BScl8ZsWNCqE6XV6Fj+
Q5LWWYjui9qZW+uLdFCsYfyshzjvJ7+2xOwTAbAHP6GJjJqqLuaA1chFgFHepZVT
e0zf96PA1TDkcCILeeEw6qgoi8pafQxE3eLlLIPYYQMC0Y7QMk0B/5UFToTA1PCM
jstBe+QRjgzADGCbmn0mZulvZ9/aVCuLGuY8mhSEyJw6qxGwBrkbObZhVj4+fbfC
0i0HoMBPHGIa5K2xJSCBliVynXCtdGzpFjH64uLn+ShzQPUir1lpRCFt4UPgpP1l
W4uSWg3WiF+XHokVjmlGpLjQWZZtIs0CAwEAAaNxMG8wDgYDVR0PAQH/BAQDAgO4
MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4EFgQUrSU3Jr/d
3TccQDrYn+0Z8vNRSAMwHwYDVR0jBBgwFoAU5GRfJoIow7TFwMIn8/QYzRf8U+gw
DQYJKoZIhvcNAQELBQADggIBAAz2a8UWg4qay3s8iOUiMH55l+O6KpBUlEDEvunJ
Q8EwueXWr5P4gfDuKorK7dg9fql5Q9N3Yj3c4a6+0HEN26jmPZb0xKQlqoQ72K6H
GbGEqXvcZ3Ai/EBH09e5DcM0lqEtre5ftBFespelQ423uDWTbWKZONOiaWEUkyUL
LBtPXVW514bctIwrusc7ReSJ3PW3f9rP4pIyjcA8ikUi2bc7m+Ti1qQQtbVRwJV2
wJLCHqszIOhyZpq4Ni92auK9Gqvx3W3wSQQ74od0odkeCuHmsTOHOy5ug+0TTDf/
ss+mmo8BFsOeAxVmVQoM0B3rbJeDiMiLX2BLFMHIqGKlTwLV3DtAotJhrRWpM3Ej
+iUHrAgh64P3m1x0t/yYy6HH3FuARLI8S9m7vCQPTOM67gF8A0sQfTVbrbM9VJ9Z
WrOL/ffwbkIakDXi4gEr1ednMyIyNwvbh9K+aLoHAzO1ZXGBqTZnb2eyjv6C/3zd
tHOWSHtgiH0VFeckpZc4UzOXzbcsDZk9xKWIxhFSqPcOZxhZLLBSXB9VZfkFAOcE
h01onBl0rqaFtkwb7gyz7h2+V04E3+YWS75I8GfiUi5EDgtEErY5AN6RgmP+nNoS
26M7EEhpxkSJvoxyzyor2T+7SlIdoerMi4A0zHZ2M3tQP0nOoSbeJiz5QK72hcC5
4zi0
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIE5jCCAs6gAwIBAgIBATANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDEwhDZXJ0
QXV0aDAeFw0yMjAyMjMwMjMzMjdaFw0yMzA4MjMwMjQzMTZaMBMxETAPBgNVBAMT
CENlcnRBdXRoMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvHQKjraI
FiUqfq3PHOuBYd5kDhFigiKMhgM5irokpdPA6ptZZ4fHXNRZnFt8JQDDPtIPSwph
OLRiVzj+y50SHdHTTZoVmtHJrsSMgIjUCGJnAYS77H+axE7bmHwzIJRc6Xo5ekGT
Jp83GuXPocLZ/9TH7SsrR8zFQhyfHnCM4TN0EMpHAe6TlW1GWUG/WKCc3uDSav5o
2KdtN+Y/D5Ca1gpO0gu7RMCXveu/1Gf3eMDIHV0rUwOrs87nuTGD8zt9JpDP0UzU
q48xa14Wr9nM5q9sCuuHqzOD+o9zGoyTChnJLjzuVze7fY4J7n3U9bv1l30OGcAb
DGB9HuMvqwk7HSpG2ZqibCrGXcCjxaGaiHY6IIjfHgbeiXeG46xRAynTx0gLMcah
mWAbhC5fFsQvEWb8f6WO1UvhAmNVq7+No9RXM3ilEMHfLc/Q7l7OfP8Gw3x24mpS
nFUexOQJ3z3p3wP2nDX6q2dXJRNilqnny4A2xCDnzRK8o7hdo8tzXkNwE31jpAWz
2+cGyHhoKWgwmm7XYJa/vAskQ3/9VCD9X+BvodWmTn6SqU+Q4yN0Vh051xRRbGAJ
QZjYbF1L+LOyfuB4PkHkiK7k314istCFFLqe/nz8QKtq0oBXPKAizV3MyFEz+uUD
IerMMo05QjiN+TR2Wbd2Dx+EwcJqoPhozDsCAwEAAaNFMEMwDgYDVR0PAQH/BAQD
AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFORkXyaCKMO0xcDCJ/P0
GM0X/FPoMA0GCSqGSIb3DQEBCwUAA4ICAQAQV90RHcoS4HCaSbXwYOBZ0JDjlEPK
oZG1PMFsOP8J3YJPshybsLP6L+JxQ7tQbnswYdJO7YaDUkP91n+O5w4menfdfdY5
A+QJvib18KGzurLSn+QU5uAUaT0TMfU7O906J1H4hUr9S/cQB9nvWLZbrtkIFo30
RRocu8zt2/Q0C50rTSWD96Vgy8uHUThHhfpCbQCnFc4czm9SDhaEpgOyCBAqOZ4D
9OeB/T+a13k/G8JZr3GhtS3Im7WFB1PLjrbbRHK03vVQMPoeg+/XjJclM8CtV34k
0f1vTONmP4PX8wk8pqh9eyK0kIDf9bmxe4AEyycs49piT4lgToFEAsK+QrnWNsqR
7R6RTg4lWviIdgm8/yHQz/15TyfuNk6cSNaEDPkEKx71cYjDjda3JtlrAgXeJ84x
Ox8+zQEuBummlvxvEhk2Cs9QHbL4DcgXbHijakuzOHKonzRiSDEBkm/JFizBB8+k
d6hgvaH2UkavFPq64s7/+lBw1akQ3AiT1CTq7pta5Eru352OqDdUS/iew8n5cZHi
PPGjoAhvUU+Ij8kFMe7ICuDy25jn/hxGbCbjuJHQikZJssX983cLd96/7d6dcqRU
6hRqpe+kXdFNpxj/83JGXGLpU6obNBGg27n4o2SINsIIHci6mDGi0mbs08eEkyqL
2GbYHPp6z2n/UQ==
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEowIBAAKCAQEAvHeFpNHWCsjV47fwXvmV5HpKdoPqm6j1UlfUFJyXxmxY0KoT
pdXoWP5DktZZiO6L2plb64t0UKxh/KyHOO8nv7bE7BMBsAc/oYmMmqou5oDVyEWA
Ud6llVN7TN/3o8DVMORwIgt54TDqqCiLylp9DETd4uUsg9hhAwLRjtAyTQH/lQVO
hMDU8IyOy0F75BGODMAMYJuafSZm6W9n39pUK4sa5jyaFITInDqrEbAGuRs5tmFW
Pj59t8LSLQegwE8cYhrkrbElIIGWJXKdcK10bOkWMfri4uf5KHNA9SKvWWlEIW3h
Q+Ck/WVbi5JaDdaIX5ceiRWOaUakuNBZlm0izQIDAQABAoIBAEGv/tqVcF7N5Q67
e4H+x6mcnft0uv6KAwcyKW8NrTCxbrs7rCFuzs7FwFObdhVt3zzPmuQb9OxxSK3C
jFbhtB7z2urVLQ9nV1w8Ds+RZUtduCVXZAQk7919/Umr/ioK+cNSu2qCSXadkAwQ
JbjflRoDnrqIWd2SOy3Le7KlCgMgiAqyRaEcvt9Gnc3vqKHEh3XA4z2sYBBECy29
xzzWyq9U1Lzhf1xf0PrPQsxfeuxROFn7WZR2iP+SxI1N/mot2ne9dZRLY3pZjLl4
7SdNx9DJrfltJHHCIHDtGumpKe4Ob15uO4WQ86a/sMcmWW71h9Clpmue9tFYKM3a
A3NwZMECgYEA1/Fix/WaOkcU8+8ggSqjVS8Bg17U27RDi0n+1Kh6j41CGuUThrJC
tePmVs/gIT+o2v9iVcvB2hTun2NwLjAUXt4Fo49aAmzcW66uNxFmHVO7+h0xRNw5
67L94TjOwHGu1THbgWCVj/gOrlkYwYPxBKlN+IPqUNK1k/IUUJxlL1UCgYEA321d
cHzJ8Ps4SxRItu0EOyB95us7NzwkYfrWNybPJxuW74hotXHSvu0i127RZ/QZZd/F
paWRq51RRZe8HxDuuWsolWavRfaWSb1JyJ0n1balbI9/ESN/vcMhi1LusJ+A5p8V
ou7U5bqXqZnzo19umFTr74P0RkJdk7OJye4KdZkCgYBoBpWyhCM23dU/Kbv73WFv
gMR217Es4asEJ7JGGZ9pFgB5Wk9MvQUcAFyPB3cOLU+XqB1j/VM2To0hZVK+PVUi
2kvXHhCbSHvjAsRULOKHUDYm5/c7F+gjHkflPmuDE4DInUsECVYjU7kmzi750ijC
ORkhldLD+q2URrL4nk60PQKBgHMXI/3Q2jlfP0U1gqtv9jD68L/lxlASk+9Axd4N
CMJtbNegncdxhYzCHKN6uzXgQMEAfxBv9FTBqd6+ZbJfB4nN0E79YSYZ+pqrfflw
MtfcyOPeGydZ8PBwNrRNGRU0ZLLnmb6fZl2cO4mq+xzaCN9BR3POtiMHBqsR3dV9
4DdpAoGBALFruy/DW2urx5oFyppFv0xVLuRHzwW5gFyVSoa2/7TElBBQ7luXOVvX
QulcA8LTBbp9ZlJ6O5SrNKZW3QpSWeuRoGaxsfs6Yq1sGDbyiWtuufDknAqEiZg6
LGdAI9LSB35HihR3AzNW+FsQ3p1aiEuWETFH9BaNLE2CdVJ7mLlT
-----END PRIVATE KEY-----