-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update to latest X509, TCP and TLS APIs #228
Conversation
pass signature algorithms from certificaterequest to the location where the certificate is sent. reported by @talex5 in mirage/capnp-rpc#228
pass signature algorithms from certificaterequest to the location where the certificate is sent. reported by @talex5 in mirage/capnp-rpc#228
Thanks for your work on this @talex5. Indeed, tls 0.13.0 suffered from an issue "authentication with client certificates and TLS 1.3" that you ran into. I've a patch ready, and once x509 0.13.0 lands into opam repository, I'll cut a tls 0.13.1 release with this fixed. The background story is that the TLS 1.3 handshake is different from earlier, especially with client authentication. If the server sends a CertificateRequet, this now must contain a list of accepted SignatureAlgorithms -- our ocaml-tls client implementation did not respect this list, and did not preserve it until the client certificate was to be sent. Now, with the new logic in tls 0.13.0 about SignatureAlgorithms (ECDSA & ED25519 support), this lead to an error. The fix is in hannesm/ocaml-tls@fa780d6. |
Ah, OK. Will this cause any problems mixing old and new versions? e.g. if a tls.0.8.0 client connects to a tls.0.13.1 server, or vice versa? |
@talex5 no, this should be fine interoperability-wise (unless your 0.13.1 server has tightly configured signaturealgorithms not supported by the 0.8 client - such as "only accept ECDSA/ED25519 certificates"). |
pass signature algorithms from certificaterequest to the location where the certificate is sent. reported by @talex5 in mirage/capnp-rpc#228
CHANGES: * Breaking: use deriving sexp_of instead of sexp. Constructing a state from a sexp has not been supported (lead to exception), and is now removed (mirleft/ocaml-tls#430 by @torinnd, continued in mirleft/ocaml-tls#431 by @hannesm) * Bugfix: TLS 1.3 client authentication with certificate, client side. This used to work accidentally before 0.13.0 changed the signature algorithms handling, now the right signature algorithm (as requested by server) is used. (mirleft/ocaml-tls#431 @hannesm, @talex5 reported mirage/capnp-rpc#228) * adapt to x509 0.13.0 and mirage-crypto-ec 0.10.0 changes (mirleft/ocaml-tls#431 @hannesm)
CHANGES: * Breaking: use deriving sexp_of instead of sexp. Constructing a state from a sexp has not been supported (lead to exception), and is now removed (mirleft/ocaml-tls#430 by @torinnd, continued in mirleft/ocaml-tls#431 by @hannesm) * Bugfix: TLS 1.3 client authentication with certificate, client side. This used to work accidentally before 0.13.0 changed the signature algorithms handling, now the right signature algorithm (as requested by server) is used. (mirleft/ocaml-tls#431 @hannesm, @talex5 reported mirage/capnp-rpc#228) * adapt to x509 0.13.0 and mirage-crypto-ec 0.10.0 changes (mirleft/ocaml-tls#431 @hannesm)
I opened talex5#1 on top of this PR which solves the issue you mention (as bonus it let's the test-mirage run successfully as well). |
Co-authored-by: Hannes Mehnert <[email protected]>
…nix and capnp-rpc-lwt (1.1) CHANGES: - Update to latest X509, TCP and TLS APIs (@talex5 @hannesm mirage/capnp-rpc#228). - Add `Service.fail_lwt` convenience function (@talex5 mirage/capnp-rpc#229). - Remove confusing debug details from `call_for_value_exn` errors (@talex5 mirage/capnp-rpc#230). The hidden information is now logged (at debug level) instead. - Configure TCP keep-alives for incoming connections, not just outgoing ones (@talex5 mirage/capnp-rpc#227). This is needed when the client machine crashes without resetting the connection. - Include version number in opam license field (@talex5 mirage/capnp-rpc#226).
…nix and capnp-rpc-lwt (1.1) CHANGES: - Update to latest X509, TCP and TLS APIs (@talex5 @hannesm mirage/capnp-rpc#228). - Add `Service.fail_lwt` convenience function (@talex5 mirage/capnp-rpc#229). - Remove confusing debug details from `call_for_value_exn` errors (@talex5 mirage/capnp-rpc#230). The hidden information is now logged (at debug level) instead. - Configure TCP keep-alives for incoming connections, not just outgoing ones (@talex5 mirage/capnp-rpc#227). This is needed when the client machine crashes without resetting the connection. - Include version number in opam license field (@talex5 mirage/capnp-rpc#226).
…nix and capnp-rpc-lwt (1.1) CHANGES: - Update to latest X509, TCP and TLS APIs (@talex5 @hannesm mirage/capnp-rpc#228). - Add `Service.fail_lwt` convenience function (@talex5 mirage/capnp-rpc#229). - Remove confusing debug details from `call_for_value_exn` errors (@talex5 mirage/capnp-rpc#230). The hidden information is now logged (at debug level) instead. - Configure TCP keep-alives for incoming connections, not just outgoing ones (@talex5 mirage/capnp-rpc#227). This is needed when the client machine crashes without resetting the connection. - Include version number in opam license field (@talex5 mirage/capnp-rpc#226).
@hannesm : I tried updating to the latest APIs, but now the tests are failing with:
What do I need to do to fix that?