Unable to use a custom Acceptor
- Lingua principale
- Rust
- Stelle
- 24.8k
- Fork
- 1.9k
- Merge medio
- 23h 10m
- PR unite (30g)
- 26
Descrizione
I was trying to make an https server that would auto-generate ssl certificate with TLS-ALPN-01. There is a crate available that implements it: [rustls-acme](https://github.com/FlorianUekermann/rustls-acme), but it seems [impossible to use it with actix-web](https://github.com/FlorianUekermann/rustls-acme/issues/54), because of the limitations in what the `HttpServer` type exposes.
## Expected Behavior
The user can implement the binding between TCP connections and byte streams however they want, without being limited to a list of "officially supported" SSL implementations.
## Current Behavior
Currently, the only way to accept connections to an `HTTPServer` is to use one of these methods:
- [listen](https://docs.rs/actix-web/4.4.0/actix_web/struct.HttpServer.html#method.listen)
- [listen_auto_h2c](https://docs.rs/actix-web/4.4.0/actix_web/struct.HttpServer.html#method.listen_auto_h2c)
- [listen_openssl](https://docs.rs/actix-web/4.4.0/actix_web/struct.HttpServer.html#method.listen_openssl)
- [listen_rustls](https://docs.rs/actix-web/4.4.0/actix_web/struct.HttpServer.html#method.listen_rustls)
- [listen_rustls_0_21](https://docs.rs/actix-web/4.4.0/actix_web/struct.HttpServer.html#method.listen_rustls_0_21)
- [listen_uds](https://docs.rs/actix-web/4.4.0/actix_web/struct.HttpServer.html#method.listen_uds)
Looking at their source code, there seems to be some code duplication between them.
And having to support two different versions of rustls independently inside of actix-web itself also seems sub-optimal.
## Possible Solution
Define a public `Acceptor` trait, implement it for openssl's SslAcceptor and rustl's ServerConfig, and maybe on any function that returns a `Stream` ?
## Context
I want [SQLPage](https://github.com/lovasoa/SQLpage) to offer HTTPS support with completely transparent certificate management.
Guida per i contributori
Apri la guida per i contributori
Valutazione
Questa issue non è ancora stata valutata.