Skip to content

IdoBn/tls1.3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TLS 1.3

The goal of this project is to better understand TLS 1.3 by creating a pure python implementation. Let's see how this goes!

Resources

Some resources that will be useful to us when learning about TLS 1.3

Test Endpoint

We want a server that we can make TLS 1.3 requests to and also enable 0-RTT (because I couldn't find a server that supports this...)

Helpful snippet

Client:

echo -e "GET / HTTP/1.1\r\nHost: $host\r\nConnection: close\r\n\r\n" > request.txt
openssl s_client -connect host.docker.internal:4433 -tls1_3 -sess_out session.pem -ign_eof < request.txt
openssl s_client -connect host.docker.internal:4433 -tls1_3 -sess_in session.pem -early_data request.txt

Server:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout myPKey.pem \
    -out myCert.crt \
    -subj '/CN=US'
openssl s_server -accept portNum -cert myCert.pem -key myPKey.pem

Testing Container

To test tls1.3 on our own endpoint (couldn't find one with 0-RTT enabled) we will use an instance made by us.

To build:

cd ./test_server
docker build . -t nginxtls13:latest

To run:

docker run -p4433:443 -it nginxtls13

Crazy Debugging

When working on session resumption, there were some issues. To debug these issues I edited openssl (added some print statements) so that I could see what openssl was looking at and compare that to my code. This was some pretty hard debugging...

You can see the diffs to openssl in resources/openssl.diff

The setup to make openssl compile is pretty simple. Just install it from git

git clone <openssl>
cd openssl
# apply changes
make install
openssl s_server -accept portNum -cert myCert.pem -key myPKey.pem

Goals

  • Send an HTTP GET request to a TLS 1.3 server.
  • Clean up code a bunch!!!
    • Get a decent code review
  • Session resumption (0-RTT)

About

Pure Python Implementation Of TLS 1.3

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published