1
0
mirror of https://github.com/golang/go synced 2024-10-04 20:21:22 -06:00
go/src/pkg
Adam Langley 836529a63c crypto/tls: use pool building for certificate checking
Previously we checked the certificate chain from the leaf
upwards and expected to jump from the last cert in the chain to
a root certificate.

Although technically correct, there are a number of sites with
problems including out-of-order certs, superfluous certs and
missing certs.

The last of these requires AIA chasing, which is a lot of
complexity. However, we can address the more common cases by
using a pool building algorithm, as browsers do.

We build a pool of root certificates and a pool from the
server's chain. We then try to build a path to a root
certificate, using either of these pools.

This differs from the behaviour of, say, Firefox in that Firefox
will accumulate intermedite certificate in a persistent pool in
the hope that it can use them to fill in gaps in future chains.

We don't do that because it leads to confusing errors which only
occur based on the order to sites visited.

This change also enabled SNI for tls.Dial so that sites will return
the correct certificate chain.

R=rsc
CC=golang-dev
https://golang.org/cl/2916041
2010-11-05 09:54:56 -04:00
..
archive use copy 2010-10-26 21:52:54 -07:00
asn1 gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
big big: arm assembly, faster software mulWW, divWW 2010-10-26 21:10:17 -07:00
bufio use append 2010-10-27 19:47:23 -07:00
bytes use append 2010-10-27 19:47:23 -07:00
cmath gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
compress gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
container container/list: document iteration 2010-10-29 08:48:16 +11:00
crypto crypto/tls: use pool building for certificate checking 2010-11-05 09:54:56 -04:00
debug debug/pe, cgo: add windows support 2010-11-01 17:52:26 -04:00
ebnf ebnf: use append 2010-10-28 21:23:24 -07:00
encoding gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
exec strings: Contains 2010-11-01 14:32:48 -07:00
exp testing: eliminate testing/regexp 2010-10-28 16:54:24 -07:00
expvar log: new interface 2010-10-12 12:59:18 -07:00
flag use append 2010-10-27 19:47:23 -07:00
fmt strings: Contains 2010-11-01 14:32:48 -07:00
go go/scanner: line comments may end in EOF 2010-11-04 13:15:42 -07:00
gob gob: documentation. this time for sure. 2010-10-31 17:48:19 -07:00
hash gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
html use append 2010-10-27 19:47:23 -07:00
http strings: Contains 2010-11-01 14:32:48 -07:00
image use append 2010-10-27 19:47:23 -07:00
index/suffixarray gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
io testing: eliminate testing/regexp 2010-10-28 16:54:24 -07:00
json use append 2010-10-27 19:47:23 -07:00
log gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
math gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
mime gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
net net: fix LookupSRV 2010-11-04 10:30:39 -04:00
netchan netchan: fix locking bug. 2010-11-02 10:58:27 -07:00
os syscall: fix Stat(path) where path is directory with trailing '/' on windows 2010-10-30 23:06:49 +11:00
patch gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
path gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
rand tests: fix prints 2010-09-23 13:48:56 +10:00
reflect gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
regexp regexp: eliminate vector in favor of append. 2010-10-28 15:54:01 -07:00
rpc Fix a deadlock bug in the rpc client. The panic will trigger 2010-11-02 14:04:56 -07:00
runtime runtime: fix windows build 2010-11-05 17:27:12 +11:00
scanner use copy 2010-10-26 21:52:54 -07:00
smtp strings: Contains 2010-11-01 14:32:48 -07:00
sort build: no required environment variables 2010-08-18 10:08:49 -04:00
strconv strings: Contains 2010-11-01 14:32:48 -07:00
strings strings: Contains 2010-11-01 14:32:48 -07:00
sync sync: fix typo in documentation 2010-11-02 16:01:07 -07:00
syscall syscall: SIO constants for Linux 2010-11-01 16:42:33 -04:00
syslog log: new interface 2010-10-12 12:59:18 -07:00
tabwriter tabwriter: use append 2010-10-28 21:23:04 -07:00
template use append 2010-10-27 19:47:23 -07:00
testing testing: add Benchmark to allow benchmarks to be run without gotest. 2010-11-01 16:15:17 -04:00
time gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
try gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
unicode use append 2010-10-27 19:47:23 -07:00
unsafe runtime: introduce unsafe.New and unsafe.NewArray 2009-12-07 15:51:58 -08:00
utf8 gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
utf16 gofmt -s -w src misc 2010-10-22 10:06:33 -07:00
websocket web socket: fix short Read 2010-10-20 22:36:06 -04:00
xml use copy 2010-10-26 21:52:54 -07:00
deps.bash build: clear custom variables like GREP_OPTIONS 2010-09-28 23:51:55 -04:00
Makefile crypto: add cast5 2010-11-03 10:39:15 -04:00