Thanks for your comments.

For TLS and the reverse proxy, I’m referring to three things:

1. I do not see how to enable or configure TLSv1.2 or 1.3 in the 
ccs-calendarserver configuration code. See, for example, the default 
configuration plist and the associated Python code:

<!-- SSL method: SSLv2_METHOD, SSLv3_METHOD, SSLv23_METHOD, or TLSv1_METHOD -->
<key>SSLMethod</key>
<string>SSLv23_METHOD</string>
https://github.com/apple/ccs-calendarserver/blob/15561ced74a7a45cfffa0610201b43179f6afa5c/contrib/conf/calendarserver.plist#L53-L55

2. I do not see how to specify Diffie-Hellman parameters for PFS. A search 
through the code doesn’t yield any hits, and it doesn’t appear to be a 
configuration key: 

https://github.com/apple/ccs-calendarserver/search?q=dhparam&unscoped_q=dhparam 
<https://github.com/apple/ccs-calendarserver/search?q=dhparam&unscoped_q=dhparam>

3. In my own Server.app version 3.7, Apache was used as a reverse proxy for 
Calendar and Contacts Server. I do not know what went into this design 
decision, but I inferred that this is related to configuring a central web 
server for Server.app that also provides the benefits of a reverse proxy.

Because of the issues mentioned above, I configured an nginx reverse proxy for 
a MacPorts port of Calendar and Contacts Server. Here’s the nginx.conf:

https://github.com/macports/macports-ports/pull/4978/files#diff-ec7e62c591a23b72c54b4eb10b089440

Yes, “isolate” is too strong for a reverse proxy (should say “help isolate”), 
but they do have several benefits, which may or may not also be a part of the 
ccs-calendarserver backend: mod_security, rate limiting, routing through a 
single exposed http/https port, and the like. I don’t know how to do any of 
this with the ccs-calendarserver code, but a lot of reasonable features like 
these are used in Server.app’s apache2 .conf files in its reverse proxy design.

If there’s a way to configure ccs-calendarserver to use native twisted 
capabilities, that would be good to have a for simplified setup without using 
an nginx front-end.

I also see that Twisted has already migrated to python3—ccs-calendarserver is 
still on Python 2.7 which is EOL in four months!—so python3 migration could be 
part of this.

Should ccs-calendarserver’s Twisted TLS config be raised as an issue at 
https://github.com/apple/ccs-calendarserver/issues 
<https://github.com/apple/ccs-calendarserver/issues> ?


> On Aug 8, 2019, at 11:31 PM, Glyph <gl...@twistedmatrix.com> wrote:
> 
> 
> 
>> On Aug 8, 2019, at 4:33 AM, Steven Smith <steve.t.sm...@gmail.com 
>> <mailto:steve.t.sm...@gmail.com>> wrote:
>> 
>> This port is completely independent of Server.app, and uses an nginx reverse 
>> proxy for modern crypto and to isolate the backend server. I have it 
>> deployed and it’s working well.
> 
> What 'modern crypto' are you referring to?  Twisted (upon which 
> CalendarServer is based) ought to be able to get an A+ on SSLLabs and use all 
> the most modern ciphersuites (including TLS 1.3).  I'm not up on 
> CalendarServer's configuration these days, but it should be possible to 
> adjust it to be as fancy and modern as it needs to be...
> 
> (I'm not sure what you mean by "isolating" the server?)
> 
> -glyph

_______________________________________________
calendarserver-users mailing list
calendarserver-users@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/calendarserver-users

Reply via email to