Skip to content

Commit 98a827f

Browse files
committed
add 6-dual-verify-certs
1 parent 385da72 commit 98a827f

File tree

13 files changed

+268
-0
lines changed

13 files changed

+268
-0
lines changed

gohttps/6-dual-verify-certs/README

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
ca:
2+
openssl genrsa -out ca.key 2048
3+
openssl req -x509 -new -nodes -key ca.key -subj "/CN=tonybai.com" -days 5000 -out ca.crt
4+
5+
server:
6+
openssl genrsa -out server.key 2048
7+
openssl req -new -key server.key -subj "/CN=localhost" -out server.csr
8+
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 5000
9+
10+
client:
11+
openssl genrsa -out client.key 2048
12+
openssl req -new -key client.key -subj "/CN=tonybai_cn" -out client.csr
13+
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 5000
14+
15+
16+
client:
17+
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile client.ext -out client.crt -days 5000

gohttps/6-dual-verify-certs/ca.crt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDJjCCAg6gAwIBAgIJAJ9bnz2gjnCSMA0GCSqGSIb3DQEBBQUAMBYxFDASBgNV
3+
BAMTC3RvbnliYWkuY29tMB4XDTE1MDQzMDEzMzMxOVoXDTI5MDEwNjEzMzMxOVow
4+
FjEUMBIGA1UEAxMLdG9ueWJhaS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
5+
ggEKAoIBAQDFNFEpWELN11i41KuFNnrqhJTXpkDxoNThkJpARAWerGyoh7UC4vjI
6+
cfcC9TxsGMImtDB8fWowR6tjIxO2Rg4zatbyZB35+bN7zT0wwnRZMBq9BBP0+P8f
7+
KW1CpelEowCAakQ70Soiohf0BRlJJla/GgndMEGomWH6n7gok5XF6+UCj3ifCf8+
8+
U+Y1zy6dDBngE/IW9G8j3K5jqbYRJTMSF3ZlESPTvvewhimFTwVUwD3VT7DoacLL
9+
GHBZoNGVjytIbvMMYyh70O+iLkzrUb2kLvrIPlD4Fu66gSH1QKINeLV3FwHTskVg
10+
Poo/jXUnj0doEep/cxMZP3Kk0Ijz0LqbAgMBAAGjdzB1MB0GA1UdDgQWBBTYGqzF
11+
1x7tEn3eOX7TAjl6+h7HbjBGBgNVHSMEPzA9gBTYGqzF1x7tEn3eOX7TAjl6+h7H
12+
bqEapBgwFjEUMBIGA1UEAxMLdG9ueWJhaS5jb22CCQCfW589oI5wkjAMBgNVHRME
13+
BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCwuOqQr7NR1zExI7dPDe972GmucMjf
14+
pCuWlaaHutpJ88uCArtpdpyP0G4tlDGKFNLMFnG+ux5uY/pXl3Rm0naODTgsx71a
15+
DGenHXvpa4iy1TCogEMWXXEsOUYjndmLOIMqFalYMa0ywbyWV60jWNuE31RBw1zI
16+
+qBrr9m3YNs/ediFnXOtAGEhYEeh2e0jBEFEMbU1Q/Cv6Txu+RRnmqokUqV5cNOz
17+
nt0O2mJQxKl5Hkmv9IZ61XNwQ5SXZidwdETh5i8kEDFfKX2HeYbWQZF27NWpXzgw
18+
lF6vIv9LcD1RnERSvdRQKzjePsSBbp78ZohLaXkWLubiHNqoot2fNJyz
19+
-----END CERTIFICATE-----

gohttps/6-dual-verify-certs/ca.key

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEowIBAAKCAQEAxTRRKVhCzddYuNSrhTZ66oSU16ZA8aDU4ZCaQEQFnqxsqIe1
3+
AuL4yHH3AvU8bBjCJrQwfH1qMEerYyMTtkYOM2rW8mQd+fmze809MMJ0WTAavQQT
4+
9Pj/HyltQqXpRKMAgGpEO9EqIqIX9AUZSSZWvxoJ3TBBqJlh+p+4KJOVxevlAo94
5+
nwn/PlPmNc8unQwZ4BPyFvRvI9yuY6m2ESUzEhd2ZREj0773sIYphU8FVMA91U+w
6+
6GnCyxhwWaDRlY8rSG7zDGMoe9Dvoi5M61G9pC76yD5Q+BbuuoEh9UCiDXi1dxcB
7+
07JFYD6KP411J49HaBHqf3MTGT9ypNCI89C6mwIDAQABAoIBAEso/230l7GAS+5W
8+
D/E7rGlJkrkGQmZVWA2IYWHxCvtI2Dj7UAADpbIvzWcxNJA2d3js4DXyTtCL4ERu
9+
kAq+dJcgN0A27D3j74ZV2OaGlnWPogE8VqbdZ87mqR/nwBpKzdwjpFHwDFEa2mpE
10+
rzh0Bkfbkrrcs4mgu/kbesLsTP8bl63B8rhKXiAfAi/59V5RIFyNwxeBe7YfAvVe
11+
Eobgu87a5JEK60699mX/v3j6xVlw2fHOqNS8RbpkimuRbmteVH9LKI1/tM9B/+6f
12+
NQJQvTWP6N7e2FTBVk08yfKCYzAGgmAXl6MVMg/S/rEUhGUn0DP2VG4axQvTa1Tq
13+
jESUCrECgYEA7R+C+2WK9m40UMYhm1Wx3p3lkgMBCrl0Ascrg6LEZQxS5adrq6X/
14+
p4j83mNsslwr2v6/bfgrAs0T4WFsxkKdcsCZ0UX0OjezqFC+2b1q/RkYSyXQ8Zid
15+
xk8sorAqw45Fpmk+shXq2DO0NbLYliD7ra0gITg85/5uCEgX6laow+8CgYEA1OdG
16+
c+VCNmVGpluG5vgp2WI349jJmtJOVv3T3ABvKrgINwBFL8M5+2+6mMA/2nC8sQgK
17+
IuK/AF6pzin0HGlCR4ycs9EhcepDX0tgcvqt6nqtwI7QQ2WwBTKfDo7vubLbjG82
18+
AsOnRhgiTCUJGl7xBELHjmdCG2Bssl5M/iTJ2BUCgYA91ZPQfuBH9uEJl0E4QpaJ
19+
mN8+vi3NYCMSfmGoiA9y0k3juU7oifcq9xwJ2h+EO2jsSLYetTJyHoxqn39ADCsG
20+
u5bg7b8MV24wHC5IlY6KxbqCDjB4b/XkuszG9+2O5VDgXl2NDw4YpxL9VdAJBjzb
21+
Q2Q3hXTMgpqq6jHiWArWXQKBgQCgwBse6KwsvB0zAIqEHD4k55cBjy7xmfcSkcaE
22+
J0PIgnmZZbfXj1VZNowyR34u5c5i8IoOuxuyIMefZWfuh79GnLG4x5+0DkheTGB/
23+
kCz+jTBh4rL3IHFeC1GzQVNZ5+UDTPj/71B+iTxkN9Z+tc7PA8j/CZINb6nCp5cE
24+
kSxh3QKBgFn+viu4lhhmZte2/IBog5ytoYaU4oTlRDBVUAJfN7BgBzehhlPCa4WY
25+
sw2ljmejqsrhmwEgxnT83+lBcMfNTr7V3UDZZDTxs3AuxYpWLopPxiF+cuZn6ctB
26+
XN+3Dbgo+mVbdpPteBuboXwtxkz8nQ2yv2mjet2CWOvuOWMoMHKg
27+
-----END RSA PRIVATE KEY-----

gohttps/6-dual-verify-certs/ca.srl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
D6E3F6FAAE65EDE0
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICxTCCAa2gAwIBAgIJANbj9vquZe3gMA0GCSqGSIb3DQEBBQUAMBYxFDASBgNV
3+
BAMTC3RvbnliYWkuY29tMB4XDTE1MDQzMDE0NDIxNFoXDTI5MDEwNjE0NDIxNFow
4+
FTETMBEGA1UEAxQKdG9ueWJhaV9jbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
5+
AQoCggEBAOQSIlB1rrKKnlbV830xe6p1XT+QBU7/7ZoKKnUVQxct8U1IBdpPO2FZ
6+
vhhDD58bkE03xV7mcgfDsbminbREsRAMAW+KTTTP4IOwytKJjym9n9IRxyT0M8dI
7+
61YuK3rZU/rGu40ZSDK8LWEJPL5c2FkleeETEyKkOIEw7cWIB5chT425VL0XOcrc
8+
aQ7QeDcfa1O3P1IC+9Z+tLboRU1N+sY7eA7XoErLLYT1MpRn04X0EG/AvjBkw4JG
9+
5TsnbkYrot0scFGrlW4pqur6LB7SprakK+D+VjQoLB8sN1yo2OrIOs4rp8D7dkmW
10+
6VnrzZFSLLlVfCLIpdZ8ewCLRCJUksECAwEAAaMXMBUwEwYDVR0lBAwwCgYIKwYB
11+
BQUHAwIwDQYJKoZIhvcNAQEFBQADggEBABmJiKjI5/p+UYBbr8QNKyk5oP+jyrCQ
12+
CqVCutHThfP+ChnRblS+cVYZNXy2FalXC7zkzaQIFlNwkY6ius+tMFQzIh/f7BjV
13+
iKm9HWUe8mkPMwqjuQNSRTbeMIwj6CUDcyO7QzUKzqMwVfa6/XwKMDGFMpdCrTGi
14+
rkC3mkc0Js3qQu8s63lKtQGGcWK0joEJAAX23SDHjrK0F14UvKeJikf7VoaP5xnG
15+
+BGiH6cf9UYS343ECzPqYLFRoyikSEYweQiHbsQKs1VS388uhtM6KKZvVe60/ULV
16+
dAZCm8S+KehP340VILjp4gwE4FhWd1jTenmznQKiJE8CTB2SEq6qDcM=
17+
-----END CERTIFICATE-----
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-----BEGIN CERTIFICATE REQUEST-----
2+
MIICWjCCAUICAQAwFTETMBEGA1UEAxQKdG9ueWJhaV9jbjCCASIwDQYJKoZIhvcN
3+
AQEBBQADggEPADCCAQoCggEBAOQSIlB1rrKKnlbV830xe6p1XT+QBU7/7ZoKKnUV
4+
Qxct8U1IBdpPO2FZvhhDD58bkE03xV7mcgfDsbminbREsRAMAW+KTTTP4IOwytKJ
5+
jym9n9IRxyT0M8dI61YuK3rZU/rGu40ZSDK8LWEJPL5c2FkleeETEyKkOIEw7cWI
6+
B5chT425VL0XOcrcaQ7QeDcfa1O3P1IC+9Z+tLboRU1N+sY7eA7XoErLLYT1MpRn
7+
04X0EG/AvjBkw4JG5TsnbkYrot0scFGrlW4pqur6LB7SprakK+D+VjQoLB8sN1yo
8+
2OrIOs4rp8D7dkmW6VnrzZFSLLlVfCLIpdZ8ewCLRCJUksECAwEAAaAAMA0GCSqG
9+
SIb3DQEBBQUAA4IBAQBfW178MTUDooIJCuZJWUmaGIfKDuSv805r8JPnUlalODzC
10+
o1Ef473+MjJcjlgQfYtG8k6TLeV1lW+v5d5epnciD4Qb+vekNRbxALVZ8N/TUhpq
11+
y2EunDojxCvVXBq+MUU1W9rQ3JFFfJKeaSWlKz1TbIBLm3vJ54/pBRvABgYwLcLR
12+
L+qFS3+gkp8yKkenCdvjU/3K6QONtuQxorcz7/VhY3GYKzYEc+umAPorsNXq4hvS
13+
yHZo/tPnZreiL1DjhOVQoy+fPG4MwfjlVW9cBAMttKVZMRMHrfb6ZxtF75GAG5pV
14+
vuFhyV0+7uOHGe4MJza4AF+FcAL5WxLAjieNWD/m
15+
-----END CERTIFICATE REQUEST-----
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
extendedKeyUsage=clientAuth

gohttps/6-dual-verify-certs/client.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package main
2+
3+
import (
4+
"crypto/tls"
5+
"crypto/x509"
6+
"fmt"
7+
"io/ioutil"
8+
"net/http"
9+
)
10+
11+
func main() {
12+
pool := x509.NewCertPool()
13+
caCertPath := "ca.crt"
14+
15+
caCrt, err := ioutil.ReadFile(caCertPath)
16+
if err != nil {
17+
fmt.Println("ReadFile err:", err)
18+
return
19+
}
20+
pool.AppendCertsFromPEM(caCrt)
21+
22+
cliCrt, err := tls.LoadX509KeyPair("client.crt", "client.key")
23+
if err != nil {
24+
fmt.Println("Loadx509keypair err:", err)
25+
return
26+
}
27+
28+
tr := &http.Transport{
29+
TLSClientConfig: &tls.Config{
30+
RootCAs: pool,
31+
Certificates: []tls.Certificate{cliCrt},
32+
},
33+
}
34+
client := &http.Client{Transport: tr}
35+
resp, err := client.Get("https://localhost:8081")
36+
if err != nil {
37+
fmt.Println("Get error:", err)
38+
return
39+
}
40+
defer resp.Body.Close()
41+
body, err := ioutil.ReadAll(resp.Body)
42+
fmt.Println(string(body))
43+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEogIBAAKCAQEA5BIiUHWusoqeVtXzfTF7qnVdP5AFTv/tmgoqdRVDFy3xTUgF
3+
2k87YVm+GEMPnxuQTTfFXuZyB8OxuaKdtESxEAwBb4pNNM/gg7DK0omPKb2f0hHH
4+
JPQzx0jrVi4retlT+sa7jRlIMrwtYQk8vlzYWSV54RMTIqQ4gTDtxYgHlyFPjblU
5+
vRc5ytxpDtB4Nx9rU7c/UgL71n60tuhFTU36xjt4DtegSssthPUylGfThfQQb8C+
6+
MGTDgkblOyduRiui3SxwUauVbimq6vosHtKmtqQr4P5WNCgsHyw3XKjY6sg6ziun
7+
wPt2SZbpWevNkVIsuVV8Isil1nx7AItEIlSSwQIDAQABAoIBACW9rnn8D22yLKOY
8+
AhP8hUde5pBnJ8m75jiwZ/g6DYEfdCfivD01EVF5xVBEgKhGqmlsyjd7EPGh+54J
9+
f+ld2KMcKXyouT/9Cl0ge1+9rbgtje34TSkbVBotQexf9Yf9wLzl+BFQVrc2lpfR
10+
LIEf4hlWb0XEn00DOep/C0m9yevDImmDiv4PEIEYhJdIMKFaNiJTzM7hKO2K1sxa
11+
vUT+N8I0GJvOpFbyTIaZeRqYaE7UDSYhPwMjSvioJ7saE44WDokZ3JL0/w81jv8T
12+
DcXbd+lN6Ok90WXRa8m+nLaWhs3+eDG6eD5OuzuMWKymZyLErEEJ/DLA5lz4fMVs
13+
VFfzvIUCgYEA9OO91nYwGwV2CuWNOaMmcehJBNgMnuHMrv4u82nM7Ocr1eP/1NE3
14+
y9WwjNGfwK/ls0Ialm1OhCo0Fu0ZIOCMtG7pPFJ0LANLap1C0yWOQGUwJrWzCqt2
15+
wuJmJdy9chxutS9bEyE2FsUt9ClqpO2tvbfT3xUScCZEmGvlqZKPpFsCgYEA7msN
16+
NXzK3/oiOgCknlsQVQTwDfzm5/mKPUKpLsUu7+HxwOdfeZL1we0RJctuwNNbS1oc
17+
uLyuwk7FHIzx79JPG2UqQorICpcE6XHOvnqSU46qhRU6wZfH9qczZcQcFxQY1r9N
18+
vJ3oIYvtKoOX8WYPe7xoZbqSR5WSRqtgX/FgIBMCgYBlIQdsYTJMdlzg8xr3CmD9
19+
+SbuUSolEqosOdu5uZ9e1bhMg/NKN3wLORvHi2mlcP4yoMHKDSm3epY4QYF3CkQQ
20+
3xyCRKqk4ldql7bY61FrVl4kHjTp2xUYNdZpHFc/oG43dG7v328uyA7KHbBkm6J8
21+
DkX4ggMzPRpmt2gINvYKsQKBgGMPe7eDmE+jgGEVL1DUiV6p5IwLTm2IE1YMwnq6
22+
Vxw4htgdyl+bHh1rQLqxYd0gdEhEsrZXP01gqSmJrmR0v4WkbQCk5STxRoswTDR8
23+
fRvWpScSgQ064UysgACCkSFNqlxftA7wlSiLGQmXD6SvQTOqPr413N19Wf+e6TYz
24+
9jqdAoGADYXckApBYpjiJHn1VKNdj1suIgwcENyGXE+i2ax3fnLE24CgARdKW0F2
25+
5yjfkYM4IklOAdDC8QcvdWSDKQYvo2Ubqq0DgqSYac91ljfehHs2qrYv1FOULlJF
26+
46SLuUSzBj8xvQHwhE5eyW9pjAU6F3MRIwYonD2mLj+10Y/WH2c=
27+
-----END RSA PRIVATE KEY-----
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICpjCCAY4CCQDW4/b6rmXt3jANBgkqhkiG9w0BAQUFADAWMRQwEgYDVQQDEwt0
3+
b255YmFpLmNvbTAeFw0xNTA0MzAxMzM1MjdaFw0yOTAxMDYxMzM1MjdaMBQxEjAQ
4+
BgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
5+
AMtYdbQm4OxyFoUeGmmtuyy+1mev0vEP+44lwE+HRnLdtydBksrvKByzydRLLMQa
6+
0oQEO/w6PpV2E5j1N0ReeQLcuN8M/PAZiiyQ5fNNad8mSJSbfu2ZWJwnAFIBLh3y
7+
nTMfzQHodMIRHWA0+esFeSn9daWpBZ0X4NHB/3istL9NilxRwQOC5c77vaKOVUJP
8+
b0eaRN8Z+d1R2III0KO9KAXo/CTyz80KrnIJkcrAi3BMLv6gE1PhYxmpKyPX6Lhd
9+
uj2QWVlk7UnYvzIepp4rmeAdOGaCg6CVJdP2ipWjqt4BwwHjrbszOvteHEaI7/zI
10+
qtDB4WUvlQdZg3owPa0Q6C0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAccszQ9XX
11+
0qDOXW1lFPMP11QV9N7V2z+X3C6UIcR0C5Iq+JKDl5z0mn/VsKLFN+gAQrpN8siU
12+
OXJNhL+hH7xB6mYjvZkT5rNVe5WRyIjILxpwAoRwAXXU91jkpJrCrzaM8+xSqu/I
13+
xYidmBGqJrkLUE5p4MMc2EgVuqT4Xc5V4YdIYCqvVmF7iaa1GY7lN3KdvTEABFRm
14+
ubZQJAgIuMcSAxWWXu8AbSGZISq8YTEQ+pY1+pBcRMJu3h3Cn/6O+MVnEmB3AjFv
15+
TccaPfe+57wNV7ODpF+B53JGEz44s+ChLJzqqN57p6wFLvu9ySV6buQp/yuegyo0
16+
t3b6d2e5pxHTXg==
17+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)