OpenSSLで、TLS 1.3を使う方法の覚書き。以下が参考になる。
ビルド
OpenSSL が現在サポートしているのは draft 20。そのソースの取り出し方はこう:
% git clone https://github.com/openssl/openssl.git
(修正:)draft 22のソースの取り出し方はこう:
% cd openssl % git checkout -t origin/tls1_3-draft-22
ビルドの仕方はこう:
% ./config enable-tls1_3 % make % make test
OpenSSL サーバ
s_server の使い方:
% cd util % ./opensslwrap.sh s_server -accept 13443 -www -key $SOMEWHERE/key.pem -cert $SOMEWHERE/certificate.pem -curves X25519:P-256
- ORTT を受けるには -early_data が必要。現時点で、-www とは両立しない。
% ./opensslwrap.sh s_server -accept 13443 -early_data -key $SOMEWHERE/key.pem -cert $SOMEWHERE/certificate.pem -curves X25519:P-256
OpenSSL クライアント
Full nego:
./opensslwrap.sh s_client -debug -connect 127.0.0.1:13443
HRR:
- curves の先頭が keyshare となる。
./opensslwrap.sh s_client -debug -connect 127.0.0.1:13443 -curves P-521:P-256
PSK:
./opensslwrap.sh s_client -debug -connect 127.0.0.1:13443 -sess_out ticket ./opensslwrap.sh s_client -debug -connect 127.0.0.1:13443 -sess_in ticket
0RTT:
./opensslwrap.sh s_client -debug -connect 127.0.0.1:13443 -sess_out ticket ./opensslwrap.sh s_client -debug -connect 127.0.0.1:13443 -sess_in ticket -early_data $SOMEWHERE/early-data.txt