Add support for HTTPS Client Authentication

I'm running some sites that require client authentication via Certificate Login, where the server must also authenticate the client in addition to the client authenticating the server.

To get the necessary configuration injected into the vhost configuration, I believe the best way to handle this would be to add a checkbox to each Site node. If it's checked and HTTPS is enabled or required, inject the configuration.

We're going to need storage for each site's flag. I'm planning to add a new boolean column to the hosting_https_site table entitled client_authentication, both in the hook_update_N and via the installation schema. The default value will be zero, with 1 getting set if enabled. If anyone has any issues with this, let me know.

As I'm currently only interested in Nginx, I won't be injecting Web server vhost configuration for Apache (at least initially, but patches welcome). The help text for the checkbox will read:

Check this box to allow for server authentication of clients in addition to clients authenticating the server. It should only be enabled if required by the hosted site (e.g. if using the Certificate Login module), or users will needlessly be asked to present identity certificates if they have them. This will only work if HTTPS is enabled or required, and your Web server module for Aegir HTTPS supports it.

Edited Oct 30, 2017 by Colan Schwartz
Assignee Loading
Time tracking Loading