Created
August 7, 2015 13:06
-
-
Save rekby/348b0e2faac09ccb6477 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"crypto/x509" | |
"crypto/tls" | |
"fmt" | |
) | |
const rootCert = `-----BEGIN CERTIFICATE----- | |
MIIEMzCCAxugAwIBAgIBATANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJSVTEM | |
MAoGA1UECBMDdG1wMQwwCgYDVQQKEwN0bXAxDjAMBgNVBAMTBXRtcENBMCAXDTE1 | |
MDgwNzExMzMwMFoYDzIzODAwODA3MTEzMzAwWjA5MQswCQYDVQQGEwJSVTEMMAoG | |
A1UECBMDdG1wMQwwCgYDVQQKEwN0bXAxDjAMBgNVBAMTBXRtcENBMIIBIjANBgkq | |
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuOiU93evlvTLEoQSa2jxaYDGw7ZrRDu5 | |
OlUSwIrz6yQJxWTdvtbhsj2gKOfE9umNQTZrW5l+T+4FwXwuvKOaiM+RP2vqH1Ly | |
TKsAagpU/yv27k3DPP/vVCuoRs8lEDVSedcw+WAOEuIZEdf9o1VHT+KvFTSDp1As | |
pmwNEJ+oSIqI4LFuFWC3yDakU3tzmo/e6l1thnQvmBNhhZCClzRkKyEbM41QsZOQ | |
ZrEbD1LPjij9tFqgDn0lmwl/Pn4MGQNcDhMB+SBpEnDVR5RH8eBKDyLmaeFiuDru | |
d/IEOXPmet7ABuTiswVNbKWsOf8U/p585pTqSkgHEmOcoVFZEqMrbwIDAQABo4IB | |
QjCCAT4wDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMIHsBgNVHSUEgeQwgeEG | |
CCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcD | |
CAYKKwYBBAGCNwIBFQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoD | |
AwYKKwYBBAGCNwoDBAYJYIZIAYb4QgQBBgsrBgEEAYI3CgMEAQYIKwYBBQUHAwUG | |
CCsGAQUFBwMGBggrBgEFBQcDBwYIKwYBBQUIAgIGCisGAQQBgjcUAgIGCCsGAQUF | |
BwMJBggrBgEFBQcDDQYIKwYBBQUHAw4GBysGAQUCAwUwEQYJYIZIAYb4QgEBBAQD | |
AgD3MB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwDQYJKoZIhvcNAQEF | |
BQADggEBAB6ob12Jyy/8O+wb6tisnIMiuDK2xKqraOGydQCOq/za9gwJNu5MC5yi | |
FOu//dhWQCu7JgeAudm8LJl+jFCTIigCbad3qDU0Or4AlRRnIVaz2BikXvD3NXa+ | |
o9iSZwc2LGVzeYyFBHKmVtNhHLaHkNpSlJKqzGzM51cYjwAfwsQeluzy3qusFMtY | |
LFxKDp+CjzU2ghhImHbaABrLNLjp14z/OTPSSr65oVP4C66Ib600nKhSVKY0srB9 | |
/kXAm2pZyczQYpPsY/p3W1/ch8ry7fXR7Iw/eUhZ5SACyNQEim9YEr907rFl0gdS | |
ODCONcjoYXoXuoK7J3mvYoNgB+WOPco= | |
-----END CERTIFICATE-----` | |
const clientCert =`-----BEGIN CERTIFICATE----- | |
MIIDRjCCAi6gAwIBAgIBAjANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJSVTEM | |
MAoGA1UECBMDdG1wMQwwCgYDVQQKEwN0bXAxDjAMBgNVBAMTBXRtcENBMB4XDTE1 | |
MDgwNzExMzQwMFoXDTE2MDgwNjExMzQwMFowPTELMAkGA1UEBhMCUlUxDDAKBgNV | |
BAgTA3RtcDEMMAoGA1UEChMDdG1wMRIwEAYDVQQDEwl0bXBDbGllbnQwggEiMA0G | |
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDSQBlUWlSTxuNVvIiKoL0dK8zwQtHA | |
a6+c8fXSJCZ4DGA6cZeeYBzPn5LtPJPztS56gsaqGsTKBBXqALEym6QdFt4r4ZNM | |
enbHvgjZkhZxewTianeuXavtrJeEtS0F99Hg9sABJ4l6sRJaEW0QNSSLWppTXE8D | |
oIyLIKmtEheWliqGbzrJcpTkUGvaTLhs95r1Qepd6Ec7nx346zi6n3E4/U+vKeR6 | |
aPkgnpmlrQaVlFafBIDf0/qFC6CnsP0n0rOWFdBNL/6BzZAyexRAIftXLuwQs7mO | |
Kle6s7ZpVATL3WcdG3Dd+yhaNjAbyitju7oXu5l4aL55qlgghAtLNX//AgMBAAGj | |
VTBTMAkGA1UdEwQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwEQYJYIZIAYb4QgEB | |
BAQDAgeAMB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwDQYJKoZIhvcN | |
AQEFBQADggEBALOu/XTRZabSJFYiruY4bL7PpfNCgC4nN0BKO0ihgwh3KANYHt7H | |
D0dYFcFHGSa3EtPNHWK6JF6wIuGMW8qB6JcnWEwtS4h6nXCPGVPM4jx+hGMPQgtv | |
yJ4NvIvn1iX9NUp4J1HByV8IG+cfmw9RAYhC+LDDaZvkpcaf/PVDUXxJZRJiMdnH | |
cA2WpMBK7RefWGf/mvIjgqesr8RstatlwflajkPzKmeRpa2zkMUwQkTYOH7SmeLq | |
wsAythSUUxU8qkssHhbapczNLtVtLFPnsVqrETGgoKg/evsSn+Cx7DZc0fww7dLt | |
s7JnFGlsenpJ1ONLV0mmrrrZvEej9m0H7tg= | |
-----END CERTIFICATE-----` | |
const clientKey=`-----BEGIN PRIVATE KEY----- | |
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDSQBlUWlSTxuNV | |
vIiKoL0dK8zwQtHAa6+c8fXSJCZ4DGA6cZeeYBzPn5LtPJPztS56gsaqGsTKBBXq | |
ALEym6QdFt4r4ZNMenbHvgjZkhZxewTianeuXavtrJeEtS0F99Hg9sABJ4l6sRJa | |
EW0QNSSLWppTXE8DoIyLIKmtEheWliqGbzrJcpTkUGvaTLhs95r1Qepd6Ec7nx34 | |
6zi6n3E4/U+vKeR6aPkgnpmlrQaVlFafBIDf0/qFC6CnsP0n0rOWFdBNL/6BzZAy | |
exRAIftXLuwQs7mOKle6s7ZpVATL3WcdG3Dd+yhaNjAbyitju7oXu5l4aL55qlgg | |
hAtLNX//AgMBAAECggEACiQPVLM6qxoHswXx7AXOuU54hwoiBc7r3H0LJ0SZGmc2 | |
aPs7neby3MzMkGbAmBugD0apgGDkJv5FdFDuOwuowcJtmt45dZHeksnGsX/LV1Pg | |
q28JML7R4RfXAw6eClCmrdwY7LVUezd5NCDtCsAVcCdBlE26felLfhZoOLHLs3aa | |
S9hZ310fMRiYhDYZdAKPKGEIU02+a/NcpK6Ic8C+ZWz3xRAHBZNsbuw13L0+2vDK | |
LUYAk6EyW4cWmQMg20EU5g4S5ZhsbxdiJLkGunDpFUJc6BU7gQ17P9wzO6iUgo6Q | |
nsger7++1Wmt/upqOZZXnrfkTatYLktfgMAoGxpIyQKBgQD5mRrgIcZ2Cq5VFedE | |
coqE7z9Ih+4rY3m3nHQ7zfZ+e2hlEHoRo+cd0A665YScRkvgKIAY4S5GTIeMxAII | |
TS3boVwbBq7EjDx9RPhqWB2GiamXAEVlnmKclOWRlipV+j5ehijMudQdm01uJAif | |
j7boxlhnxyBnbjgSWiWK6UJiEwKBgQDXpKG4N9RoNOw5M8jZ7pnbt8LrWEeN+tN5 | |
TwG1Ok+GxWhwU7WRG8vMD6Ol+5f3nfNBP9YiYCyMZcBnIstkv0Z7NvmcW7KLjW6i | |
q9DxDlqAxnBX3NS6mugusEG0bSJhYlbHXfQ5FkTMSrtz7dek7xqBYPn9fc2oJFh0 | |
QFz5b+3H5QKBgQDLM+2gaX70XQ++750fqYzCWzEPMLMjGdJfPH2Yrr6uDHRaS0bG | |
E8U2DUvgtrj2rXhaXz6igrk0vFtiq7Tn40WhWEXvLsqb83vPlJYVpfUrsemiqLLW | |
31JzHfmkRDflVVzvgZO30NYy4Fvyfl2S4eLMsaYJnyDvc9ksf72u0OadhwKBgCfi | |
CgsBQGa5iwsVWct8xrYNaZ6PaESJJH2mMCGtlDHP5v4HbWhWJL4sEk9LlhK1At2J | |
ifg3o2WgGBK7K7UJb2awhz/08bO/x7uMXYuH5RM2IGcPr8SHi/O+o5hUKuyp/HTJ | |
GrdIOBc0pzDMx3p4woU1Q2cv0k6L0lRF5yw3GFpFAoGAAeVjThZQzi1pSWc3KbMR | |
InHnJqefiG8igNgcPD6z0Rg60tKcl5x+8TifPNu+Brdk86aQqva3xEPucYrQMQ4A | |
lxooxy2Pi2GsHSqR/bj/Y0lwyJt5przkRHc2wtgTfntF7PmbJCNImjxKneVuXzsK | |
pmxUzmLodpAA+CnNRFoojpw= | |
-----END PRIVATE KEY-----` | |
const serverCert = `-----BEGIN CERTIFICATE----- | |
MIIDRjCCAi6gAwIBAgIBAzANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJSVTEM | |
MAoGA1UECBMDdG1wMQwwCgYDVQQKEwN0bXAxDjAMBgNVBAMTBXRtcENBMB4XDTE1 | |
MDgwNzExMzUwMFoXDTE2MDgwNjExMzUwMFowPTELMAkGA1UEBhMCUlUxDDAKBgNV | |
BAgTA3RtcDEMMAoGA1UEChMDdG1wMRIwEAYDVQQDEwl0bXBTZXJ2ZXIwggEiMA0G | |
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDNk21GtnfirmXsnedBKDR8x+nVhcMe | |
Nxh20V8QBzqs1hUKG/IUgPVlRbXGZkH+WD+Qz5JrTP92ZYXajg58RDX/BIsidEpW | |
Zo4zedfIFL8P8v2B6uo76EPM7Vr1kdxtL3Q9FYIr3IdMljV4P/YaVUarBAeyLPyN | |
FqmRYhOuz0cX1JeR1RIXkzJe3dou83ihzIfj3mNJ9/s0F6TUxbKsGHQpHZRw4ry3 | |
leX2kNRSJgh3Ly8N633kxDwTvioyFJx2/ZZHBkhJ9WebCu5/4BeuFRnsyukzpctq | |
MEqiJCW+IHVtDKnq6gQeEzzyL+XVhPDIP6IiJwsxCacoKH5A5MIL1asFAgMBAAGj | |
VTBTMAkGA1UdEwQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwEQYJYIZIAYb4QgEB | |
BAQDAgZAMB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwDQYJKoZIhvcN | |
AQEFBQADggEBADiLfncfLicC1APdPvjnrK9e5qRpiRO8ZESf+Rryix9nA6uGTSuO | |
b3ayUZ/PdHTB/4/rpYDNmCjp9uLl2yO5JipbqwiO43sjo8k0JwKPsNVKvCa0tEcD | |
y1O/1vmjI5dYZmKsQ5mWHZbAtmQ+WThk85PIq4iEmhxT83BHPJvRnix+1JmjZ9Jl | |
//j0pb6ayMbk+hsjob1U+5NzbqTexoLLnpqBpCCprnlNl5F9VNL6682GdbDZQwAa | |
hMIKB2ykSOuFDxlhRr0TpCfgjTVIHK5IzusHjsAm+i/9QbK6HPbmu2batiniwUOO | |
++kFXRzBvOR2Gc0/tfRFfv03tDCjiRQC96Y= | |
-----END CERTIFICATE-----` | |
func main(){ | |
roots := x509.NewCertPool() | |
if !roots.AppendCertsFromPEM([]byte(rootCert)){ | |
panic("Can't parse root cert") | |
} | |
if !roots.AppendCertsFromPEM([]byte(serverCert)){ | |
panic("Can't parse server cert") | |
} | |
cert, err := tls.X509KeyPair([]byte(clientCert), []byte(clientKey)) | |
if err != nil { | |
panic(err) | |
} | |
conn, err := tls.Dial("tcp", "localhost:1234", &tls.Config{ | |
RootCAs:roots, | |
InsecureSkipVerify: true, | |
Certificates: []tls.Certificate{cert}, | |
}) | |
if err != nil { | |
panic(err) | |
} | |
conn.Write([]byte{2}) | |
fmt.Println(conn.ConnectionState().PeerCertificates[0].Subject.CommonName) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment