actix / actix/actix-web

Unable to use a custom Acceptor

Abierto
#3,200 2 comentarios 4 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Rust
Estrellas
24.8k
Forks
1.9k
Merge medio
23 h 10 min
PR fusionados (30 d)
26

Descripción

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.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.