From e0702d739dcd9b8024673cb583a54ac85461a16f Mon Sep 17 00:00:00 2001 From: guihouchang Date: Thu, 19 Jun 2025 14:09:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(qiniu):=20=E5=BD=93=E5=9C=A8=E6=9B=B4?= =?UTF-8?q?=E6=96=B0id=E6=97=B6=EF=BC=8C=E5=B7=B2=E7=BB=8F=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E7=BB=91=E5=AE=9A=E8=AF=81=E4=B9=A6=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5=E4=B8=8B=EF=BC=8C=E6=97=A0=E6=B3=95=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=B0=E7=9A=84=E8=AF=81=E4=B9=A6ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/cert/deploy/qiniu.go | 97 +++++++++++++++++++--- backend/internal/cert/deploy/qiniu_test.go | 27 +++++- 2 files changed, 109 insertions(+), 15 deletions(-) diff --git a/backend/internal/cert/deploy/qiniu.go b/backend/internal/cert/deploy/qiniu.go index f831854..99b91dd 100644 --- a/backend/internal/cert/deploy/qiniu.go +++ b/backend/internal/cert/deploy/qiniu.go @@ -5,11 +5,10 @@ import ( "context" "encoding/json" "fmt" - "net/http" - "strconv" - "github.com/qiniu/go-sdk/v7/auth" "github.com/qiniu/go-sdk/v7/client" + "net/http" + "strconv" ) type commonResponse struct { @@ -42,7 +41,7 @@ func requestQiniu(cfg map[string]any, path string, m map[string]any, method stri if err != nil { return err } - + uri := fmt.Sprintf("https://api.qiniu.com/%v", path) credentials := auth.New(providerConfig["access_key"], providerConfig["access_secret"]) header := http.Header{} @@ -51,7 +50,6 @@ func requestQiniu(cfg map[string]any, path string, m map[string]any, method stri return err } - func DeployQiniuCdn(cfg map[string]any) error { _, ok := cfg["certificate"].(map[string]any) if !ok { @@ -75,6 +73,43 @@ func DeployQiniuCdn(cfg map[string]any) error { return err } +func updateQiniuDomainCert(cfg map[string]any) error { + _, ok := cfg["certificate"].(map[string]any) + if !ok { + return fmt.Errorf("证书不存在") + } + + domain, ok := cfg["domain"].(string) + if !ok { + return fmt.Errorf("参数错误:domain") + } + + forceHttps, ok := cfg["force_https"].(bool) + if !ok { + forceHttps = true + } + + http2Enable, ok := cfg["http2_enable"].(bool) + if !ok { + http2Enable = true + } + + certId, err := uploadQiniuCert(cfg) + if err != nil { + return err + } + m := map[string]any{ + "certid": certId, + "domain": domain, + "forceHttps": forceHttps, + "http2Enable": http2Enable, + } + + var response commonResponse + err = requestQiniu(cfg, fmt.Sprintf("domain/%s/httpsconf", domain), m, "PUT", &response) + return err +} + func DeployQiniuOss(cfg map[string]any) error { _, ok := cfg["certificate"].(map[string]any) if !ok { @@ -84,17 +119,57 @@ func DeployQiniuOss(cfg map[string]any) error { if !ok { return fmt.Errorf("参数错误:domain") } - + + // 判断域名是否已开启HTTPS + // { + // "certId": , + // "forceHttps": , + // "http2Enable": + // } + var httpsConfig struct { + Https struct { + CertID string `json:"certId"` + ForceHttps bool `json:"forceHttps"` + Http2Enable bool `json:"http2Enable"` + } `json:"https"` + } + err := requestQiniu(cfg, fmt.Sprintf("domain/%s", domain), nil, "GET", &httpsConfig) + if err != nil { + return fmt.Errorf("获取域名HTTPS配置失败: %v", err) + } + certId, err := uploadQiniuCert(cfg) if err != nil { return err } - m := map[string]any{ - "certid": certId, - "domain": domain, + + if httpsConfig.Https.CertID != "" { + // 如果已开启HTTPS,则调用updateQiniuDomainCert更新证书 + cfg["cert_id"] = certId + cfg["force_https"] = httpsConfig.Https.ForceHttps + cfg["http2_enable"] = httpsConfig.Https.Http2Enable + err = updateQiniuDomainCert(cfg) + return err + } else { + // 如果未开启HTTPS,则使用POST请求绑定证书 + m := map[string]any{ + "certid": certId, + "domain": domain, + } + var response commonResponse + err = requestQiniu(cfg, "cert/bind", m, "POST", &response) + return err } +} + +func delQiniuCert(cfg map[string]any) error { + certId, ok := cfg["old_cert_id"].(string) + if !ok { + return fmt.Errorf("参数错误:cert_id") + } + m := map[string]any{} var response commonResponse - err = requestQiniu(cfg, "cert/bind", m, "POST", &response) + err := requestQiniu(cfg, fmt.Sprintf("sslcert/%v", certId), m, "DELETE", &response) return err } @@ -128,4 +203,4 @@ func QiniuAPITest(providerID string) error { return fmt.Errorf("测试请求失败: %v", err) } return nil -} \ No newline at end of file +} diff --git a/backend/internal/cert/deploy/qiniu_test.go b/backend/internal/cert/deploy/qiniu_test.go index 16c0a1b..b1f7ef8 100644 --- a/backend/internal/cert/deploy/qiniu_test.go +++ b/backend/internal/cert/deploy/qiniu_test.go @@ -13,7 +13,7 @@ func TestQiniuUploadCert(t *testing.T) { } certId, _ := uploadQiniuCert(cfg) t.Logf(certId) - + } func TestQiniuCdn(t *testing.T) { @@ -33,13 +33,32 @@ func TestQiniuCdn(t *testing.T) { } } +func TestUpdateQiniuDomainCert(t *testing.T) { + cfg := map[string]any{ + "domain": "xxxxx.cn", + "provider_id": "11", + "force_https": true, + "http2_enable": true, + "certificate": map[string]any{ + "key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAmdGdFAEM+w2XNA+y3CkmutFOLM1p1G+xHF9VIxdlkzAMVHPf\nD2V9T8znDWjlcE1cQQEwPAHrAeb7+QqxDI1neJNmAw4XUjldPLjXBSaKkrFlUy/f\ncecUXzqQXoXZHbV4KxnT3C2t9WEP589w0fea93g7xWdJUJsd/obeNwwalh/pYhqg\nJLNR8V0yKRoqF7eOxcYr5CFGdTXyFCAzWtBTuIBLy79zrmTXzUj56Xjx6dT958Sg\nOnO3kY2Jp+BhNQ3zsZNNkp2tVRzR66/qA2t+Vdw91PpT3pUmdbLSdGUPk0W9JDtp\nzss0XJ37gyZ6cwv6RVxVZMS1GkOaAaHMmdB+uwIDAQABAoIBAEcDyIKAza5mouVN\nTiVo9lGP6oiyuWZzvpA7z0GpPqMKrtaavGQOViFul0nQoQUNIkd8tfkuZYJ2UuSy\ns/T4n8nCO3mzmr7CbzJmoBbnqVh6gC48zut2ZShmEFsjbo7Rxk4X2YEwsby0+DPs\nyMiXiTsxjl7gBbAqPVnSiGtfsjKWh9ifHXdvNn9LHiUxymFYZupetRvkjsu2fD4i\n8A2x4+N0LuzFnelqSiOcAZwD/8zNJ30jg64geZOn8r1VH8uUpp3b5mwqBvXeQMds\n0NRKALZRH9Zhjq7+TkRF2F6fttlZc+AWOA8wdtoXSixeEg0U1dYe+p8adscbdLtL\nyGmGwwECgYEAyS5vAdBvQNa779ci2zGsFvEQKV/F/BaweEFS+lZioUabrnZX7pvs\nX/491nJ9w+XPc1DGuI5JqB0sRODl5ZoAe2ZlIAMZj5JVy+PCqxVgDJk+kv+mHqPw\ngQ0qoHdZYAa+5NbyBXSmKkkkgcxbE+PI33sypYsOgHSsvtsXE8QhBDsCgYEAw7td\nqNDjc/Kn2Kq4jsKNqVZXxvs8AUG34KbAv/Q+TYmxWwSQl2o944qpY3IPbZnHdAOH\nELxu5n6YohTG8lsx3ed5LC5SjTDvmKkGWNYK7ZwCV3kEiBK1QKj6NVFszcmYOLvv\n2X06N24UoNkvktV/IpUfkeX4hdc+ebEtUzvzR4ECgYEAvVKvMHvgVpo93mUM7k3+\nbtCIrwbsIGGRzHldByzIQJFb7IB+G5Qsi+GMfATeib34zcJUYFW2xzg88szaTIny\nri4cOFXydgP2LZu3FJ1W+EQ2eMuQnwEUUb38QWpPd2ihuGT2+V9fCCgw7N1NUJhp\n7rXXYaZNDWG/NxSi0P0fPQUCgYABPUt/iSsXjd7QOWyHwuWgv+I4aVjc7Syb6JJp\n5MMMPKX53JKJ0utnaHZgIdXFLOcdbfRJ/9d38C9JP3ZvDHLJY/DZfcWaDUhHIDLh\nFyHklUtSgHqt3eh161wCQGy+9NrY6R/AsdFPjovk5NsvQ9jVQDp98wXa2x0TKjMO\nRt/ogQKBgF3+3MoAiwAAVp9E9FdgdJMu1IC4PosyKCWiF3meUZP6mrRkc7hM3P3U\nTD0vqJ6N0xm/czA/DgQ105GK5s/ccJwB4JrX531Eiz8aybou5eQp0A/pMbokco7Z\nShMnOPs1MI2Lly8rQsD62Mc1twg+yrFiobu+lu7yNOGHT6vDd31o\n-----END RSA PRIVATE KEY-----\n", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFBjCCA+6gAwIBAgISBYv494Gaq0RQHIs7aB7x8SvrMA0GCSqGSIb3DQEBCwUA\nMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD\nEwNSMTEwHhcNMjUwNjE5MDIwMTAxWhcNMjUwOTE3MDIwMTAwWjAfMR0wGwYDVQQD\nExR4aWFuZ3Fpbi43Nzk5NTIwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAJnRnRQBDPsNlzQPstwpJrrRTizNadRvsRxfVSMXZZMwDFRz3w9lfU/M\n5w1o5XBNXEEBMDwB6wHm+/kKsQyNZ3iTZgMOF1I5XTy41wUmipKxZVMv33HnFF86\nkF6F2R21eCsZ09wtrfVhD+fPcNH3mvd4O8VnSVCbHf6G3jcMGpYf6WIaoCSzUfFd\nMikaKhe3jsXGK+QhRnU18hQgM1rQU7iAS8u/c65k181I+el48enU/efEoDpzt5GN\niafgYTUN87GTTZKdrVUc0euv6gNrflXcPdT6U96VJnWy0nRlD5NFvSQ7ac7LNFyd\n+4MmenML+kVcVWTEtRpDmgGhzJnQfrsCAwEAAaOCAiYwggIiMA4GA1UdDwEB/wQE\nAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIw\nADAdBgNVHQ4EFgQUUQbZ8GBo/oRpaIavLSGH9etsPkAwHwYDVR0jBBgwFoAUxc9G\npOr0w8B6bJXELbBeki8m47kwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzAChhdo\ndHRwOi8vcjExLmkubGVuY3Iub3JnLzAfBgNVHREEGDAWghR4aWFuZ3Fpbi43Nzk5\nNTIwLmNvbTATBgNVHSAEDDAKMAgGBmeBDAECATAvBgNVHR8EKDAmMCSgIqAghh5o\ndHRwOi8vcjExLmMubGVuY3Iub3JnLzEwOC5jcmwwggEFBgorBgEEAdZ5AgQCBIH2\nBIHzAPEAdwDd3Mo0ldfhFgXnlTL6x5/4PRxQ39sAOhQSdgosrLvIKgAAAZeGIJaX\nAAAEAwBIMEYCIQClkE0v+L8IXwqUvoty9HhLLKmjnfnHIBwGlZXti8P0ywIhAL8e\nRjsG1Lfz0c+gJ5MBrb4AaFuBzjpoivvh8G4cG2gAAHYAzPsPaoVxCWX+lZtTzumy\nfCLphVwNl422qX5UwP5MDbAAAAGXhiCepwAABAMARzBFAiEArk+Yu3MAs7bHnrDA\nhl3KvOQnTrZHmx6idubPKnTMUWACIH1Q3IA/EnNlf8cP8Jb69tCce/2i+u6qbsJr\n1ucZqZ7HMA0GCSqGSIb3DQEBCwUAA4IBAQA7PRrre6dv5rCNQ4z9waDcce9wXWZw\nJXzE+AE/OZ2crl8Pb2AWvFukN1w9yR9K5tMTZC/gGcFD1knzTAy2mAJn2GNgNMdE\n9LV4T2GA9H2r/NLRcNM9vE4D0M0UTWRxyJeqNAx0MNXqh5yvbE+3smxhiF190WIK\nt4Dmsk3U4RpilQ3aqK/mqdfCvOlvrDJuFD6I3+sG1Jjb9xtsM8+g/Dqx2iCeMwpH\ngLUbq9EpDf9gLXjYgELFeUdCirKR/eWEP3pxnJjEf2Gnisyy/gxNAhz/7Breb217\nKCW8PqoTgmjVNvQcUL5BKG0L1vB0JQ7Aq+osdXU5xKD1fNKuLWu/nghF\n-----END CERTIFICATE-----\n\n-----BEGIN CERTIFICATE-----\nMIIFBjCCAu6gAwIBAgIRAIp9PhPWLzDvI4a9KQdrNPgwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw\nWhcNMjcwMzEyMjM1OTU5WjAzMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\nRW5jcnlwdDEMMAoGA1UEAxMDUjExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAuoe8XBsAOcvKCs3UZxD5ATylTqVhyybKUvsVAbe5KPUoHu0nsyQYOWcJ\nDAjs4DqwO3cOvfPlOVRBDE6uQdaZdN5R2+97/1i9qLcT9t4x1fJyyXJqC4N0lZxG\nAGQUmfOx2SLZzaiSqhwmej/+71gFewiVgdtxD4774zEJuwm+UE1fj5F2PVqdnoPy\n6cRms+EGZkNIGIBloDcYmpuEMpexsr3E+BUAnSeI++JjF5ZsmydnS8TbKF5pwnnw\nSVzgJFDhxLyhBax7QG0AtMJBP6dYuC/FXJuluwme8f7rsIU5/agK70XEeOtlKsLP\nXzze41xNG/cLJyuqC0J3U095ah2H2QIDAQABo4H4MIH1MA4GA1UdDwEB/wQEAwIB\nhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwEgYDVR0TAQH/BAgwBgEB\n/wIBADAdBgNVHQ4EFgQUxc9GpOr0w8B6bJXELbBeki8m47kwHwYDVR0jBBgwFoAU\nebRZ5nu25eQBc4AIiMgaWPbpm24wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAC\nhhZodHRwOi8veDEuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcG\nA1UdHwQgMB4wHKAaoBiGFmh0dHA6Ly94MS5jLmxlbmNyLm9yZy8wDQYJKoZIhvcN\nAQELBQADggIBAE7iiV0KAxyQOND1H/lxXPjDj7I3iHpvsCUf7b632IYGjukJhM1y\nv4Hz/MrPU0jtvfZpQtSlET41yBOykh0FX+ou1Nj4ScOt9ZmWnO8m2OG0JAtIIE38\n01S0qcYhyOE2G/93ZCkXufBL713qzXnQv5C/viOykNpKqUgxdKlEC+Hi9i2DcaR1\ne9KUwQUZRhy5j/PEdEglKg3l9dtD4tuTm7kZtB8v32oOjzHTYw+7KdzdZiw/sBtn\nUfhBPORNuay4pJxmY/WrhSMdzFO2q3Gu3MUBcdo27goYKjL9CTF8j/Zz55yctUoV\naneCWs/ajUX+HypkBTA+c8LGDLnWO2NKq0YD/pnARkAnYGPfUDoHR9gVSp/qRx+Z\nWghiDLZsMwhN1zjtSC0uBWiugF3vTNzYIEFfaPG7Ws3jDrAMMYebQ95JQ+HIBD/R\nPBuHRTBpqKlyDnkSHDHYPiNX3adPoPAcgdF3H2/W0rmoswMWgTlLn1Wu0mrks7/q\npdWfS6PJ1jty80r2VKsM/Dj3YIDfbjXKdaFU5C+8bhfJGqU3taKauuz0wHVGT3eo\n6FlWkWYtbt4pgdamlwVeZEW+LM7qZEJEsMNPrfC03APKmZsJgpWCDWOKZvkZcvjV\nuYkQ4omYCTX5ohy+knMjdOmdH9c7SpqEWBDC86fiNex+O0XOMEZSa8DA\n-----END CERTIFICATE-----\n\n\n-----BEGIN CERTIFICATE-----\nMIIFBjCCAu6gAwIBAgIRAIp9PhPWLzDvI4a9KQdrNPgwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw\nWhcNMjcwMzEyMjM1OTU5WjAzMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\nRW5jcnlwdDEMMAoGA1UEAxMDUjExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAuoe8XBsAOcvKCs3UZxD5ATylTqVhyybKUvsVAbe5KPUoHu0nsyQYOWcJ\nDAjs4DqwO3cOvfPlOVRBDE6uQdaZdN5R2+97/1i9qLcT9t4x1fJyyXJqC4N0lZxG\nAGQUmfOx2SLZzaiSqhwmej/+71gFewiVgdtxD4774zEJuwm+UE1fj5F2PVqdnoPy\n6cRms+EGZkNIGIBloDcYmpuEMpexsr3E+BUAnSeI++JjF5ZsmydnS8TbKF5pwnnw\nSVzgJFDhxLyhBax7QG0AtMJBP6dYuC/FXJuluwme8f7rsIU5/agK70XEeOtlKsLP\nXzze41xNG/cLJyuqC0J3U095ah2H2QIDAQABo4H4MIH1MA4GA1UdDwEB/wQEAwIB\nhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwEgYDVR0TAQH/BAgwBgEB\n/wIBADAdBgNVHQ4EFgQUxc9GpOr0w8B6bJXELbBeki8m47kwHwYDVR0jBBgwFoAU\nebRZ5nu25eQBc4AIiMgaWPbpm24wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAC\nhhZodHRwOi8veDEuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcG\nA1UdHwQgMB4wHKAaoBiGFmh0dHA6Ly94MS5jLmxlbmNyLm9yZy8wDQYJKoZIhvcN\nAQELBQADggIBAE7iiV0KAxyQOND1H/lxXPjDj7I3iHpvsCUf7b632IYGjukJhM1y\nv4Hz/MrPU0jtvfZpQtSlET41yBOykh0FX+ou1Nj4ScOt9ZmWnO8m2OG0JAtIIE38\n01S0qcYhyOE2G/93ZCkXufBL713qzXnQv5C/viOykNpKqUgxdKlEC+Hi9i2DcaR1\ne9KUwQUZRhy5j/PEdEglKg3l9dtD4tuTm7kZtB8v32oOjzHTYw+7KdzdZiw/sBtn\nUfhBPORNuay4pJxmY/WrhSMdzFO2q3Gu3MUBcdo27goYKjL9CTF8j/Zz55yctUoV\naneCWs/ajUX+HypkBTA+c8LGDLnWO2NKq0YD/pnARkAnYGPfUDoHR9gVSp/qRx+Z\nWghiDLZsMwhN1zjtSC0uBWiugF3vTNzYIEFfaPG7Ws3jDrAMMYebQ95JQ+HIBD/R\nPBuHRTBpqKlyDnkSHDHYPiNX3adPoPAcgdF3H2/W0rmoswMWgTlLn1Wu0mrks7/q\npdWfS6PJ1jty80r2VKsM/Dj3YIDfbjXKdaFU5C+8bhfJGqU3taKauuz0wHVGT3eo\n6FlWkWYtbt4pgdamlwVeZEW+LM7qZEJEsMNPrfC03APKmZsJgpWCDWOKZvkZcvjV\nuYkQ4omYCTX5ohy+knMjdOmdH9c7SpqEWBDC86fiNex+O0XOMEZSa8DA\n-----END CERTIFICATE-----\n", + }, + } + err := updateQiniuDomainCert(cfg) + if err != nil { + t.Errorf("DeployQiniuOss failed: %v", err) + } else { + t.Logf("DeployQiniuOss succeeded") + } +} + func TestQiniuOss(t *testing.T) { cfg := map[string]any{ "domain": "xxxxx.cn", "provider_id": "11", "certificate": map[string]any{ - "key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAuHz6s4Q4R5DcNV0d+1R6FiGJTfrb4LLN9VNEGOWfgG3ArnJz\n3gFzOLMUZp0BLT8b6HaY1IpV1ol4ViVd0sf/oWusGG3S5+qJw1DIdr+KB096lRwr\nIH64cyhtPdtPEjY+f8PU2BBGO6qbH9qrXiGABYir0wFIvP8/17YCxmc1qcCL8r7U\nvJ58ZiFw0jw3qgxkGebPfKGAasD2irGKWf3qtHp/U9OLRTQ+vh7Vp+l5tUMLE+3n\nrLcj0nZM2GMDARjrydPMY0H53RbVkpfdEDciH1NiJMYZ1nOySAnKnE8w4Ah/+VQC\namEUkmUiL8bor2tFkX6jE7F1JzdkL+4mGmPyaQIDAQABAoIBAAOfl3BEK14jIbgT\nQp385u2dWKwv6PaiUbo87uxK7Orhp5761NIU7DWTtYBdxWKlR9U1KG5FjfG0lH5N\n+z2YZlRoysyrXNuSNy90sY3ngtH+78o9mePoU+jAcAN+1bA8DCvdOvEdbLZfn5lX\nZaCSft2ySqb5HPvH9ZyKe3EjIMzbLeP5se4ctWkIXSRfIUuZGHBIChD3c6i6F2HY\nyfBztAnrrSY9IccaTOHdLlwI4FJWeSMKYCHgeh3IYKlmkvY0gdHHCh3rgzgapTzm\n/XbtPpWIR7hl4IG3zcFHLKw5quucNI3xCDS2aeIen3J4o77btfNEqUgw+hts+72b\nVSwXHcECgYEA0LnAVxx4eTxFLA8MrhIcW/QD6qOAEMl8UN+hVJrCrBpcufG7KYU0\nHJ92SK9hmMkB1/SRe9iMNyf1yzE0PhYQoa9VZaHvo93BusjM32D+Sev2GFGH0K0a\n35mO0v9n0r/rzXf7KqRF2WckRQGf79pvtoORXREb5Xbc0+u4k6ydIZkCgYEA4kXn\nmrwIAlpmhrZ4GQtyMhq4S9ZGvEPf0rpxaJS1Ke0kSYbmStTVvYRPVrs6E4exLYSP\nAOCLDeUKxtflaFBnhJ5zJvQteyp8DTAskjxsSaS5OR3Obl4W7j6Fc6N3My1QJJqO\nJfQw7IC1ABlq6jbX7g9c+Kwuz2sOlsdTv0sDeVECgYAWDUnw6iUgSenU+dIRIgC1\nBlbTl2qUW3Uy5i2ZTrB6ll5tlsh7XoNe8soAa+cXyUTUmBY2y24k9afWS+CFHrer\nHWccUbuLyIYLQePDRfAXx0I814BN37wTG5onWKyTa4tyLdbvbmOi0G7Yi49mO+HJ\nmqTk/EXCPIigKytZDsebIQKBgQDM5QIpstUJ1HR8ziSIgT3iMyHpwloBRvEZ8Cyb\nx/UYxx2R2y8UWhBGcdYqMpYPc1M0ZZHc+HfSmDIfBwc8Y3qps5WQk5HPsxPsGVBz\nB3YDZb84Ak6Y0GixSjosEbzxwbmNu8q2gZ3/uziro1iWSB1V++FzaO9mcYofbNXg\nJfw6UQKBgQC+R+3oRHYWM83fu9th4fKVKwhpB02DCbxqHyBEV0Z0GTaSuX5jmGh3\nWceaosKWNP7kKsdycPXrhC3M1qvl5xtZvFoWSsyY89Fa5gtAlBYTnY31oTc1FNFp\nVADoQ9+6ezzJltyAm+rSnbjUrYQCFpyKX/XNvoL1PlwYAHRvkJ9Eng==\n-----END RSA PRIVATE KEY-----\n", - "cert": "-----BEGIN CERTIFICATE-----\nMIIFADCCA+igAwIBAgISBo+AmwbcW4aYdv34jdvxVwLAMA0GCSqGSIb3DQEBCwUA\nMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD\nEwNSMTAwHhcNMjUwNTIxMDA1NDIyWhcNMjUwODE5MDA1NDIxWjAeMRwwGgYDVQQD\nExNxaWFubml1LndhbnRvcGVyLm1lMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAuHz6s4Q4R5DcNV0d+1R6FiGJTfrb4LLN9VNEGOWfgG3ArnJz3gFzOLMU\nZp0BLT8b6HaY1IpV1ol4ViVd0sf/oWusGG3S5+qJw1DIdr+KB096lRwrIH64cyht\nPdtPEjY+f8PU2BBGO6qbH9qrXiGABYir0wFIvP8/17YCxmc1qcCL8r7UvJ58ZiFw\n0jw3qgxkGebPfKGAasD2irGKWf3qtHp/U9OLRTQ+vh7Vp+l5tUMLE+3nrLcj0nZM\n2GMDARjrydPMY0H53RbVkpfdEDciH1NiJMYZ1nOySAnKnE8w4Ah/+VQCamEUkmUi\nL8bor2tFkX6jE7F1JzdkL+4mGmPyaQIDAQABo4ICITCCAh0wDgYDVR0PAQH/BAQD\nAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAA\nMB0GA1UdDgQWBBSoKVx8BE4dXkNxwpF+m6e4BN/3yTAfBgNVHSMEGDAWgBS7vMNH\npeS8qcbDpHIMEI2iNeHI6DAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAKGF2h0\ndHA6Ly9yMTAuaS5sZW5jci5vcmcvMB4GA1UdEQQXMBWCE3FpYW5uaXUud2FudG9w\nZXIubWUwEwYDVR0gBAwwCjAIBgZngQwBAgEwLgYDVR0fBCcwJTAjoCGgH4YdaHR0\ncDovL3IxMC5jLmxlbmNyLm9yZy82NS5jcmwwggECBgorBgEEAdZ5AgQCBIHzBIHw\nAO4AdQDtPEvW6AbCpKIAV9vLJOI4Ad9RL+3EhsVwDyDdtz4/4AAAAZbwiyI8AAAE\nAwBGMEQCIC+TpGUBZaC5oRkWi4j3zwk3fDLWJ9xX+BGv2x136zloAiBWANxlia2I\np7ILDHI8PikI4hnEnxK53seyylleexYccQB1AMz7D2qFcQll/pWbU87psnwi6YVc\nDZeNtql+VMD+TA2wAAABlvCLIl0AAAQDAEYwRAIgIzYfFQEsW7F6cKkR2djfkDih\nyCC6L9U7oWcQFw28dxICIFnz/I8+eWs8894oz8D6JogVsP5W4w9yidkQ3C9Pzcoj\nMA0GCSqGSIb3DQEBCwUAA4IBAQBKVpDe0xZCFGJ0pX4vEdnBgaoBt8As8QAG3VCA\nuVzR2baqvRd5XNFph6mBAu5AdRgrMLhhrlIPLMqMXDpV0bdG5zzILJ7Xv6xjZE55\n9bfdTRt0hSDqD///6F4cy4STF9JJ3iJ0bkqfu9k0k4iBixqhYY0OYeIF70Zocyy9\n01BwvWdsIFz2OyVPihsdXNOwR+szAlkoyN578cFVavlOQVyAJte114gMi3++JkBd\n1e1zSbWMhaOzoQC/VSRuye+9WW66T706APTyPKHWK0NkPnv+VqIIO2Z5rBtomRxz\n/EK9ZM4IZZf19ybCaCYnScD01QCGMjE2ERCtanN8l3tZClSb\n-----END CERTIFICATE-----\n\n-----BEGIN CERTIFICATE-----\nMIIFBTCCAu2gAwIBAgIQS6hSk/eaL6JzBkuoBI110DANBgkqhkiG9w0BAQsFADBP\nMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy\nY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa\nFw0yNzAzMTIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF\nbmNyeXB0MQwwCgYDVQQDEwNSMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\nAoIBAQDPV+XmxFQS7bRH/sknWHZGUCiMHT6I3wWd1bUYKb3dtVq/+vbOo76vACFL\nYlpaPAEvxVgD9on/jhFD68G14BQHlo9vH9fnuoE5CXVlt8KvGFs3Jijno/QHK20a\n/6tYvJWuQP/py1fEtVt/eA0YYbwX51TGu0mRzW4Y0YCF7qZlNrx06rxQTOr8IfM4\nFpOUurDTazgGzRYSespSdcitdrLCnF2YRVxvYXvGLe48E1KGAdlX5jgc3421H5KR\nmudKHMxFqHJV8LDmowfs/acbZp4/SItxhHFYyTr6717yW0QrPHTnj7JHwQdqzZq3\nDZb3EoEmUVQK7GH29/Xi8orIlQ2NAgMBAAGjgfgwgfUwDgYDVR0PAQH/BAQDAgGG\nMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/\nAgEAMB0GA1UdDgQWBBS7vMNHpeS8qcbDpHIMEI2iNeHI6DAfBgNVHSMEGDAWgBR5\ntFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKG\nFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0gBAwwCjAIBgZngQwBAgEwJwYD\nVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVuY3Iub3JnLzANBgkqhkiG9w0B\nAQsFAAOCAgEAkrHnQTfreZ2B5s3iJeE6IOmQRJWjgVzPw139vaBw1bGWKCIL0vIo\nzwzn1OZDjCQiHcFCktEJr59L9MhwTyAWsVrdAfYf+B9haxQnsHKNY67u4s5Lzzfd\nu6PUzeetUK29v+PsPmI2cJkxp+iN3epi4hKu9ZzUPSwMqtCceb7qPVxEbpYxY1p9\n1n5PJKBLBX9eb9LU6l8zSxPWV7bK3lG4XaMJgnT9x3ies7msFtpKK5bDtotij/l0\nGaKeA97pb5uwD9KgWvaFXMIEt8jVTjLEvwRdvCn294GPDF08U8lAkIv7tghluaQh\n1QnlE4SEN4LOECj8dsIGJXpGUk3aU3KkJz9icKy+aUgA+2cP21uh6NcDIS3XyfaZ\nQjmDQ993ChII8SXWupQZVBiIpcWO4RqZk3lr7Bz5MUCwzDIA359e57SSq5CCkY0N\n4B6Vulk7LktfwrdGNVI5BsC9qqxSwSKgRJeZ9wygIaehbHFHFhcBaMDKpiZlBHyz\nrsnnlFXCb5s8HKn5LsUgGvB24L7sGNZP2CX7dhHov+YhD+jozLW2p9W4959Bz2Ei\nRmqDtmiXLnzqTpXbI+suyCsohKRg6Un0RC47+cpiVwHiXZAW+cn8eiNIjqbVgXLx\nKPpdzvvtTnOPlC7SQZSYmdunr3Bf9b77AiC/ZidstK36dRILKz7OA54=\n-----END CERTIFICATE-----\n", + "key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAmdGdFAEM+w2XNA+y3CkmutFOLM1p1G+xHF9VIxdlkzAMVHPf\nD2V9T8znDWjlcE1cQQEwPAHrAeb7+QqxDI1neJNmAw4XUjldPLjXBSaKkrFlUy/f\ncecUXzqQXoXZHbV4KxnT3C2t9WEP589w0fea93g7xWdJUJsd/obeNwwalh/pYhqg\nJLNR8V0yKRoqF7eOxcYr5CFGdTXyFCAzWtBTuIBLy79zrmTXzUj56Xjx6dT958Sg\nOnO3kY2Jp+BhNQ3zsZNNkp2tVRzR66/qA2t+Vdw91PpT3pUmdbLSdGUPk0W9JDtp\nzss0XJ37gyZ6cwv6RVxVZMS1GkOaAaHMmdB+uwIDAQABAoIBAEcDyIKAza5mouVN\nTiVo9lGP6oiyuWZzvpA7z0GpPqMKrtaavGQOViFul0nQoQUNIkd8tfkuZYJ2UuSy\ns/T4n8nCO3mzmr7CbzJmoBbnqVh6gC48zut2ZShmEFsjbo7Rxk4X2YEwsby0+DPs\nyMiXiTsxjl7gBbAqPVnSiGtfsjKWh9ifHXdvNn9LHiUxymFYZupetRvkjsu2fD4i\n8A2x4+N0LuzFnelqSiOcAZwD/8zNJ30jg64geZOn8r1VH8uUpp3b5mwqBvXeQMds\n0NRKALZRH9Zhjq7+TkRF2F6fttlZc+AWOA8wdtoXSixeEg0U1dYe+p8adscbdLtL\nyGmGwwECgYEAyS5vAdBvQNa779ci2zGsFvEQKV/F/BaweEFS+lZioUabrnZX7pvs\nX/491nJ9w+XPc1DGuI5JqB0sRODl5ZoAe2ZlIAMZj5JVy+PCqxVgDJk+kv+mHqPw\ngQ0qoHdZYAa+5NbyBXSmKkkkgcxbE+PI33sypYsOgHSsvtsXE8QhBDsCgYEAw7td\nqNDjc/Kn2Kq4jsKNqVZXxvs8AUG34KbAv/Q+TYmxWwSQl2o944qpY3IPbZnHdAOH\nELxu5n6YohTG8lsx3ed5LC5SjTDvmKkGWNYK7ZwCV3kEiBK1QKj6NVFszcmYOLvv\n2X06N24UoNkvktV/IpUfkeX4hdc+ebEtUzvzR4ECgYEAvVKvMHvgVpo93mUM7k3+\nbtCIrwbsIGGRzHldByzIQJFb7IB+G5Qsi+GMfATeib34zcJUYFW2xzg88szaTIny\nri4cOFXydgP2LZu3FJ1W+EQ2eMuQnwEUUb38QWpPd2ihuGT2+V9fCCgw7N1NUJhp\n7rXXYaZNDWG/NxSi0P0fPQUCgYABPUt/iSsXjd7QOWyHwuWgv+I4aVjc7Syb6JJp\n5MMMPKX53JKJ0utnaHZgIdXFLOcdbfRJ/9d38C9JP3ZvDHLJY/DZfcWaDUhHIDLh\nFyHklUtSgHqt3eh161wCQGy+9NrY6R/AsdFPjovk5NsvQ9jVQDp98wXa2x0TKjMO\nRt/ogQKBgF3+3MoAiwAAVp9E9FdgdJMu1IC4PosyKCWiF3meUZP6mrRkc7hM3P3U\nTD0vqJ6N0xm/czA/DgQ105GK5s/ccJwB4JrX531Eiz8aybou5eQp0A/pMbokco7Z\nShMnOPs1MI2Lly8rQsD62Mc1twg+yrFiobu+lu7yNOGHT6vDd31o\n-----END RSA PRIVATE KEY-----\n", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFBjCCA+6gAwIBAgISBYv494Gaq0RQHIs7aB7x8SvrMA0GCSqGSIb3DQEBCwUA\nMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD\nEwNSMTEwHhcNMjUwNjE5MDIwMTAxWhcNMjUwOTE3MDIwMTAwWjAfMR0wGwYDVQQD\nExR4aWFuZ3Fpbi43Nzk5NTIwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAJnRnRQBDPsNlzQPstwpJrrRTizNadRvsRxfVSMXZZMwDFRz3w9lfU/M\n5w1o5XBNXEEBMDwB6wHm+/kKsQyNZ3iTZgMOF1I5XTy41wUmipKxZVMv33HnFF86\nkF6F2R21eCsZ09wtrfVhD+fPcNH3mvd4O8VnSVCbHf6G3jcMGpYf6WIaoCSzUfFd\nMikaKhe3jsXGK+QhRnU18hQgM1rQU7iAS8u/c65k181I+el48enU/efEoDpzt5GN\niafgYTUN87GTTZKdrVUc0euv6gNrflXcPdT6U96VJnWy0nRlD5NFvSQ7ac7LNFyd\n+4MmenML+kVcVWTEtRpDmgGhzJnQfrsCAwEAAaOCAiYwggIiMA4GA1UdDwEB/wQE\nAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIw\nADAdBgNVHQ4EFgQUUQbZ8GBo/oRpaIavLSGH9etsPkAwHwYDVR0jBBgwFoAUxc9G\npOr0w8B6bJXELbBeki8m47kwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzAChhdo\ndHRwOi8vcjExLmkubGVuY3Iub3JnLzAfBgNVHREEGDAWghR4aWFuZ3Fpbi43Nzk5\nNTIwLmNvbTATBgNVHSAEDDAKMAgGBmeBDAECATAvBgNVHR8EKDAmMCSgIqAghh5o\ndHRwOi8vcjExLmMubGVuY3Iub3JnLzEwOC5jcmwwggEFBgorBgEEAdZ5AgQCBIH2\nBIHzAPEAdwDd3Mo0ldfhFgXnlTL6x5/4PRxQ39sAOhQSdgosrLvIKgAAAZeGIJaX\nAAAEAwBIMEYCIQClkE0v+L8IXwqUvoty9HhLLKmjnfnHIBwGlZXti8P0ywIhAL8e\nRjsG1Lfz0c+gJ5MBrb4AaFuBzjpoivvh8G4cG2gAAHYAzPsPaoVxCWX+lZtTzumy\nfCLphVwNl422qX5UwP5MDbAAAAGXhiCepwAABAMARzBFAiEArk+Yu3MAs7bHnrDA\nhl3KvOQnTrZHmx6idubPKnTMUWACIH1Q3IA/EnNlf8cP8Jb69tCce/2i+u6qbsJr\n1ucZqZ7HMA0GCSqGSIb3DQEBCwUAA4IBAQA7PRrre6dv5rCNQ4z9waDcce9wXWZw\nJXzE+AE/OZ2crl8Pb2AWvFukN1w9yR9K5tMTZC/gGcFD1knzTAy2mAJn2GNgNMdE\n9LV4T2GA9H2r/NLRcNM9vE4D0M0UTWRxyJeqNAx0MNXqh5yvbE+3smxhiF190WIK\nt4Dmsk3U4RpilQ3aqK/mqdfCvOlvrDJuFD6I3+sG1Jjb9xtsM8+g/Dqx2iCeMwpH\ngLUbq9EpDf9gLXjYgELFeUdCirKR/eWEP3pxnJjEf2Gnisyy/gxNAhz/7Breb217\nKCW8PqoTgmjVNvQcUL5BKG0L1vB0JQ7Aq+osdXU5xKD1fNKuLWu/nghF\n-----END CERTIFICATE-----\n\n-----BEGIN CERTIFICATE-----\nMIIFBjCCAu6gAwIBAgIRAIp9PhPWLzDvI4a9KQdrNPgwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw\nWhcNMjcwMzEyMjM1OTU5WjAzMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\nRW5jcnlwdDEMMAoGA1UEAxMDUjExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAuoe8XBsAOcvKCs3UZxD5ATylTqVhyybKUvsVAbe5KPUoHu0nsyQYOWcJ\nDAjs4DqwO3cOvfPlOVRBDE6uQdaZdN5R2+97/1i9qLcT9t4x1fJyyXJqC4N0lZxG\nAGQUmfOx2SLZzaiSqhwmej/+71gFewiVgdtxD4774zEJuwm+UE1fj5F2PVqdnoPy\n6cRms+EGZkNIGIBloDcYmpuEMpexsr3E+BUAnSeI++JjF5ZsmydnS8TbKF5pwnnw\nSVzgJFDhxLyhBax7QG0AtMJBP6dYuC/FXJuluwme8f7rsIU5/agK70XEeOtlKsLP\nXzze41xNG/cLJyuqC0J3U095ah2H2QIDAQABo4H4MIH1MA4GA1UdDwEB/wQEAwIB\nhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwEgYDVR0TAQH/BAgwBgEB\n/wIBADAdBgNVHQ4EFgQUxc9GpOr0w8B6bJXELbBeki8m47kwHwYDVR0jBBgwFoAU\nebRZ5nu25eQBc4AIiMgaWPbpm24wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAC\nhhZodHRwOi8veDEuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcG\nA1UdHwQgMB4wHKAaoBiGFmh0dHA6Ly94MS5jLmxlbmNyLm9yZy8wDQYJKoZIhvcN\nAQELBQADggIBAE7iiV0KAxyQOND1H/lxXPjDj7I3iHpvsCUf7b632IYGjukJhM1y\nv4Hz/MrPU0jtvfZpQtSlET41yBOykh0FX+ou1Nj4ScOt9ZmWnO8m2OG0JAtIIE38\n01S0qcYhyOE2G/93ZCkXufBL713qzXnQv5C/viOykNpKqUgxdKlEC+Hi9i2DcaR1\ne9KUwQUZRhy5j/PEdEglKg3l9dtD4tuTm7kZtB8v32oOjzHTYw+7KdzdZiw/sBtn\nUfhBPORNuay4pJxmY/WrhSMdzFO2q3Gu3MUBcdo27goYKjL9CTF8j/Zz55yctUoV\naneCWs/ajUX+HypkBTA+c8LGDLnWO2NKq0YD/pnARkAnYGPfUDoHR9gVSp/qRx+Z\nWghiDLZsMwhN1zjtSC0uBWiugF3vTNzYIEFfaPG7Ws3jDrAMMYebQ95JQ+HIBD/R\nPBuHRTBpqKlyDnkSHDHYPiNX3adPoPAcgdF3H2/W0rmoswMWgTlLn1Wu0mrks7/q\npdWfS6PJ1jty80r2VKsM/Dj3YIDfbjXKdaFU5C+8bhfJGqU3taKauuz0wHVGT3eo\n6FlWkWYtbt4pgdamlwVeZEW+LM7qZEJEsMNPrfC03APKmZsJgpWCDWOKZvkZcvjV\nuYkQ4omYCTX5ohy+knMjdOmdH9c7SpqEWBDC86fiNex+O0XOMEZSa8DA\n-----END CERTIFICATE-----\n\n\n-----BEGIN CERTIFICATE-----\nMIIFBjCCAu6gAwIBAgIRAIp9PhPWLzDvI4a9KQdrNPgwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw\nWhcNMjcwMzEyMjM1OTU5WjAzMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\nRW5jcnlwdDEMMAoGA1UEAxMDUjExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAuoe8XBsAOcvKCs3UZxD5ATylTqVhyybKUvsVAbe5KPUoHu0nsyQYOWcJ\nDAjs4DqwO3cOvfPlOVRBDE6uQdaZdN5R2+97/1i9qLcT9t4x1fJyyXJqC4N0lZxG\nAGQUmfOx2SLZzaiSqhwmej/+71gFewiVgdtxD4774zEJuwm+UE1fj5F2PVqdnoPy\n6cRms+EGZkNIGIBloDcYmpuEMpexsr3E+BUAnSeI++JjF5ZsmydnS8TbKF5pwnnw\nSVzgJFDhxLyhBax7QG0AtMJBP6dYuC/FXJuluwme8f7rsIU5/agK70XEeOtlKsLP\nXzze41xNG/cLJyuqC0J3U095ah2H2QIDAQABo4H4MIH1MA4GA1UdDwEB/wQEAwIB\nhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwEgYDVR0TAQH/BAgwBgEB\n/wIBADAdBgNVHQ4EFgQUxc9GpOr0w8B6bJXELbBeki8m47kwHwYDVR0jBBgwFoAU\nebRZ5nu25eQBc4AIiMgaWPbpm24wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAC\nhhZodHRwOi8veDEuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcG\nA1UdHwQgMB4wHKAaoBiGFmh0dHA6Ly94MS5jLmxlbmNyLm9yZy8wDQYJKoZIhvcN\nAQELBQADggIBAE7iiV0KAxyQOND1H/lxXPjDj7I3iHpvsCUf7b632IYGjukJhM1y\nv4Hz/MrPU0jtvfZpQtSlET41yBOykh0FX+ou1Nj4ScOt9ZmWnO8m2OG0JAtIIE38\n01S0qcYhyOE2G/93ZCkXufBL713qzXnQv5C/viOykNpKqUgxdKlEC+Hi9i2DcaR1\ne9KUwQUZRhy5j/PEdEglKg3l9dtD4tuTm7kZtB8v32oOjzHTYw+7KdzdZiw/sBtn\nUfhBPORNuay4pJxmY/WrhSMdzFO2q3Gu3MUBcdo27goYKjL9CTF8j/Zz55yctUoV\naneCWs/ajUX+HypkBTA+c8LGDLnWO2NKq0YD/pnARkAnYGPfUDoHR9gVSp/qRx+Z\nWghiDLZsMwhN1zjtSC0uBWiugF3vTNzYIEFfaPG7Ws3jDrAMMYebQ95JQ+HIBD/R\nPBuHRTBpqKlyDnkSHDHYPiNX3adPoPAcgdF3H2/W0rmoswMWgTlLn1Wu0mrks7/q\npdWfS6PJ1jty80r2VKsM/Dj3YIDfbjXKdaFU5C+8bhfJGqU3taKauuz0wHVGT3eo\n6FlWkWYtbt4pgdamlwVeZEW+LM7qZEJEsMNPrfC03APKmZsJgpWCDWOKZvkZcvjV\nuYkQ4omYCTX5ohy+knMjdOmdH9c7SpqEWBDC86fiNex+O0XOMEZSa8DA\n-----END CERTIFICATE-----\n", }, } err := DeployQiniuOss(cfg) @@ -57,4 +76,4 @@ func TestQiniuAPITest(t *testing.T) { } else { t.Log("SSHAPITest success") } -} \ No newline at end of file +}