Alternative TLS implementation in Go
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
Filippo Valsorda df557b2b05 tris: fix NSS 0-RTT interop il y a 8 ans
_dev tris: fix NSS 0-RTT interop il y a 7 ans
testdata crypto/tls: enable ChaCha20-Poly1305 cipher suites by default. il y a 8 ans
.travis.yml tris: fix NSS 0-RTT interop il y a 7 ans
13.go tris: drop QuietError il y a 7 ans
README.md tris: import go wrapper and interoperability tests il y a 7 ans
alert.go crypto/tls: implement TLS 1.3 server 0-RTT il y a 7 ans
cipher_suites.go [dev.tls] crypto/tls: implement TLS 1.3 cipher suites il y a 7 ans
common.go crypto/tls: implement TLS 1.3 server 0-RTT il y a 7 ans
conn.go crypto/tls: finish the session ticket state checks il y a 7 ans
conn_test.go crypto/tls: use io.ReadFull in conn_test.go il y a 7 ans
example_test.go crypto/tls: add example for Config KeyLogWriter il y a 8 ans
generate_cert.go crypto/tls: recommend P256 elliptic curve il y a 7 ans
handshake_client.go crypto/tls: implement TLS 1.3 server 0-RTT il y a 7 ans
handshake_client_test.go tris: add picotls interop il y a 7 ans
handshake_messages.go crypto/tls: implement TLS 1.3 server 0-RTT il y a 7 ans
handshake_messages_test.go crypto/tls: finish the session ticket state checks il y a 7 ans
handshake_server.go tris: drop QuietError il y a 7 ans
handshake_server_test.go [dev.tls] crypto/tls: implement TLS 1.3 cipher suites il y a 7 ans
handshake_test.go crypto/tls: switch to OpenSSL 1.1.0 for test data. il y a 8 ans
hkdf.go crypto/tls: implement TLS 1.3 minimal server il y a 7 ans
key_agreement.go crypto/tls: implement TLS 1.3 minimal server il y a 7 ans
prf.go crypto/tls: return from Handshake before the Client Finished in 1.3 il y a 7 ans
prf_test.go crypto/tls: decouple handshake signatures from the handshake hash. il y a 9 ans
ticket.go crypto/tls: finish the session ticket state checks il y a 7 ans
tls.go crypto/tls: disable CBC cipher suites with SHA-256 by default il y a 7 ans
tls_test.go crypto/tls: implement TLS 1.3 server 0-RTT il y a 7 ans

README.md

 _____ _     ____        _        _
|_   _| |   / ___|      | |_ _ __(_)___
  | | | |   \___ \ _____| __| '__| / __|
  | | | |___ ___) |_____| |_| |  | \__ \
  |_| |_____|____/       \__|_|  |_|___/

crypto/tls, now with 100% more 1.3.

DO NOT USE THIS FOR THE SAKE OF EVERYTHING THAT’S GOOD AND JUST.

Build Status

Usage

Since crypto/tls is very deeply (and not that elegantly) coupled with the Go stdlib, tls-tris shouldn’t be used as an external package. It is also impossible to vendor it as crypto/tls because stdlib packages would import the standard one and mismatch.

So, to build with tls-tris, you need to use a custom GOROOT. A script is provided that will take care of it for you: ./_dev/go.sh. Just use that instead of the go tool.

The script also transparently fetches the custom Cloudflare Go compiler with the required backports.

./_dev/go.sh build ./_dev/tris-localserver
TLSDEBUG=error ./tris-localserver 127.0.0.1:4443

Debugging

When the environment variable TLSDEBUG is set to error, Tris will print a hexdump of the Client Hello and a stack trace if an handshake error occurs.

Building Caddy

./_dev/go.sh build github.com/mholt/caddy

Note: to get Caddy to use TLS 1.3 you’ll have to apply the patch at _dev/caddy/caddy.patch.

Testing with Firefox

  1. Download the latest Firefox Nightly
  2. Navigate to about:config and set security.tls.version.max to 4
  3. Connect to https://tris.filippo.io/ or tris-localserver

Testing with BoringSSL/BoGo/NSS/Mint

./_dev/tris-localserver/start.sh --rm
docker build -t tls-tris:boring _dev/boring
docker run -i --rm tls-tris:boring $(docker inspect -f '{{ .NetworkSettings.IPAddress }}' tris-localserver):443
docker build -t tls-tris:bogo _dev/bogo
docker run -i --rm tls-tris:bogo $(docker inspect -f '{{ .NetworkSettings.IPAddress }}' tris-localserver):443
docker build -t tls-tris:tstclnt _dev/tstclnt
docker run -i --rm tls-tris:tstclnt $(docker inspect -f '{{ .NetworkSettings.IPAddress }}' tris-localserver):443
docker build -t tls-tris:mint _dev/mint
docker run -i --rm tls-tris:mint $(docker inspect -f '{{ .NetworkSettings.IPAddress }}' tris-localserver):443

To build a specific revision, use --build-arg REVISION=abcdef1234.