Re: mod_tls as experimental module?

2021-11-24 Thread Jim Jagielski
Add it in :-)

> On Nov 24, 2021, at 4:46 AM, ste...@eissing.org wrote:
> 
> Coming back to this. Since there was no feedback on my post: are people
> just too occupied/opposed/not interested?
> 
> Curious,
> Stefan
> 
>> Am 18.11.2021 um 18:48 schrieb ste...@eissing.org:
>> 
>> How would you feel about adding mod_tls 
>> (https://github.com/abetterinternet/mod_tls) as an experimental module to 
>> Apache httpd?
>> 
>> For people who have not followed that development:
>> - it is a TLS 1.2/1.3 implementation based on rustls, 
>> https://github.com/rustls/rustls
>> - the C API is rustls-ffi, found at https://github.com/rustls/rustls-ffi
>> - it is itself written in C, linking all the Rust things from the rustls-ffi 
>> library
>> - it does not bring any Rust into our code base
>> - functionality wise, it is a clear subset of what mod_ssl offers via openssl
>> (e.g. no client certificates now and not as tweakable - at least for now)
>> - it can be co-loaded and co-used with mod_ssl on different ports or 
>> front-/backend roles
>> - performance-wise, according to my plain vanilla tests, it is on par with 
>> mod_ssl
>> 
>> The decision to offer it downstream is of course then made by the distros, 
>> as usual with experimental modules. And if and how it is then used rests 
>> with the users. It is an offered alternative for people.
>> 
>> What would be the benefit to the project?
>> - we offer people an alternative. If they feel the memory safety that Rust 
>> offers is important to them, they can do it with Apache httpd for the TLS 
>> stack.
>> - we could see how people react to this and adapt our TLS offering 
>> accordingly. It being experimental, we remain free to change it. Or remove 
>> it again.
>> 
>> Organizational Things:
>> - the development was done by myself
>> - the work was sponsored by the ISRG (https://www.abetterinternet.org), the 
>> org behind Let's Encrypt, as part of they "memory safety" initiative 
>> (https://www.memorysafety.org)
>> 
>> 
>> Feedback appreciated,
>> 
>> Stefan
>> 
>> PS. On a more personal note:
>> The way this project turned out was a clean separation between C and Rust. 
>> The API offered by rustls-ffi is colored by Rust's immutability/borrowed 
>> memory concepts, but there is nothing Rust special the C code needs to do. 
>> It remains C code. It remains in our core competence.
>> 
>> Working with the rustls people has been nice and productive. The only thing 
>> I can report is that they come from the client TLS side and specific server 
>> needs require some explaining. There are things we can offer to them here.
>> 
>> There are a lot of political things going on right now around OpenSSL and I 
>> definitely want to stay out of that. Again, we can offer this without having 
>> to switch ourself. Even better, customers can use this without needing to 
>> switch completely, as it co-exists. I think that fits into the concepts our 
>> server is designed with.
>> 
>> Thanks for your time.
>> 
> 



Re: mod_tls as experimental module?

2021-11-24 Thread Graham Leggett
On 18 Nov 2021, at 19:48, ste...@eissing.org wrote:

> How would you feel about adding mod_tls 
> (https://github.com/abetterinternet/mod_tls) as an experimental module to 
> Apache httpd?

Having more choice is excellent.

> For people who have not followed that development:
> - it is a TLS 1.2/1.3 implementation based on rustls, 
> https://github.com/rustls/rustls
> - the C API is rustls-ffi, found at https://github.com/rustls/rustls-ffi
> - it is itself written in C, linking all the Rust things from the rustls-ffi 
> library
> - it does not bring any Rust into our code base
> - functionality wise, it is a clear subset of what mod_ssl offers via openssl
>  (e.g. no client certificates now and not as tweakable - at least for now)

Client certs is a must for me. I know that they’re political, but my clients in 
finance don’t care.

> - it can be co-loaded and co-used with mod_ssl on different ports or 
> front-/backend roles
> - performance-wise, according to my plain vanilla tests, it is on par with 
> mod_ssl
> 
> The decision to offer it downstream is of course then made by the distros, as 
> usual with experimental modules. And if and how it is then used rests with 
> the users. It is an offered alternative for people.
> 
> What would be the benefit to the project?
> - we offer people an alternative. If they feel the memory safety that Rust 
> offers is important to them, they can do it with Apache httpd for the TLS 
> stack.
> - we could see how people react to this and adapt our TLS offering 
> accordingly. It being experimental, we remain free to change it. Or remove it 
> again.
> 
> Organizational Things:
> - the development was done by myself
> - the work was sponsored by the ISRG (https://www.abetterinternet.org), the 
> org behind Let's Encrypt, as part of they "memory safety" initiative 
> (https://www.memorysafety.org)
> 
> 
> Feedback appreciated,

I lean towards adding it as an httpd subproject at this level:

https://svn.apache.org/viewvc/httpd/

This frees you from all the complexity around experimental bits of httpd 
compared to fully supported bits.

This means that practically, it can be packaged through channels like EPEL 
until it becomes stable, at which point the distros will pick it up.

It also insulates us against external dependencies like rust. Languages wax and 
wane, should a rust2 coming along, or another language called oxide that’s 
better, we’re not left with aging code in our codebase. This is a problem that 
APR solves for us for operating systems.

Regards,
Graham
—



Re: mod_tls as experimental module?

2021-11-24 Thread Mads Toftum
On Wed, Nov 24, 2021 at 11:19:17AM +0100, Yann Ylavic wrote:
> However what would be a discussion without a naming dispute, mod_rustls? :p

Agreed. At least as long as it's an experimental module. If it ever
moves beyond experimental, then a rename back to mod_tls might make
sense.

vh

Mads Toftum
-- 
http://flickr.com/photos/q42/


Re: mod_tls as experimental module?

2021-11-24 Thread Yann Ylavic
Hi Stefan,

sorry for the lateness..

On Wed, Nov 24, 2021 at 10:46 AM ste...@eissing.org  wrote:
>
> Coming back to this. Since there was no feedback on my post: are people
> just too occupied/opposed/not interested?

I looked at the code diagonally and it looks good to me (I like it and
the safety guarantees of rust), thanks for the good work!
+1 for experimental which will give us some margin.

However what would be a discussion without a naming dispute, mod_rustls? :p
(no strong opinion of course..).

Cheers;
Yann.


Re: mod_tls as experimental module?

2021-11-24 Thread ste...@eissing.org


> Am 24.11.2021 um 10:57 schrieb Joe Orton :
> 
> Possibly no strong opinions?  +1 from me anyway.
> 
> How hard is it going to be to test in Travis?

I have a test suite that can be added to our test/modules. Then
we need to bring the rust tool chain into the test image and
checkout/create the librustls.

I can start a docker image to see what that needs.

Kind Regards,
Stefan

> 
> On Wed, Nov 24, 2021 at 10:46:03AM +0100, ste...@eissing.org wrote:
>> Coming back to this. Since there was no feedback on my post: are people
>> just too occupied/opposed/not interested?
>> 
>> Curious,
>> Stefan
>> 
>>> Am 18.11.2021 um 18:48 schrieb ste...@eissing.org:
>>> 
>>> How would you feel about adding mod_tls 
>>> (https://github.com/abetterinternet/mod_tls) as an experimental module to 
>>> Apache httpd?
>>> 
>>> For people who have not followed that development:
>>> - it is a TLS 1.2/1.3 implementation based on rustls, 
>>> https://github.com/rustls/rustls
>>> - the C API is rustls-ffi, found at https://github.com/rustls/rustls-ffi
>>> - it is itself written in C, linking all the Rust things from the 
>>> rustls-ffi library
>>> - it does not bring any Rust into our code base
>>> - functionality wise, it is a clear subset of what mod_ssl offers via 
>>> openssl
>>> (e.g. no client certificates now and not as tweakable - at least for now)
>>> - it can be co-loaded and co-used with mod_ssl on different ports or 
>>> front-/backend roles
>>> - performance-wise, according to my plain vanilla tests, it is on par with 
>>> mod_ssl
>>> 
>>> The decision to offer it downstream is of course then made by the distros, 
>>> as usual with experimental modules. And if and how it is then used rests 
>>> with the users. It is an offered alternative for people.
>>> 
>>> What would be the benefit to the project?
>>> - we offer people an alternative. If they feel the memory safety that Rust 
>>> offers is important to them, they can do it with Apache httpd for the TLS 
>>> stack.
>>> - we could see how people react to this and adapt our TLS offering 
>>> accordingly. It being experimental, we remain free to change it. Or remove 
>>> it again.
>>> 
>>> Organizational Things:
>>> - the development was done by myself
>>> - the work was sponsored by the ISRG (https://www.abetterinternet.org), the 
>>> org behind Let's Encrypt, as part of they "memory safety" initiative 
>>> (https://www.memorysafety.org)
>>> 
>>> 
>>> Feedback appreciated,
>>> 
>>> Stefan
>>> 
>>> PS. On a more personal note:
>>> The way this project turned out was a clean separation between C and Rust. 
>>> The API offered by rustls-ffi is colored by Rust's immutability/borrowed 
>>> memory concepts, but there is nothing Rust special the C code needs to do. 
>>> It remains C code. It remains in our core competence.
>>> 
>>> Working with the rustls people has been nice and productive. The only thing 
>>> I can report is that they come from the client TLS side and specific server 
>>> needs require some explaining. There are things we can offer to them here.
>>> 
>>> There are a lot of political things going on right now around OpenSSL and I 
>>> definitely want to stay out of that. Again, we can offer this without 
>>> having to switch ourself. Even better, customers can use this without 
>>> needing to switch completely, as it co-exists. I think that fits into the 
>>> concepts our server is designed with.
>>> 
>>> Thanks for your time.
>>> 
>> 
> 



Re: mod_tls as experimental module?

2021-11-24 Thread Joe Orton
Possibly no strong opinions?  +1 from me anyway.

How hard is it going to be to test in Travis?

On Wed, Nov 24, 2021 at 10:46:03AM +0100, ste...@eissing.org wrote:
> Coming back to this. Since there was no feedback on my post: are people
> just too occupied/opposed/not interested?
> 
> Curious,
> Stefan
> 
> > Am 18.11.2021 um 18:48 schrieb ste...@eissing.org:
> > 
> > How would you feel about adding mod_tls 
> > (https://github.com/abetterinternet/mod_tls) as an experimental module to 
> > Apache httpd?
> > 
> > For people who have not followed that development:
> > - it is a TLS 1.2/1.3 implementation based on rustls, 
> > https://github.com/rustls/rustls
> > - the C API is rustls-ffi, found at https://github.com/rustls/rustls-ffi
> > - it is itself written in C, linking all the Rust things from the 
> > rustls-ffi library
> > - it does not bring any Rust into our code base
> > - functionality wise, it is a clear subset of what mod_ssl offers via 
> > openssl
> >  (e.g. no client certificates now and not as tweakable - at least for now)
> > - it can be co-loaded and co-used with mod_ssl on different ports or 
> > front-/backend roles
> > - performance-wise, according to my plain vanilla tests, it is on par with 
> > mod_ssl
> > 
> > The decision to offer it downstream is of course then made by the distros, 
> > as usual with experimental modules. And if and how it is then used rests 
> > with the users. It is an offered alternative for people.
> > 
> > What would be the benefit to the project?
> > - we offer people an alternative. If they feel the memory safety that Rust 
> > offers is important to them, they can do it with Apache httpd for the TLS 
> > stack.
> > - we could see how people react to this and adapt our TLS offering 
> > accordingly. It being experimental, we remain free to change it. Or remove 
> > it again.
> > 
> > Organizational Things:
> > - the development was done by myself
> > - the work was sponsored by the ISRG (https://www.abetterinternet.org), the 
> > org behind Let's Encrypt, as part of they "memory safety" initiative 
> > (https://www.memorysafety.org)
> > 
> > 
> > Feedback appreciated,
> > 
> > Stefan
> > 
> > PS. On a more personal note:
> > The way this project turned out was a clean separation between C and Rust. 
> > The API offered by rustls-ffi is colored by Rust's immutability/borrowed 
> > memory concepts, but there is nothing Rust special the C code needs to do. 
> > It remains C code. It remains in our core competence.
> > 
> > Working with the rustls people has been nice and productive. The only thing 
> > I can report is that they come from the client TLS side and specific server 
> > needs require some explaining. There are things we can offer to them here.
> > 
> > There are a lot of political things going on right now around OpenSSL and I 
> > definitely want to stay out of that. Again, we can offer this without 
> > having to switch ourself. Even better, customers can use this without 
> > needing to switch completely, as it co-exists. I think that fits into the 
> > concepts our server is designed with.
> > 
> > Thanks for your time.
> > 
> 



Re: mod_tls as experimental module?

2021-11-24 Thread ste...@eissing.org
Coming back to this. Since there was no feedback on my post: are people
just too occupied/opposed/not interested?

Curious,
Stefan

> Am 18.11.2021 um 18:48 schrieb ste...@eissing.org:
> 
> How would you feel about adding mod_tls 
> (https://github.com/abetterinternet/mod_tls) as an experimental module to 
> Apache httpd?
> 
> For people who have not followed that development:
> - it is a TLS 1.2/1.3 implementation based on rustls, 
> https://github.com/rustls/rustls
> - the C API is rustls-ffi, found at https://github.com/rustls/rustls-ffi
> - it is itself written in C, linking all the Rust things from the rustls-ffi 
> library
> - it does not bring any Rust into our code base
> - functionality wise, it is a clear subset of what mod_ssl offers via openssl
>  (e.g. no client certificates now and not as tweakable - at least for now)
> - it can be co-loaded and co-used with mod_ssl on different ports or 
> front-/backend roles
> - performance-wise, according to my plain vanilla tests, it is on par with 
> mod_ssl
> 
> The decision to offer it downstream is of course then made by the distros, as 
> usual with experimental modules. And if and how it is then used rests with 
> the users. It is an offered alternative for people.
> 
> What would be the benefit to the project?
> - we offer people an alternative. If they feel the memory safety that Rust 
> offers is important to them, they can do it with Apache httpd for the TLS 
> stack.
> - we could see how people react to this and adapt our TLS offering 
> accordingly. It being experimental, we remain free to change it. Or remove it 
> again.
> 
> Organizational Things:
> - the development was done by myself
> - the work was sponsored by the ISRG (https://www.abetterinternet.org), the 
> org behind Let's Encrypt, as part of they "memory safety" initiative 
> (https://www.memorysafety.org)
> 
> 
> Feedback appreciated,
> 
> Stefan
> 
> PS. On a more personal note:
> The way this project turned out was a clean separation between C and Rust. 
> The API offered by rustls-ffi is colored by Rust's immutability/borrowed 
> memory concepts, but there is nothing Rust special the C code needs to do. It 
> remains C code. It remains in our core competence.
> 
> Working with the rustls people has been nice and productive. The only thing I 
> can report is that they come from the client TLS side and specific server 
> needs require some explaining. There are things we can offer to them here.
> 
> There are a lot of political things going on right now around OpenSSL and I 
> definitely want to stay out of that. Again, we can offer this without having 
> to switch ourself. Even better, customers can use this without needing to 
> switch completely, as it co-exists. I think that fits into the concepts our 
> server is designed with.
> 
> Thanks for your time.
>