Skip to content

Instantly share code, notes, and snippets.

@danehans
Last active March 31, 2018 00:37
Show Gist options
  • Save danehans/694cb0ce68017a6e44aea85f7b47d2f7 to your computer and use it in GitHub Desktop.
Save danehans/694cb0ce68017a6e44aea85f7b47d2f7 to your computer and use it in GitHub Desktop.
fortio_mtls_tests

Test Case 1: TLS Disabled

Run Fortio server

$ docker run --rm --name fortio -p 8080:8080 -p 8079:8079 istio/fortio:webtest server -loglevel debug

Run grpcping to Fortio server without -cert flag produces expected success. Note: No certificate log msg:

$ docker exec fortio /usr/local/bin/fortio grpcping localhost
Clock skew histogram usec : count 1 avg 14.718 +/- 0 min 14.718 max 14.718 sum 14.718
# range, mid point, percentile, count
>= 14.718 <= 14.718 , 14.718 , 100.00, 1
# target 50% 14.718
RTT histogram usec : count 3 avg 344.98633 +/- 60.25 min 282.547 max 426.416 sum 1034.959
# range, mid point, percentile, count
>= 282.547 <= 300 , 291.274 , 33.33, 1
> 300 <= 350 , 325 , 66.67, 1
> 400 <= 426.416 , 413.208 , 100.00, 1
# target 50% 325
16:13:27 I pingsrv.go:129> Ping RTT 344986 (avg of 325996, 282547, 426416 ns) clock skew 14718

Run grpcping to Fortio server with -cert flag produces expected failure:

$ docker exec fortio /usr/local/bin/fortio grpcping -cert /etc/ssl/certs/server.crt localhost
16:12:39 I grpcrunner.go:54> Using server certificate /etc/ssl/certs/server.crt to construct TLS credentials
16:12:39 E pingsrv.go:97> grpc error from Ping0 rpc error: code = Unavailable desc = all SubConns are in TransientFailure

The server log shows expected nil auth info:

22:44:35 V pingsrv.go:44> Ping called {Seq:1 Ts:1522277075995698888 Payload:} (ctx context.Background.WithCancel.WithCancel.WithValue(peer.peerKey{}, &peer.Peer{Addr:(*net.TCPAddr)(0xc4202c2c90), AuthInfo:credentials.AuthInfo(nil)}).WithValue(transport.streamKey{}, <stream: 0xc4200da780, /fgrpc.PingServer/Ping>).WithValue(metadata.mdIncomingKey{}, metadata.MD{":authority":[]string{"localhost:8079"}, "user-agent":[]string{"grpc-go/1.9.2"}}))

Run load with -grpc flag produces expected success:

$ docker exec fortio /usr/local/bin/fortio load -grpc http://localhost:8079
Fortio 0.8.1-pre running at 8 queries per second, 4->4 procs, for 5s: http://localhost:8079
19:07:41 I grpcrunner.go:109> Starting grpc test for http://localhost:8079 with 4 threads at 8.0 qps
19:07:41 I grpcrunner.go:191> stripping http scheme. grpc destination: localhost:8079
19:07:41 I grpcrunner.go:191> stripping http scheme. grpc destination: localhost:8079
19:07:41 I grpcrunner.go:191> stripping http scheme. grpc destination: localhost:8079
19:07:41 I grpcrunner.go:191> stripping http scheme. grpc destination: localhost:8079
Starting at 8 qps with 4 thread(s) [gomax 4] for 5s : 10 calls each (total 40)
19:07:46 I periodic.go:530> T000 ended after 5.000993508s : 10 calls. qps=1.9996026757489644
19:07:46 I periodic.go:530> T003 ended after 5.001086606s : 10 calls. qps=1.9995654520364847
19:07:46 I periodic.go:530> T002 ended after 5.001232211s : 10 calls. qps=1.9995072370375886
19:07:46 I periodic.go:530> T001 ended after 5.001313023s : 10 calls. qps=1.9994749286861424
Ended after 5.001877257s : 40 calls. qps=7.997
Sleep times : count 36 avg 0.55323591 +/- 0.001024 min 0.551194545 max 0.55484959 sum 19.9164927
Aggregated Function Time : count 40 avg 0.00080073598 +/- 0.0001849 min 0.000439024 max 0.001195842 sum 0.032029439
# range, mid point, percentile, count
>= 0.000439024 <= 0.001 , 0.000719512 , 82.50, 33
> 0.001 <= 0.00119584 , 0.00109792 , 100.00, 7
# target 50% 0.000772104
# target 75% 0.000947409
# target 90% 0.00108393
# target 99% 0.00118465
# target 99.9% 0.00119472
Health SERVING : 40
All done 40 calls (plus 4 warmup) 0.801 ms avg, 8.0 qps

Run load with the -curl flag produces expected success:

$ docker exec fortio /usr/local/bin/fortio load -curl http://localhost:8080/debug

Test Case 2: TLS enabled

Start the server with the -cert and -key flags. Note: the use of the cert/key in the log msgs:

$ docker run --rm --name fortio -p 8080:8080 -p 8079:8079 --mount type=bind,source=/Users/daneyonhansen/code/go/src/istio.io/fortio/testdata,target=/etc/ssl/certs istio/fortio:webtest server -loglevel debug -cert /etc/ssl/certs/server.crt -key /etc/ssl/certs/server.key
16:41:29 I logger.go:97> Log level is now 0 Debug (was 2 Info)
16:41:29 V stats.go:517> Will use [50 75 90 99 99.9] for percentiles
Fortio 0.8.1-pre grpc 'ping' server listening on [::]:8079
16:41:29 I pingsrv.go:67> Using server certificate /etc/ssl/certs/server.crt to construct TLS credentials
16:41:29 I pingsrv.go:68> Using server key /etc/ssl/certs/server.key to construct TLS credentials
<SNIP>

Run a grpcping to Fortio server by specifying the -cert flag produces expected success. Note: the use of a cert in the log msg:

$ docker exec fortio /usr/local/bin/fortio grpcping -cert /etc/ssl/certs/server.crt localhost
16:00:10 I grpcrunner.go:54> Using server certificate /etc/ssl/certs/server.crt to construct TLS credentials
16:00:10 I pingsrv.go:129> Ping RTT 501452 (avg of 595441, 537088, 371828 ns) clock skew 31094
Clock skew histogram usec : count 1 avg 31.094 +/- 0 min 31.094 max 31.094 sum 31.094
# range, mid point, percentile, count
>= 31.094 <= 31.094 , 31.094 , 100.00, 1
# target 50% 31.094
RTT histogram usec : count 3 avg 501.45233 +/- 94.7 min 371.828 max 595.441 sum 1504.357
# range, mid point, percentile, count
>= 371.828 <= 400 , 385.914 , 33.33, 1
> 500 <= 595.441 , 547.721 , 100.00, 2
# target 50% 523.86

The Fortio server log showing correct auth info:

16:00:10 V pingsrv.go:44> Ping called {Seq:1 Ts:1522339210508278051 Payload:} (ctx context.Background.WithCancel.WithCancel.WithValue(peer.peerKey{}, &peer.Peer{Addr:(*net.TCPAddr)(0xc4202d2720), AuthInfo:credentials.TLSInfo{State:tls.ConnectionState{Version:0x303, HandshakeComplete:true, DidResume:false, CipherSuite:0xc02f, NegotiatedProtocol:"h2", NegotiatedProtocolIsMutual:true, ServerName:"localhost", PeerCertificates:[]*x509.Certificate(nil), VerifiedChains:[][]*x509.Certificate(nil), SignedCertificateTimestamps:[][]uint8(nil), OCSPResponse:[]uint8(nil), TLSUnique:[]uint8{0x8c, 0x82, 0xa7, 0x73, 0xf2, 0x99, 0x99, 0x2e, 0xf7, 0xfb, 0xd8, 0xc2}}}}).WithValue(transport.streamKey{}, <stream: 0xc4202f9040, /fgrpc.PingServer/Ping>).WithValue(metadata.mdIncomingKey{}, metadata.MD{":authority":[]string{"localhost:8079"}, "user-agent":[]string{"grpc-go/1.9.2"}}))

Run a grpcping without TLS produces expected failure. Note: no use of a cert in the log msg:

$ docker exec fortio /usr/local/bin/fortio grpcping localhost
16:21:57 E pingsrv.go:97> grpc error from Ping0 rpc error: code = Unavailable desc = transport is closing

Run load with -cert and -grpc flags produces expected success:

$ docker exec fortio /usr/local/bin/fortio load -cert /etc/ssl/certs/server.crt -grpc localhost:8079
Fortio 0.8.1-pre running at 8 queries per second, 4->4 procs, for 5s: localhost:8079
18:44:51 I grpcrunner.go:109> Starting grpc test for localhost:8079 with 4 threads at 8.0 qps
18:44:51 I grpcrunner.go:54> Using server certificate /etc/ssl/certs/server.crt to construct TLS credentials
18:44:51 I grpcrunner.go:54> Using server certificate /etc/ssl/certs/server.crt to construct TLS credentials
18:44:51 I grpcrunner.go:54> Using server certificate /etc/ssl/certs/server.crt to construct TLS credentials
18:44:51 I grpcrunner.go:54> Using server certificate /etc/ssl/certs/server.crt to construct TLS credentials
Starting at 8 qps with 4 thread(s) [gomax 4] for 5s : 10 calls each (total 40)
18:44:56 I periodic.go:530> T001 ended after 5.002305801s : 10 calls. qps=1.9990781047414017
18:44:56 I periodic.go:530> T000 ended after 5.002340735s : 10 calls. qps=1.9990641441181236
18:44:56 I periodic.go:530> T002 ended after 5.002422332s : 10 calls. qps=1.9990315363880795
18:44:56 I periodic.go:530> T003 ended after 5.002957803s : 10 calls. qps=1.9988175782741056
Ended after 5.00298477s : 40 calls. qps=7.9952
Sleep times : count 36 avg 0.55307956 +/- 0.001636 min 0.548399675 max 0.554982932 sum 19.9108642
Aggregated Function Time : count 40 avg 0.00079165597 +/- 0.0002743 min 0.000427438 max 0.001788292 sum 0.031666239
# range, mid point, percentile, count
>= 0.000427438 <= 0.001 , 0.000713719 , 85.00, 34
> 0.001 <= 0.00178829 , 0.00139415 , 100.00, 6
# target 50% 0.000757095
# target 75% 0.000930599
# target 90% 0.00126276
# target 99% 0.00173574
# target 99.9% 0.00178304
Health SERVING : 40
All done 40 calls (plus 4 warmup) 0.792 ms avg, 8.0 qps

Run load with -grpc flag and without -cert flag produces expected failure:

$ docker exec fortio /usr/local/bin/fortio load -grpc localhost:8079
Fortio 0.8.1-pre running at 8 queries per second, 4->4 procs, for 5s: localhost:8079
18:49:25 I grpcrunner.go:109> Starting grpc test for localhost:8079 with 4 threads at 8.0 qps
18:49:25 E grpcrunner.go:134> Error in first grpc health check call for localhost:8079 rpc error: code = Unavailable desc = transport is closing
Aborting because rpc error: code = Unavailable desc = transport is closing

Run load with the -curl flag produces expected success:

$ docker exec fortio /usr/local/bin/fortio load -curl http://localhost:8080/debug

Test Case 3: A dedicated grpcping client container and ping fortio.istio.io. Note: This provides backwards compatability support.

Run grpcping w/o -cert flag produces expected success:

# To https endpoint
$ docker run --rm --name client istio/fortio:webtest grpcping https://fortio.istio.io:443
16:26:47 I grpcrunner.go:194> stripping https scheme. grpc destination: fortio.istio.io:443
Clock skew histogram usec : count 1 avg 12329.795 +/- 0 min 12329.795 max 12329.795 sum 12329.795
# range, mid point, percentile, count
>= 12329.8 <= 12329.8 , 12329.8 , 100.00, 1
# target 50% 12329.8

# To http endpoint
$ docker run --rm --name client istio/fortio:webtest grpcping http://fortio.istio.io:80
17:08:49 I grpcrunner.go:191> stripping http scheme. grpc destination: fortio.istio.io:80
17:08:50 I pingsrv.go:129> Ping RTT 43274644 (avg of 45264564, 42432889, 42126481 ns) clock skew 12981840
Clock skew histogram usec : count 1 avg 12981.84 +/- 0 min 12981.84 max 12981.84 sum 12981.84
# range, mid point, percentile, count
>= 12981.8 <= 12981.8 , 12981.8 , 100.00, 1
# target 50% 12981.8
RTT histogram usec : count 3 avg 43274.645 +/- 1413 min 42126.481 max 45264.564 sum 129823.934
# range, mid point, percentile, count
>= 42126.5 <= 45264.6 , 43695.5 , 100.00, 3
# target 50% 42911

Run grpcping with -cert flag to https://fortio.istio.io:443 and observe expected failure:

$ docker run --rm --name client --mount type=bind,source=/Users/daneyonhansen/code/go/src/istio.io/fortio/testdata,target=/etc/ssl/certs istio/fortio:webtest grpcping -cert /etc/ssl/certs/server.crt https://fortio.istio.io:443
16:34:39 I grpcrunner.go:54> Using server certificate /etc/ssl/certs/server.crt to construct TLS credentials
16:34:39 I grpcrunner.go:194> stripping https scheme. grpc destination: fortio.istio.io:443
16:34:40 E pingsrv.go:97> grpc error from Ping0 rpc error: code = Unavailable desc = all SubConns are in TransientFailure

Test Case 4: Mulit-Host TLS

Generate new TLS assets that use a real domain name and IP address to test multi-host mTLS. Set SAN env, run cert-gen script and copy server crt/key to /testdata dir:

$ export SAN=DNS.1:fortio,IP.1:172.17.0.2
$ ./cert-gen
Creating example CA, server cert/key, and client cert/key...
<SNIP>
            X509v3 Subject Alternative Name: 
                DNS:fortio, IP Address:172.17.0.2
<SNIP>

$cp server.crt ../istio.io/fortio/testdata/server.crt.multihost
$cp server.key ../istio.io/fortio/testdata/server.key.multihost

Start Fortio server with -cert and -key flags.

$ docker run --rm --name fortio -p 8080:8080 -p 8079:8079 --mount type=bind,source=/Users/daneyonhansen/code/go/src/istio.io/fortio/testdata,target=/etc/ssl/certs istio/fortio:webtest server -loglevel debug -cert /etc/ssl/certs/server.crt.multihost -key /etc/ssl/certs/server.key.multihost
16:41:29 I logger.go:97> Log level is now 0 Debug (was 2 Info)
16:41:29 V stats.go:517> Will use [50 75 90 99 99.9] for percentiles
Fortio 0.8.1-pre grpc 'ping' server listening on [::]:8079
16:41:29 I pingsrv.go:67> Using server certificate /etc/ssl/certs/server.crt to construct TLS credentials
16:41:29 I pingsrv.go:68> Using server key /etc/ssl/certs/server.key to construct TLS credentials
<SNIP>

A grpcping to Fortio server with `-cert' flag produces expected success when using the IP or domain name used in the cert:

$ echo $FORTIO_IP
172.17.0.2

# By IP
$ docker run --rm --name client --link fortio --mount type=bind,source=/Users/daneyonhansen/code/go/src/istio.io/fortio/testdata,target=/etc/ssl/certs istio/fortio:webtest grpcping -cert /etc/ssl/certs/server.crt.multihost $FORTIO_IP
16:51:33 I grpcrunner.go:54> Using server certificate /etc/ssl/certs/server.crt to construct TLS credentials
Clock skew histogram usec : count 1 avg 41.295 +/- 0 min 41.295 max 41.295 sum 41.295
# range, mid point, percentile, count
>= 41.295 <= 41.295 , 41.295 , 100.00, 1
# target 50% 41.295
RTT histogram usec : count 3 avg 557.011 +/- 88.64 min 469.148 max 678.372 sum 1671.033
# range, mid point, percentile, count
>= 469.148 <= 500 , 484.574 , 33.33, 1
> 500 <= 600 , 550 , 66.67, 1
> 600 <= 678.372 , 639.186 , 100.00, 1
# target 50% 550
16:51:33 I pingsrv.go:129> Ping RTT 557011 (avg of 678372, 523513, 469148 ns) clock skew 41295

# By domain name
$ docker run --rm --name client --link fortio --mount type=bind,source=/Users/daneyonhansen/code/go/src/istio.io/fortio/testdata,target=/etc/ssl/certs istio/fortio:webtest grpcping -cert /etc/ssl/certs/server.crt.multihost fortio
16:52:21 I grpcrunner.go:54> Using server certificate /etc/ssl/certs/server.crt to construct TLS credentials
16:52:21 I pingsrv.go:129> Ping RTT 627621 (avg of 756272, 674047, 452545 ns) clock skew -18254
Clock skew histogram usec : count 1 avg -18.254 +/- 0 min -18.254 max -18.254 sum -18.254
# range, mid point, percentile, count
>= -18.254 <= -18.254 , -18.254 , 100.00, 1
# target 50% -18.254
RTT histogram usec : count 3 avg 627.62133 +/- 128.3 min 452.545 max 756.272 sum 1882.864
# range, mid point, percentile, count
>= 452.545 <= 500 , 476.273 , 33.33, 1
> 600 <= 700 , 650 , 66.67, 1
> 700 <= 756.272 , 728.136 , 100.00, 1
# target 50% 650

A grpcping to Fortio server without `-cert' flag produces expected failure:

$ docker run --rm --name client --link fortio --mount type=bind,source=/Users/daneyonhansen/code/go/src/istio.io/fortio/testdata,target=/etc/ssl/certs istio/fortio:webtest grpcping $FORTIO_IP
16:48:13 E pingsrv.go:97> grpc error from Ping0 rpc error: code = Unavailable desc = transport is closing

Run load with -grpc and -cert flags produces expected success:

$ docker run --rm --name client --link fortio --mount type=bind,source=/Users/daneyonhansen/code/go/src/istio.io/fortio/testdata,target=/etc/ssl/certs istio/fortio:webtest load -cert /etc/ssl/certs/server.crt.multihost -grpc fortio:8079
Fortio 0.8.1-pre running at 8 queries per second, 4->4 procs, for 5s: fortio:8079
18:38:37 I grpcrunner.go:109> Starting grpc test for fortio:8079 with 4 threads at 8.0 qps
18:38:37 I grpcrunner.go:54> Using server certificate /etc/ssl/certs/server.crt.multihost to construct TLS credentials
18:38:37 I grpcrunner.go:54> Using server certificate /etc/ssl/certs/server.crt.multihost to construct TLS credentials
18:38:37 I grpcrunner.go:54> Using server certificate /etc/ssl/certs/server.crt.multihost to construct TLS credentials
18:38:37 I grpcrunner.go:54> Using server certificate /etc/ssl/certs/server.crt.multihost to construct TLS credentials
Starting at 8 qps with 4 thread(s) [gomax 4] for 5s : 10 calls each (total 40)
18:38:42 I periodic.go:530> T001 ended after 5.004429982s : 10 calls. qps=1.9982295757894768
18:38:42 I periodic.go:530> T000 ended after 5.004503722s : 10 calls. qps=1.9982001324206429
18:38:42 I periodic.go:530> T003 ended after 5.004573243s : 10 calls. qps=1.998172374435164
18:38:42 I periodic.go:530> T002 ended after 5.004760837s : 10 calls. qps=1.9980974767206443
Ended after 5.005068708s : 40 calls. qps=7.9919
Sleep times : count 36 avg 0.55315054 +/- 0.001797 min 0.550136455 max 0.554947272 sum 19.9134193
Aggregated Function Time : count 40 avg 0.00078637887 +/- 0.0002105 min 0.000291502 max 0.001145068 sum 0.031455155
# range, mid point, percentile, count
>= 0.000291502 <= 0.001 , 0.000645751 , 82.50, 33
> 0.001 <= 0.00114507 , 0.00107253 , 100.00, 7
# target 50% 0.000712173
# target 75% 0.000933578
# target 90% 0.00106217
# target 99% 0.00113678
# target 99.9% 0.00114424
Health SERVING : 40
All done 40 calls (plus 4 warmup) 0.786 ms avg, 8.0 qps

Run load with -grpc flag and without -cert flag produces expected failure:

$ docker run --rm --name client --link fortio --mount type=bind,source=/Users/daneyonhansen/code/go/src/istio.io/fortio/testdata,target=/etc/ssl/certs istio/fortio:webtest load -grpc fortio:8079
Fortio 0.8.1-pre running at 8 queries per second, 4->4 procs, for 5s: fortio:8079
18:51:56 I grpcrunner.go:109> Starting grpc test for fortio:8079 with 4 threads at 8.0 qps
18:51:56 E grpcrunner.go:134> Error in first grpc health check call for fortio:8079 rpc error: code = Unavailable desc = transport is closing
Aborting because rpc error: code = Unavailable desc = transport is closing

Run load with the -curl flag produces expected success:

$ docker run --rm --name client --link fortio --mount type=bind,source=/Users/daneyonhansen/code/go/src/istio.io/fortio/testdata,target=/etc/ssl/certs istio/fortio:webtest load -curl -cert=/etc/ssl/certs/server.crt.multihost http://fortio:8080/debug
# openssl x509 -in /etc/ssl/certs/ca-certificates.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 6828503384748696800 (0x5ec3b7a6437fa4e0)
Signature Algorithm: sha1WithRSAEncryption
Issuer: CN=ACCVRAIZ1, OU=PKIACCV, O=ACCV, C=ES
Validity
Not Before: May 5 09:37:37 2011 GMT
Not After : Dec 31 09:37:37 2030 GMT
Subject: CN=ACCVRAIZ1, OU=PKIACCV, O=ACCV, C=ES
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (4096 bit)
Modulus:
00:9b:a9:ab:bf:61:4a:97:af:2f:97:66:9a:74:5f:
d0:d9:96:fd:cf:e2:e4:66:ef:1f:1f:47:33:c2:44:
a3:df:9a:de:1f:b5:54:dd:15:7c:69:35:11:6f:bb:
c8:0c:8e:6a:18:1e:d8:8f:d9:16:bc:10:48:36:5c:
f0:63:b3:90:5a:5c:24:37:d7:a3:d6:cb:09:71:b9:
f1:01:72:84:b0:7d:db:4d:80:cd:fc:d3:6f:c9:f8:
da:b6:0e:82:d2:45:85:a8:1b:68:a8:3d:e8:f4:44:
6c:bd:a1:c2:cb:03:be:8c:3e:13:00:84:df:4a:48:
c0:e3:22:0a:e8:e9:37:a7:18:4c:b1:09:0d:23:56:
7f:04:4d:d9:17:84:18:a5:c8:da:40:94:73:eb:ce:
0e:57:3c:03:81:3a:9d:0a:a1:57:43:69:ac:57:6d:
79:90:78:e5:b5:b4:3b:d8:bc:4c:8d:28:a1:a7:a3:
a7:ba:02:4e:25:d1:2a:ae:ed:ae:03:22:b8:6b:20:
0f:30:28:54:95:7f:e0:ee:ce:0a:66:9d:d1:40:2d:
6e:22:af:9d:1a:c1:05:19:d2:6f:c0:f2:9f:f8:7b:
b3:02:42:fb:50:a9:1d:2d:93:0f:23:ab:c6:c1:0f:
92:ff:d0:a2:15:f5:53:09:71:1c:ff:45:13:84:e6:
26:5e:f8:e0:88:1c:0a:fc:16:b6:a8:73:06:b8:f0:
63:84:02:a0:c6:5a:ec:e7:74:df:70:ae:a3:83:25:
ea:d6:c7:97:87:93:a7:c6:8a:8a:33:97:60:37:10:
3e:97:3e:6e:29:15:d6:a1:0f:d1:88:2c:12:9f:6f:
aa:a4:c6:42:eb:41:a2:e3:95:43:d3:01:85:6d:8e:
bb:3b:f3:23:36:c7:fe:3b:e0:a1:25:07:48:ab:c9:
89:74:ff:08:8f:80:bf:c0:96:65:f3:ee:ec:4b:68:
bd:9d:88:c3:31:b3:40:f1:e8:cf:f6:38:bb:9c:e4:
d1:7f:d4:e5:58:9b:7c:fa:d4:f3:0e:9b:75:91:e4:
ba:52:2e:19:7e:d1:f5:cd:5a:19:fc:ba:06:f6:fb:
52:a8:4b:99:04:dd:f8:f9:b4:8b:50:a3:4e:62:89:
f0:87:24:fa:83:42:c1:87:fa:d5:2d:29:2a:5a:71:
7a:64:6a:d7:27:60:63:0d:db:ce:49:f5:8d:1f:90:
89:32:17:f8:73:43:b8:d2:5a:93:86:61:d6:e1:75:
0a:ea:79:66:76:88:4f:71:eb:04:25:d6:0a:5a:7a:
93:e5:b9:4b:17:40:0f:b1:b6:b9:f5:de:4f:dc:e0:
b3:ac:3b:11:70:60:84:4a:43:6e:99:20:c0:29:71:
0a:c0:65
Exponent: 65537 (0x10001)
X509v3 extensions:
Authority Information Access:
CA Issuers - URI:http://www.accv.es/fileadmin/Archivos/certificados/raizaccv1.crt
OCSP - URI:http://ocsp.accv.es
X509v3 Subject Key Identifier:
D2:87:B4:E3:DF:37:27:93:55:F6:56:EA:81:E5:36:CC:8C:1E:3F:BD
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Authority Key Identifier:
keyid:D2:87:B4:E3:DF:37:27:93:55:F6:56:EA:81:E5:36:CC:8C:1E:3F:BD
X509v3 Certificate Policies:
Policy: X509v3 Any Policy
User Notice:
Explicit Text:
CPS: http://www.accv.es/legislacion_c.htm
X509v3 CRL Distribution Points:
Full Name:
URI:http://www.accv.es/fileadmin/Archivos/certificados/raizaccv1_der.crl
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
X509v3 Subject Alternative Name:
email:[email protected]
Signature Algorithm: sha1WithRSAEncryption
97:31:02:9f:e7:fd:43:67:48:44:14:e4:29:87:ed:4c:28:66:
d0:8f:35:da:4d:61:b7:4a:97:4d:b5:db:90:e0:05:2e:0e:c6:
79:d0:f2:97:69:0f:bd:04:47:d9:be:db:b5:29:da:9b:d9:ae:
a9:99:d5:d3:3c:30:93:f5:8d:a1:a8:fc:06:8d:44:f4:ca:16:
95:7c:33:dc:62:8b:a8:37:f8:27:d8:09:2d:1b:ef:c8:14:27:
20:a9:64:44:ff:2e:d6:75:aa:6c:4d:60:40:19:49:43:54:63:
da:e2:cc:ba:66:e5:4f:44:7a:5b:d9:6a:81:2b:40:d5:7f:f9:
01:27:58:2c:c8:ed:48:91:7c:3f:a6:00:cf:c4:29:73:11:36:
de:86:19:3e:9d:ee:19:8a:1b:d5:b0:ed:8e:3d:9c:2a:c0:0d:
d8:3d:66:e3:3c:0d:bd:d5:94:5c:e2:e2:a7:35:1b:04:00:f6:
3f:5a:8d:ea:43:bd:5f:89:1d:a9:c1:b0:cc:99:e2:4d:00:0a:
da:c9:27:5b:e7:13:90:5c:e4:f5:33:a2:55:6d:dc:e0:09:4d:
2f:b1:26:5b:27:75:00:09:c4:62:77:29:08:5f:9e:59:ac:b6:
7e:ad:9f:54:30:22:03:c1:1e:71:64:fe:f9:38:0a:96:18:dd:
02:14:ac:23:cb:06:1c:1e:a4:7d:8d:0d:de:27:41:e8:ad:da:
15:b7:b0:23:dd:2b:a8:d3:da:25:87:ed:e8:55:44:4d:88:f4:
36:7e:84:9a:78:ac:f7:0e:56:49:0e:d6:33:25:d6:84:50:42:
6c:20:12:1d:2a:d5:be:bc:f2:70:81:a4:70:60:be:05:b5:9b:
9e:04:44:be:61:23:ac:e9:a5:24:8c:11:80:94:5a:a2:a2:b9:
49:d2:c1:dc:d1:a7:ed:31:11:2c:9e:19:a6:ee:e1:55:e1:c0:
ea:cf:0d:84:e4:17:b7:a2:7c:a5:de:55:25:06:ee:cc:c0:87:
5c:40:da:cc:95:3f:55:e0:35:c7:b8:84:be:b4:5d:cd:7a:83:
01:72:ee:87:e6:5f:1d:ae:b5:85:c6:26:df:e6:c1:9a:e9:1e:
02:47:9f:2a:a8:6d:a9:5b:cf:ec:45:77:7f:98:27:9a:32:5d:
2a:e3:84:ee:c5:98:66:2f:96:20:1d:dd:d8:c3:27:d7:b0:f9:
fe:d9:7d:cd:d0:9f:8f:0b:14:58:51:9f:2f:8b:c3:38:2d:de:
e8:8f:d6:8d:87:a4:f5:56:43:16:99:2c:f4:a4:56:b4:34:b8:
61:37:c9:c2:58:80:1b:a0:97:a1:fc:59:8d:e9:11:f6:d1:0f:
4b:55:34:46:2a:8b:86:3b
$ openssl x509 -in ca.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
ac:00:3a:af:8e:51:a4:0e
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=fake-ca
Validity
Not Before: Mar 30 18:49:41 2018 GMT
Not After : Mar 27 18:49:41 2028 GMT
Subject: CN=fake-ca
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (4096 bit)
Modulus (4096 bit):
00:a7:0e:e2:9b:1a:af:00:c0:bb:47:36:a1:e3:d6:
60:28:3e:de:53:ad:99:35:30:8e:82:0c:ad:f0:af:
42:1a:83:cc:e2:e6:8d:5c:11:d8:f5:7a:ff:e8:1d:
74:d8:3e:5e:ef:5a:db:d4:0d:34:73:f3:7e:08:39:
03:72:5e:b8:80:66:76:4d:8a:0d:8a:7f:c2:c8:dd:
f3:12:d9:55:91:71:3d:ee:74:69:d1:1e:c0:fb:01:
de:c9:e0:c7:36:b1:c5:10:e0:84:ba:bd:55:69:d4:
65:10:dc:71:be:b7:2a:fd:cc:c5:11:9d:c7:10:c7:
ca:da:12:36:ae:04:b4:5f:c6:c9:39:8c:fe:65:12:
f4:fc:2d:bb:f0:c7:0d:68:d8:ed:fe:1e:82:e0:1f:
af:c1:c7:4a:36:f8:4e:82:56:67:4c:c5:b1:bb:29:
3d:5b:c2:53:2e:f5:e6:99:e7:da:6d:1e:92:01:e8:
f8:d4:98:08:4e:f9:5e:aa:20:6d:ee:da:45:8e:89:
d1:7f:5d:b1:38:ac:32:63:5d:20:e0:ea:87:38:8f:
fe:e6:46:f2:49:9b:35:c4:29:fd:88:b9:04:f2:39:
c0:27:f8:77:19:af:ef:11:a6:9d:b0:6c:b7:31:59:
8f:20:09:b7:27:4e:f9:d3:95:d1:93:dd:ec:ce:9d:
5f:ff:4c:f6:75:4a:8d:a0:a1:3d:52:c9:90:88:d3:
64:41:ad:b2:1b:b1:5e:c5:c7:06:b4:b7:51:98:e6:
5b:0d:7c:bb:a7:64:62:7d:79:8b:f4:ce:d8:f0:74:
dd:b0:7d:ce:02:81:94:86:30:3c:ec:ac:ed:33:dc:
52:84:87:32:e3:5a:3a:9b:4e:52:fd:8e:75:17:f6:
25:4f:39:9a:a4:e7:ea:72:61:c4:71:9a:44:4b:36:
5e:b5:ce:40:8e:60:32:e8:da:ae:b4:de:46:6c:d8:
22:80:b5:10:c7:9c:65:fb:11:6c:4a:cc:c2:2b:d2:
f2:14:66:64:27:cd:dc:e8:91:1e:fe:59:24:88:52:
1c:bf:39:a0:43:8f:82:87:08:c4:d4:54:0b:39:9e:
c0:5c:53:53:b9:38:03:98:ae:b6:fd:55:84:e1:d2:
00:55:f3:1d:31:24:79:c0:3a:c8:b8:6b:aa:dd:11:
f0:0f:a4:28:33:f9:71:4c:c3:34:50:95:f8:22:e5:
53:86:5f:d6:00:9e:86:7b:ef:92:d9:4f:78:fa:da:
ab:66:c4:63:ee:86:24:5f:fa:c2:43:df:e7:ff:a8:
27:de:ae:fe:8c:66:d0:86:cd:ef:cb:5c:1a:a9:c6:
16:b5:7e:9a:e5:42:fe:09:20:95:fb:6d:78:d2:61:
4b:90:cb
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
1C:36:AA:54:DE:9F:1B:C6:6B:94:0B:97:7D:E7:54:FB:CD:46:90:EE
X509v3 Authority Key Identifier:
keyid:1C:36:AA:54:DE:9F:1B:C6:6B:94:0B:97:7D:E7:54:FB:CD:46:90:EE
X509v3 Basic Constraints: critical
CA:TRUE, pathlen:0
X509v3 Key Usage: critical
Digital Signature, Certificate Sign, CRL Sign
Signature Algorithm: sha256WithRSAEncryption
44:d3:9c:fc:6d:49:5f:d4:15:b8:b7:91:a8:19:ac:aa:18:78:
41:6d:f2:17:49:37:23:bb:fb:ed:4c:f9:72:cc:58:ff:d8:40:
58:2c:e5:ae:37:dc:e0:b2:f9:33:80:a5:ef:8a:9f:17:7b:06:
96:18:28:87:44:f8:93:e7:83:ba:f8:f8:d8:8a:04:65:e0:be:
a2:37:7e:ce:a4:87:d7:71:bd:24:94:ef:e3:bb:e6:e5:43:9b:
65:34:3f:a6:e5:13:c1:23:ed:be:8a:80:18:e3:a9:3f:9e:73:
07:b2:77:b7:02:09:9e:12:51:ab:04:6f:f2:c3:21:d5:68:a0:
7b:76:6f:55:37:db:22:55:08:02:01:f3:f0:f8:77:05:ad:44:
5c:f1:ea:97:ba:8d:69:c0:ef:cb:96:46:51:3a:f7:7f:ab:80:
c9:c6:df:90:a4:fa:35:2e:16:33:85:8d:4f:5b:ca:c6:9d:e0:
a7:13:89:ef:74:15:39:dd:b5:93:67:c7:48:91:4b:d3:b7:b2:
15:6f:0f:74:a0:89:f6:2e:67:b8:41:c4:68:b4:57:69:d1:7c:
b1:0c:9a:ac:b7:3a:ea:71:fe:63:f1:c4:1a:73:bb:62:59:ac:
fc:f6:10:4c:f1:af:89:b2:86:65:90:5f:50:02:4d:6a:c7:c3:
0e:4e:89:16:d0:50:98:2d:bf:08:ce:a2:a3:6c:4b:c0:a8:24:
35:14:37:d0:6b:ed:83:2c:eb:e6:7c:e4:73:ca:8f:6e:2d:4a:
ec:9e:78:08:59:1b:71:76:12:9b:dd:e7:b2:08:93:28:fa:1f:
41:ac:ec:52:d6:f1:25:cf:5d:04:30:a9:b2:c8:5a:9c:22:1d:
b1:6b:60:12:d3:b8:30:21:5e:4f:02:7d:db:f5:83:fa:9b:f1:
ae:8b:de:f1:fa:aa:16:3d:62:93:f4:c2:dc:ca:4e:3c:80:57:
78:6a:6c:19:34:2f:1a:37:f9:12:e2:97:92:1b:d2:2c:8c:17:
84:c8:d9:1a:b3:c8:62:d7:d0:e3:67:d6:79:fd:69:88:2c:8c:
eb:71:fb:6b:e8:e3:ad:1e:fc:3b:a8:8d:45:bb:4b:26:d1:2d:
21:d0:4c:ff:42:26:46:54:ed:b3:0e:7c:e4:12:39:fd:75:df:
54:66:a8:30:85:15:c8:55:a5:f1:17:e8:ca:5d:ee:bc:c7:06:
bf:de:71:b9:0c:75:a1:38:bd:94:b4:88:5d:28:19:85:7b:51:
7a:12:de:71:9b:ee:86:d9:f8:14:dc:37:49:7a:7b:54:49:5b:
bc:2e:c4:a6:64:05:71:d7:9a:23:7b:2b:1f:74:d1:01:01:5c:
84:39:5a:ca:24:1a:04:1f
$ openssl x509 -in server.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4096 (0x1000)
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=fake-ca
Validity
Not Before: Mar 30 18:49:42 2018 GMT
Not After : Mar 30 18:49:42 2019 GMT
Subject: CN=fake-server
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
00:e5:5d:70:fa:ba:94:2f:6c:bd:25:86:14:f4:cd:
e4:b6:5e:71:a2:cc:e4:e8:1f:f5:d4:44:e2:4d:0a:
13:d7:e2:2a:1b:23:78:a1:aa:a5:d4:fc:3d:91:af:
b3:96:98:5b:9b:53:2a:27:e5:62:2f:5f:25:b6:69:
f8:ca:c4:c3:63:ef:2c:8f:f0:36:63:ee:b6:6b:b8:
03:83:13:de:47:b1:cc:d3:8e:6b:a0:07:b8:80:73:
fb:b6:98:a4:b1:d3:35:2d:a8:22:99:e0:68:e2:42:
f8:11:24:5f:34:99:d8:18:23:39:f3:f4:85:e0:0f:
3f:a7:a0:39:cd:7a:38:84:1c:d2:fa:9c:fb:26:3a:
2f:75:c0:1d:78:73:d0:2b:8d:a4:85:8b:27:cb:85:
0c:5c:13:ee:91:8e:07:05:86:cf:f7:a8:9d:48:f0:
54:7c:1e:47:14:3a:2d:37:4e:4e:ea:47:8f:9b:02:
38:15:a0:b5:b5:81:3b:6e:b6:c7:b1:00:69:ac:8f:
f4:77:6f:ec:93:8b:76:31:e1:81:7e:6b:12:54:17:
e4:92:45:9c:01:45:8c:5b:79:47:78:6c:d5:f9:ae:
f7:58:df:42:39:59:44:98:0d:f1:9a:c5:e6:d4:3d:
83:25:5e:e0:65:94:a7:aa:09:b3:38:92:10:22:4f:
9b:4f
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Server
Netscape Comment:
OpenSSL Generated Server Certificate
X509v3 Subject Key Identifier:
1F:4F:32:7C:95:44:D4:B8:4A:CD:28:97:B1:A3:4A:0A:90:F2:AD:1A
X509v3 Authority Key Identifier:
keyid:1C:36:AA:54:DE:9F:1B:C6:6B:94:0B:97:7D:E7:54:FB:CD:46:90:EE
DirName:/CN=fake-ca
serial:AC:00:3A:AF:8E:51:A4:0E
X509v3 Key Usage: critical
Digital Signature, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Subject Alternative Name:
DNS:fortio, IP Address:172.17.0.2
Signature Algorithm: sha256WithRSAEncryption
55:f7:a3:64:d8:63:cf:a9:32:26:ae:8c:85:bc:38:25:d8:a3:
8c:0e:cb:c4:53:9f:cf:66:d4:33:28:db:18:78:e1:24:9e:29:
df:9d:4f:26:d0:71:d8:a0:ca:69:04:f6:4d:c0:6f:6a:ba:8d:
b8:ef:f0:dd:73:e6:db:7c:3a:c5:89:12:ab:d2:73:d5:ce:92:
41:12:38:97:6a:fe:b3:bb:ce:91:12:00:bd:cc:6e:1e:94:df:
89:b7:45:4d:8f:17:8b:76:54:7f:1c:f8:6d:09:a6:80:65:09:
cf:15:23:92:ce:28:38:47:c0:08:62:87:c8:50:d7:54:df:fa:
83:65:ab:8c:f3:18:29:01:eb:aa:e1:fd:fa:e3:ed:e7:da:56:
ca:45:10:f6:05:95:32:70:dc:84:52:5d:89:25:b3:28:ef:96:
9c:ed:9d:d5:c9:24:cd:a4:a8:e2:9d:21:6f:72:c6:bc:96:b4:
bd:ac:83:13:52:4d:8f:aa:ea:5d:2e:3a:f9:15:5c:06:72:c0:
80:2a:1d:39:ca:f3:8e:17:87:9c:c9:98:40:f8:9d:70:d9:1f:
31:5f:6b:ac:ec:18:d9:0b:7d:f3:de:0a:fe:ce:4a:cc:10:27:
7f:b9:45:38:e5:7e:81:78:08:3a:e9:c1:fe:aa:3c:11:4d:2c:
10:c8:cc:06:2d:2d:58:a3:2c:d3:c8:6b:c5:8d:1c:52:19:42:
4a:d4:a6:97:21:5b:12:f2:50:73:f8:d1:08:f8:5f:c1:2c:a0:
f3:b6:8a:04:f9:00:c6:91:3d:52:45:51:ca:fd:ba:38:42:6d:
dc:4a:b1:53:4f:60:1e:23:54:00:ff:36:fc:27:2f:27:ef:4f:
47:22:c1:c1:50:3d:73:ad:7e:a6:d2:2d:ac:30:5f:b3:b5:7e:
6a:b2:c8:87:89:92:60:d0:37:aa:a7:82:13:05:45:27:b5:c5:
50:c8:81:4d:62:eb:db:0d:17:77:e9:6a:b9:0e:b2:df:7c:c0:
48:b6:6d:cc:0e:ab:9a:b1:7a:a6:ec:5d:5e:c4:c2:db:57:f0:
cb:af:e8:f2:d6:a5:dc:97:8e:a1:39:60:35:32:07:6e:53:35:
65:92:19:71:a8:b1:e7:e7:d0:0b:5c:02:a3:96:b2:66:98:32:
8f:42:4a:6d:a2:fd:f5:dd:bb:56:6c:93:8b:f6:94:a2:ee:47:
98:07:0e:5a:55:8b:e9:3d:46:f0:fe:c4:95:2b:41:b8:b8:4e:
85:76:74:38:42:ea:3f:d9:52:83:5d:46:a4:11:2f:ac:24:58:
b5:e5:ce:68:87:f0:b4:b7:2b:ac:89:b1:2c:15:b4:e8:24:22:
a6:dc:12:5f:8a:80:c6:cd
$ openssl x509 -in client.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4097 (0x1001)
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=fake-ca
Validity
Not Before: Mar 30 18:49:42 2018 GMT
Not After : Mar 30 18:49:42 2019 GMT
Subject: CN=fake-client
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
00:c2:57:e4:44:4a:21:79:17:0c:94:48:0c:09:6f:
c6:0f:06:15:15:86:db:2b:11:fd:e7:ff:60:df:53:
4f:70:c3:c1:a4:fe:74:c7:b0:96:ac:4e:5b:fa:88:
5f:37:32:bd:c4:78:fd:02:37:a3:17:d0:53:26:ab:
47:dd:31:c1:67:91:f0:f9:3c:6a:86:a2:26:01:4c:
04:b4:46:c3:1d:eb:c8:57:51:ce:82:5b:f5:dc:9a:
ba:a2:64:d7:59:25:8a:e1:b2:ab:d7:91:f0:71:0c:
b8:0a:96:b2:06:89:03:b1:2f:60:1c:b9:e1:21:2e:
a4:99:f2:1a:66:14:0b:55:0b:32:b9:da:ed:81:6f:
06:38:61:ad:ca:84:2d:a7:38:98:9b:c4:11:fd:18:
5a:00:ee:d8:53:e8:fd:0e:e0:11:9f:44:7d:aa:d9:
d4:c1:0d:3d:6a:54:dc:3f:18:d8:bb:8b:dc:48:83:
08:f9:68:90:ab:c1:a0:d6:4c:04:25:75:c8:27:97:
bc:39:40:fd:e1:57:00:28:74:86:1a:17:2c:85:bb:
89:00:df:7c:f7:6b:83:a6:2a:61:04:b2:f0:72:1f:
db:76:29:15:cb:db:ea:f8:26:72:6b:34:4e:b0:88:
20:0f:f5:3d:2a:0e:cc:3b:5a:49:11:ba:a7:aa:11:
2c:73
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Client
Netscape Comment:
OpenSSL Generated Client Certificate
X509v3 Subject Key Identifier:
44:E3:55:6D:B3:A0:0C:26:A4:49:DB:8E:75:44:94:74:5D:59:D3:DD
X509v3 Authority Key Identifier:
keyid:1C:36:AA:54:DE:9F:1B:C6:6B:94:0B:97:7D:E7:54:FB:CD:46:90:EE
X509v3 Key Usage: critical
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Client Authentication
Signature Algorithm: sha256WithRSAEncryption
98:de:de:0b:85:e8:ac:62:57:27:e7:52:7a:a1:4c:04:20:23:
69:1c:26:0b:db:63:9a:0b:5d:d6:81:e7:97:bd:0f:c9:d9:fc:
df:2e:ac:b4:87:53:56:d5:5b:e3:29:44:90:09:f6:ea:d8:8b:
24:63:60:86:41:3e:65:15:83:ab:14:4a:9b:f8:ff:1e:a5:78:
04:31:71:f9:96:5e:51:78:2d:27:18:23:a0:3c:eb:73:e9:16:
b7:c5:be:c4:e2:19:d4:c9:70:05:e3:73:66:cb:61:94:4a:f6:
45:b4:46:6e:8e:51:4b:40:8b:25:3b:c2:29:15:3e:8b:1e:2b:
58:77:22:5e:a8:de:c6:4e:eb:c3:69:d2:2d:f0:f7:0c:6e:f1:
a0:c7:d9:a1:4d:68:ef:e2:81:2d:51:b0:76:1a:69:bb:d6:5e:
3c:25:75:c1:b5:49:99:db:5c:05:90:6d:a7:21:50:56:d5:b4:
06:ca:e2:7b:c8:91:fb:6c:f4:84:f1:08:dc:44:49:12:98:25:
31:43:01:17:2e:97:5f:ff:f6:29:e2:77:f4:79:0b:2e:06:d6:
4c:bb:da:41:35:b8:3a:f9:5a:60:0c:89:a2:b0:2d:bf:99:14:
e8:3d:c1:f8:68:4c:18:85:cf:95:3d:f4:5d:a7:06:a0:fe:d4:
b2:bb:f8:73:53:1d:3f:03:73:22:bb:d7:02:9c:04:ef:52:db:
38:b5:92:d4:14:e4:b5:e1:79:3c:9a:55:6c:1f:ee:21:c7:b7:
06:d6:92:4c:cd:df:18:18:03:a5:ff:46:bd:0d:59:f3:69:b6:
b2:75:21:16:71:4b:a3:98:64:44:f9:a4:b5:98:fd:a9:40:8c:
8b:30:a5:8d:02:dc:ad:1e:3c:32:e3:9d:ed:fd:fb:c7:77:39:
fc:41:93:f5:fa:81:ec:14:37:24:7a:e4:f4:d6:e4:c4:d8:8d:
83:f0:46:01:38:c6:60:8c:ee:b3:fb:b4:db:76:7c:27:f8:f5:
ea:a5:e5:35:7a:e4:bb:43:9a:bd:6b:f8:ff:13:e4:f8:d2:9e:
57:48:e7:2c:39:83:68:92:0f:72:28:da:15:7a:58:26:7b:cf:
cd:b6:84:f2:73:ba:2e:ec:cd:f5:78:6b:2e:94:48:b2:c1:96:
3f:e4:e3:ad:8f:3a:39:47:96:29:35:4d:2c:81:dd:2c:54:7c:
7e:1a:75:47:8b:93:a0:3f:96:a6:ab:43:36:dc:82:da:a0:ee:
60:0e:c2:91:4a:41:c0:c1:6f:60:2c:1b:45:fe:88:df:12:a3:
d7:0a:b4:b5:d0:02:02:35:09:74:f4:62:eb:0f:4c:1d:51:70:
7e:f2:ae:e5:34:57:27:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment