first commit
This commit is contained in:
BIN
de.webproxy
Executable file
BIN
de.webproxy
Executable file
Binary file not shown.
23
demo.crt
Normal file
23
demo.crt
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIID3TCCAsWgAwIBAgIUNs/bkWG+0hoVIpnfHEAFvyiPQAIwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwfjELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0dlcm1hbnkxFzAVBgNVBAcMDkhh
|
||||||
|
bHRlcm4gQW0gU2VlMRAwDgYDVQQKDAdKYWtvYnVzMRIwEAYDVQQDDAlyaXNjaC5k
|
||||||
|
ZXYxHjAcBgkqhkiG9w0BCQEWD2pha29iQHJpc2NoLmRldjAeFw0yNTExMTUxNjAy
|
||||||
|
NTlaFw0zNTExMTMxNjAyNTlaMH4xCzAJBgNVBAYTAkRFMRAwDgYDVQQIDAdHZXJt
|
||||||
|
YW55MRcwFQYDVQQHDA5IYWx0ZXJuIEFtIFNlZTEQMA4GA1UECgwHSmFrb2J1czES
|
||||||
|
MBAGA1UEAwwJcmlzY2guZGV2MR4wHAYJKoZIhvcNAQkBFg9qYWtvYkByaXNjaC5k
|
||||||
|
ZXYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz4AUvRbxSWud+NKLW
|
||||||
|
ZOG3W8BZrg1n5kEWjKnQ1fqFD/4aloHUMS3eCkg3gbOfVXQMMcPxkGeE8ewi3/Y1
|
||||||
|
69mXI2EXu2JOBLmA4egcB5RJv8ROO5jSd4B/DmZVT95w3QEvUagKEJ8riHLO6hum
|
||||||
|
rXtDUZxmTwgOjNGGi90t1eQA/POm7epTfaOvyIAgG+iUde5qDEkA2fdjDhYnf4kG
|
||||||
|
iTiobyaVtT3L5XmYrfrKkcpZL/sPT7EL/K8DR2s51d1vo9iK7as6bn0rQzRMlj9A
|
||||||
|
TqpUlJPiuR4noNHd0/4Vqm+k9e1mA2QT2qbSKJW/twGtOzhSjNr9c+KqD8IfmTdD
|
||||||
|
djZ/AgMBAAGjUzBRMB0GA1UdDgQWBBTENgOWRTm0w7oRqgRKlWVLhBHAZDAfBgNV
|
||||||
|
HSMEGDAWgBTENgOWRTm0w7oRqgRKlWVLhBHAZDAPBgNVHRMBAf8EBTADAQH/MA0G
|
||||||
|
CSqGSIb3DQEBCwUAA4IBAQARccbOzDTd8Rlc3LNU4LlXhBvFio5Nd/+9/gnDpYaV
|
||||||
|
z12Ym+aHslfveu2wqyLTOKrXyORijaxCL9QN88o48sYWMx7Z2DBrgpbH7KqZOdLK
|
||||||
|
WnQ1mZGrfd5Ts3uzqNW6ZG0ewhzX1JGHHxX1u0lRsR6kGTeSQcxcXkqVEklQnAcO
|
||||||
|
NzJYsfV7hegKDJiQEsquvNxjiS7PgFm+Ee+zPNe7JZedfAKTMSxNSk80c8xN2Tm3
|
||||||
|
qaz76FakgMUf6mvvdR7bXiF8Efxz7RgkJxlGEEtzs9fOYYcViTdGmARPv/DHWg9d
|
||||||
|
XxhL7WbR4XCeESk5WVRou00+p/o62HpIhspYzWhFWTJS
|
||||||
|
-----END CERTIFICATE-----
|
||||||
28
demo.key
Normal file
28
demo.key
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCz4AUvRbxSWud+
|
||||||
|
NKLWZOG3W8BZrg1n5kEWjKnQ1fqFD/4aloHUMS3eCkg3gbOfVXQMMcPxkGeE8ewi
|
||||||
|
3/Y169mXI2EXu2JOBLmA4egcB5RJv8ROO5jSd4B/DmZVT95w3QEvUagKEJ8riHLO
|
||||||
|
6humrXtDUZxmTwgOjNGGi90t1eQA/POm7epTfaOvyIAgG+iUde5qDEkA2fdjDhYn
|
||||||
|
f4kGiTiobyaVtT3L5XmYrfrKkcpZL/sPT7EL/K8DR2s51d1vo9iK7as6bn0rQzRM
|
||||||
|
lj9ATqpUlJPiuR4noNHd0/4Vqm+k9e1mA2QT2qbSKJW/twGtOzhSjNr9c+KqD8If
|
||||||
|
mTdDdjZ/AgMBAAECggEAGsHJaPxJz223/4VAmdLSOW57wPthVszLbtlyzglz5YT5
|
||||||
|
ACcrszmzldLYEPBex2YJ8rcZFjSBvvwma75UB4uzckZFhFG6sFoHPDLz+O4Zsr9v
|
||||||
|
f1G3NyD8ANUkB4RvgEDSkyGQSnBUNRYW5KJc2vZLHpBOdcZDhQ0718oIwe+OJfqQ
|
||||||
|
NP6+jzOZaimdxsvY7EmmW71YlMlChTSf1VbSYTuc4DLDtMmhRBdQeACuPbiAFqNO
|
||||||
|
qpaEO4mZ6E9UnZw79TKepL/0viBnqZB0AavPdp88Feg8euwu/z7mGji45etq7c7L
|
||||||
|
QZNjuaMUnh3T+miRjgJjWOxk/QSdqwSjdZzDIx9mSQKBgQDf59T/QJqm25ESD0AH
|
||||||
|
ck9HlMPsDCZiMru+o+rIqCu4TmiV/fcA869JHeYNDYQR7jPqaL6Uxfx2EvddeyVj
|
||||||
|
rxR+eAnW6ycqsfNsbNAF13qZdYsPNhLOfBVbIcIt9p+H088U2sQ7lWml+Q+SXz7p
|
||||||
|
7uPHOYu7IIhuRP/pmyN/r7sepwKBgQDNqH9121/Ktcol5ez3+KZ1HRNGfwBpAOta
|
||||||
|
8RsHPeDEAW9zzVoXUXjIMvCN9re1Neq0MGuZWKUn3jNT49v8YvFQGluyFSLV7zNs
|
||||||
|
RwyXieNp3ZJCU1LP9ElWZbBjC0qfuoX17on8Uf01oiEPK398W/zoMI/F5mjq/Pch
|
||||||
|
uhJXC6y8aQKBgQCkMiKkvP+sdT/BeqV90HoLCDFVHOPZB1Nezl4SoCDPm9Bejktg
|
||||||
|
y1Mzz1UxJURA0eoIcJ+yAi7Nd8MnLnOQ0oe45tZwYSnryWu1i2ZRol8pwmUj1oec
|
||||||
|
HKqclfkMM9txhAZMSNG20C8Vo7ujn21HqAQpyS2LIKRsGPWCnl49+OTD6QKBgG2f
|
||||||
|
4cF7HIa7fHPTKgvMWT6YLwwm6psOSGaDmvqzOzp/4V8DGYDQhueAb8Xcu3Q2t1Mx
|
||||||
|
dEmbfP3Rbd7L2RmhzCv8wOAecCFFjk2rWcT1VWm7GBmOvNfoyabqMam5/R9Dl+DO
|
||||||
|
NHNxaN3L/H9Pmnc5uYgzSpAdD9Qi38D0pI4NxRfxAoGAIv7GlbBktH/EvlxeZ8dX
|
||||||
|
RCl5iyHJ8ke6mXaG4cNceoWy8pGw1GquJmnW1jZK3mCtTQ0kE0z89VyKreMcB8Gh
|
||||||
|
AS2DqwJ2MY3z7m9RXqreLQuzeTHQPOU6GcP9V+m88OT6IoeoraHMuzawp/C5hack
|
||||||
|
tOyj0B3anEXqdaXYgenMoPw=
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
10
go.mod
Normal file
10
go.mod
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
module de.webproxy
|
||||||
|
|
||||||
|
go 1.25.4
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/AdguardTeam/golibs v0.4.0 // indirect
|
||||||
|
github.com/AdguardTeam/gomitmproxy v0.2.1 // indirect
|
||||||
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
golang.org/x/text v0.3.2 // indirect
|
||||||
|
)
|
||||||
23
go.sum
Normal file
23
go.sum
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
github.com/AdguardTeam/golibs v0.4.0 h1:4VX6LoOqFe9p9Gf55BeD8BvJD6M6RDYmgEiHrENE9KU=
|
||||||
|
github.com/AdguardTeam/golibs v0.4.0/go.mod h1:skKsDKIBB7kkFflLJBpfGX+G8QFTx0WKUzB6TIgtUj4=
|
||||||
|
github.com/AdguardTeam/gomitmproxy v0.2.1 h1:p9gr8Er1TYvf+7ic81Ax1sZ62UNCsMTZNbm7tC59S9o=
|
||||||
|
github.com/AdguardTeam/gomitmproxy v0.2.1/go.mod h1:Qdv0Mktnzer5zpdpi5rAwixNJzW2FN91LjKJCkVbYGU=
|
||||||
|
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
|
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||||
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
|
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
||||||
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
183
main.go
Normal file
183
main.go
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"crypto/rsa"
|
||||||
|
"crypto/tls"
|
||||||
|
"crypto/x509"
|
||||||
|
"io"
|
||||||
|
"net"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"os/signal"
|
||||||
|
"strings"
|
||||||
|
"syscall"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/AdguardTeam/golibs/log"
|
||||||
|
"github.com/AdguardTeam/gomitmproxy"
|
||||||
|
"github.com/AdguardTeam/gomitmproxy/mitm"
|
||||||
|
"github.com/AdguardTeam/gomitmproxy/proxyutil"
|
||||||
|
|
||||||
|
_ "net/http/pprof"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
log.SetLevel(log.DEBUG)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
log.Println(http.ListenAndServe("localhost:6060", nil))
|
||||||
|
}()
|
||||||
|
|
||||||
|
// Read the MITM cert and key.
|
||||||
|
tlsCert, err := tls.LoadX509KeyPair("demo.crt", "demo.key")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
privateKey := tlsCert.PrivateKey.(*rsa.PrivateKey)
|
||||||
|
|
||||||
|
x509c, err := x509.ParseCertificate(tlsCert.Certificate[0])
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
mitmConfig, err := mitm.NewConfig(x509c, privateKey, &CustomCertsStorage{
|
||||||
|
certsCache: map[string]*tls.Certificate{}},
|
||||||
|
)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate certs valid for 7 days.
|
||||||
|
mitmConfig.SetValidity(time.Hour * 24 * 7)
|
||||||
|
// Set certs organization.
|
||||||
|
mitmConfig.SetOrganization("Jakobus")
|
||||||
|
|
||||||
|
// Generate a cert-key pair for the HTTP-over-TLS proxy.
|
||||||
|
/*proxyCert, err := mitmConfig.GetOrCreateCert("127.0.0.1")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
/*tlsConfig := &tls.Config{
|
||||||
|
Certificates: []tls.Certificate{*proxyCert},
|
||||||
|
}*/
|
||||||
|
|
||||||
|
// Prepare the proxy.
|
||||||
|
addr := &net.TCPAddr{
|
||||||
|
IP: net.IPv4(0, 0, 0, 0),
|
||||||
|
Port: 3333,
|
||||||
|
}
|
||||||
|
|
||||||
|
proxy := gomitmproxy.NewProxy(gomitmproxy.Config{
|
||||||
|
ListenAddr: addr,
|
||||||
|
|
||||||
|
MITMConfig: mitmConfig,
|
||||||
|
MITMExceptions: []string{"example.com"},
|
||||||
|
|
||||||
|
OnRequest: onRequest,
|
||||||
|
OnResponse: onResponse,
|
||||||
|
OnConnect: onConnect,
|
||||||
|
})
|
||||||
|
|
||||||
|
err = proxy.Start()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
signalChannel := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(signalChannel, syscall.SIGINT, syscall.SIGTERM)
|
||||||
|
<-signalChannel
|
||||||
|
|
||||||
|
// Stop the proxy.
|
||||||
|
proxy.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
func onRequest(session *gomitmproxy.Session) (*http.Request, *http.Response) {
|
||||||
|
req := session.Request()
|
||||||
|
|
||||||
|
log.Printf("onRequest: %s %s", req.Method, req.URL.String())
|
||||||
|
|
||||||
|
if req.URL.Host == "testgomitmproxy" {
|
||||||
|
body := strings.NewReader("<html><body><h1>Served by gomitmproxy</h1></body></html>")
|
||||||
|
res := proxyutil.NewResponse(http.StatusOK, body, req)
|
||||||
|
res.Header.Set("Content-Type", "text/html")
|
||||||
|
return nil, res
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, req.Response
|
||||||
|
}
|
||||||
|
|
||||||
|
func onResponse(session *gomitmproxy.Session) *http.Response {
|
||||||
|
log.Printf("onResponse: %s", session.Request().URL.String())
|
||||||
|
|
||||||
|
if _, ok := session.GetProp("blocked"); ok {
|
||||||
|
log.Printf("onResponse: was blocked")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
res := session.Response()
|
||||||
|
req := session.Request()
|
||||||
|
|
||||||
|
if strings.Index(res.Header.Get("Content-Type"), "text/html") != 0 {
|
||||||
|
// Do nothing with non-HTML responses
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := proxyutil.ReadDecompressedBody(res)
|
||||||
|
// Close the original body.
|
||||||
|
_ = res.Body.Close()
|
||||||
|
if err != nil {
|
||||||
|
return proxyutil.NewErrorResponse(req, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use latin1 before modifying the body. Using this 1-byte encoding will
|
||||||
|
// let us preserve all original characters regardless of what exactly is
|
||||||
|
// the encoding.
|
||||||
|
body, err := proxyutil.DecodeLatin1(bytes.NewReader(b))
|
||||||
|
if err != nil {
|
||||||
|
return proxyutil.NewErrorResponse(session.Request(), err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modifying the original body.
|
||||||
|
modifiedBody, err := proxyutil.EncodeLatin1(body + "")
|
||||||
|
if err != nil {
|
||||||
|
return proxyutil.NewErrorResponse(session.Request(), err)
|
||||||
|
}
|
||||||
|
println("Modified body123:" + string(modifiedBody))
|
||||||
|
|
||||||
|
res.Body = io.NopCloser(bytes.NewReader(modifiedBody))
|
||||||
|
res.Header.Del("Content-Encoding")
|
||||||
|
res.ContentLength = int64(len(modifiedBody))
|
||||||
|
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func onConnect(_ *gomitmproxy.Session, _ string, addr string) (conn net.Conn) {
|
||||||
|
host, _, err := net.SplitHostPort(addr)
|
||||||
|
|
||||||
|
if err == nil && host == "testgomitmproxy" {
|
||||||
|
// Don't let it connecting there, we'll serve it by ourselves.
|
||||||
|
return &proxyutil.NoopConn{}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// CustomCertsStorage is an example of a custom cert storage.
|
||||||
|
type CustomCertsStorage struct {
|
||||||
|
// certsCache is a cache with the generated certificates.
|
||||||
|
certsCache map[string]*tls.Certificate
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get gets the certificate from the storage.
|
||||||
|
func (c *CustomCertsStorage) Get(key string) (cert *tls.Certificate, ok bool) {
|
||||||
|
cert, ok = c.certsCache[key]
|
||||||
|
|
||||||
|
return cert, ok
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set saves the certificate to the storage.
|
||||||
|
func (c *CustomCertsStorage) Set(key string, cert *tls.Certificate) {
|
||||||
|
c.certsCache[key] = cert
|
||||||
|
}
|
||||||
51
server.pem
Normal file
51
server.pem
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIID3TCCAsWgAwIBAgIUNs/bkWG+0hoVIpnfHEAFvyiPQAIwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwfjELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0dlcm1hbnkxFzAVBgNVBAcMDkhh
|
||||||
|
bHRlcm4gQW0gU2VlMRAwDgYDVQQKDAdKYWtvYnVzMRIwEAYDVQQDDAlyaXNjaC5k
|
||||||
|
ZXYxHjAcBgkqhkiG9w0BCQEWD2pha29iQHJpc2NoLmRldjAeFw0yNTExMTUxNjAy
|
||||||
|
NTlaFw0zNTExMTMxNjAyNTlaMH4xCzAJBgNVBAYTAkRFMRAwDgYDVQQIDAdHZXJt
|
||||||
|
YW55MRcwFQYDVQQHDA5IYWx0ZXJuIEFtIFNlZTEQMA4GA1UECgwHSmFrb2J1czES
|
||||||
|
MBAGA1UEAwwJcmlzY2guZGV2MR4wHAYJKoZIhvcNAQkBFg9qYWtvYkByaXNjaC5k
|
||||||
|
ZXYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz4AUvRbxSWud+NKLW
|
||||||
|
ZOG3W8BZrg1n5kEWjKnQ1fqFD/4aloHUMS3eCkg3gbOfVXQMMcPxkGeE8ewi3/Y1
|
||||||
|
69mXI2EXu2JOBLmA4egcB5RJv8ROO5jSd4B/DmZVT95w3QEvUagKEJ8riHLO6hum
|
||||||
|
rXtDUZxmTwgOjNGGi90t1eQA/POm7epTfaOvyIAgG+iUde5qDEkA2fdjDhYnf4kG
|
||||||
|
iTiobyaVtT3L5XmYrfrKkcpZL/sPT7EL/K8DR2s51d1vo9iK7as6bn0rQzRMlj9A
|
||||||
|
TqpUlJPiuR4noNHd0/4Vqm+k9e1mA2QT2qbSKJW/twGtOzhSjNr9c+KqD8IfmTdD
|
||||||
|
djZ/AgMBAAGjUzBRMB0GA1UdDgQWBBTENgOWRTm0w7oRqgRKlWVLhBHAZDAfBgNV
|
||||||
|
HSMEGDAWgBTENgOWRTm0w7oRqgRKlWVLhBHAZDAPBgNVHRMBAf8EBTADAQH/MA0G
|
||||||
|
CSqGSIb3DQEBCwUAA4IBAQARccbOzDTd8Rlc3LNU4LlXhBvFio5Nd/+9/gnDpYaV
|
||||||
|
z12Ym+aHslfveu2wqyLTOKrXyORijaxCL9QN88o48sYWMx7Z2DBrgpbH7KqZOdLK
|
||||||
|
WnQ1mZGrfd5Ts3uzqNW6ZG0ewhzX1JGHHxX1u0lRsR6kGTeSQcxcXkqVEklQnAcO
|
||||||
|
NzJYsfV7hegKDJiQEsquvNxjiS7PgFm+Ee+zPNe7JZedfAKTMSxNSk80c8xN2Tm3
|
||||||
|
qaz76FakgMUf6mvvdR7bXiF8Efxz7RgkJxlGEEtzs9fOYYcViTdGmARPv/DHWg9d
|
||||||
|
XxhL7WbR4XCeESk5WVRou00+p/o62HpIhspYzWhFWTJS
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCz4AUvRbxSWud+
|
||||||
|
NKLWZOG3W8BZrg1n5kEWjKnQ1fqFD/4aloHUMS3eCkg3gbOfVXQMMcPxkGeE8ewi
|
||||||
|
3/Y169mXI2EXu2JOBLmA4egcB5RJv8ROO5jSd4B/DmZVT95w3QEvUagKEJ8riHLO
|
||||||
|
6humrXtDUZxmTwgOjNGGi90t1eQA/POm7epTfaOvyIAgG+iUde5qDEkA2fdjDhYn
|
||||||
|
f4kGiTiobyaVtT3L5XmYrfrKkcpZL/sPT7EL/K8DR2s51d1vo9iK7as6bn0rQzRM
|
||||||
|
lj9ATqpUlJPiuR4noNHd0/4Vqm+k9e1mA2QT2qbSKJW/twGtOzhSjNr9c+KqD8If
|
||||||
|
mTdDdjZ/AgMBAAECggEAGsHJaPxJz223/4VAmdLSOW57wPthVszLbtlyzglz5YT5
|
||||||
|
ACcrszmzldLYEPBex2YJ8rcZFjSBvvwma75UB4uzckZFhFG6sFoHPDLz+O4Zsr9v
|
||||||
|
f1G3NyD8ANUkB4RvgEDSkyGQSnBUNRYW5KJc2vZLHpBOdcZDhQ0718oIwe+OJfqQ
|
||||||
|
NP6+jzOZaimdxsvY7EmmW71YlMlChTSf1VbSYTuc4DLDtMmhRBdQeACuPbiAFqNO
|
||||||
|
qpaEO4mZ6E9UnZw79TKepL/0viBnqZB0AavPdp88Feg8euwu/z7mGji45etq7c7L
|
||||||
|
QZNjuaMUnh3T+miRjgJjWOxk/QSdqwSjdZzDIx9mSQKBgQDf59T/QJqm25ESD0AH
|
||||||
|
ck9HlMPsDCZiMru+o+rIqCu4TmiV/fcA869JHeYNDYQR7jPqaL6Uxfx2EvddeyVj
|
||||||
|
rxR+eAnW6ycqsfNsbNAF13qZdYsPNhLOfBVbIcIt9p+H088U2sQ7lWml+Q+SXz7p
|
||||||
|
7uPHOYu7IIhuRP/pmyN/r7sepwKBgQDNqH9121/Ktcol5ez3+KZ1HRNGfwBpAOta
|
||||||
|
8RsHPeDEAW9zzVoXUXjIMvCN9re1Neq0MGuZWKUn3jNT49v8YvFQGluyFSLV7zNs
|
||||||
|
RwyXieNp3ZJCU1LP9ElWZbBjC0qfuoX17on8Uf01oiEPK398W/zoMI/F5mjq/Pch
|
||||||
|
uhJXC6y8aQKBgQCkMiKkvP+sdT/BeqV90HoLCDFVHOPZB1Nezl4SoCDPm9Bejktg
|
||||||
|
y1Mzz1UxJURA0eoIcJ+yAi7Nd8MnLnOQ0oe45tZwYSnryWu1i2ZRol8pwmUj1oec
|
||||||
|
HKqclfkMM9txhAZMSNG20C8Vo7ujn21HqAQpyS2LIKRsGPWCnl49+OTD6QKBgG2f
|
||||||
|
4cF7HIa7fHPTKgvMWT6YLwwm6psOSGaDmvqzOzp/4V8DGYDQhueAb8Xcu3Q2t1Mx
|
||||||
|
dEmbfP3Rbd7L2RmhzCv8wOAecCFFjk2rWcT1VWm7GBmOvNfoyabqMam5/R9Dl+DO
|
||||||
|
NHNxaN3L/H9Pmnc5uYgzSpAdD9Qi38D0pI4NxRfxAoGAIv7GlbBktH/EvlxeZ8dX
|
||||||
|
RCl5iyHJ8ke6mXaG4cNceoWy8pGw1GquJmnW1jZK3mCtTQ0kE0z89VyKreMcB8Gh
|
||||||
|
AS2DqwJ2MY3z7m9RXqreLQuzeTHQPOU6GcP9V+m88OT6IoeoraHMuzawp/C5hack
|
||||||
|
tOyj0B3anEXqdaXYgenMoPw=
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
Reference in New Issue
Block a user