diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2018-10-06 11:45:01 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2018-10-06 11:45:01 +0300 |
commit | 4463698e4210bbf5d8c8cc152916bf8b52594141 (patch) | |
tree | 24bd011980a098623eb71d7d57543072ca0ae45d | |
parent | ab2566689e861fd9308ad986721400dee86f55ee (diff) | |
download | acmeman-4463698e4210bbf5d8c8cc152916bf8b52594141.tar.gz acmeman-4463698e4210bbf5d8c8cc152916bf8b52594141.tar.bz2 |
Support explicit declaration of server root directory in apache source configuration statement
* acmeman: Document apache source --server-root option.
* lib/App/Acmeman/Source/Apache.pm (new): Handle command line option.
Declare '--server-root' option.
(setup): Improve the SSLCipherSuite settings.
(probe): Bail out if unable to determine server root.
-rwxr-xr-x | acmeman | 8 | ||||
-rw-r--r-- | lib/App/Acmeman/Source/Apache.pm | 15 |
2 files changed, 19 insertions, 4 deletions
@@ -222,7 +222,7 @@ The B<null> module is an empty source. Command line arguments are ignored. Use this source if all domains are described in the configuration file. The B<apache> source module is the default. It scans B<httpd> configuration -files as described in section B<APACHE>. One argument is allowed. If supplied, +files as described in section B<apache>. One argument is allowed. If supplied, it defines the apache configuration layout. Allowed values are: B<debian>, B<slackware>, B<suse> and B<rh> (for Red Hat). Without arguments, the layout will be autodetected. @@ -365,7 +365,7 @@ setting. =head2 apache [core] - source = apache [LAYOUT] + source = apache [--server-root=DIR] [LAYOUT] This is the default source. It assumes Apache httpd, version 2.4 or later (although only minor changes are necessary to make it work with version 2.2). @@ -373,6 +373,10 @@ The optional I<LAYOUT> argument defines the layout of the apache configuration files. Allowed layout values are: B<debian>, B<slackware>, B<suse> and B<rh> (for Red Hat). If not supplied, the layout is determined automatically. +Use the B<--server-root> option to supply the name of the server root +directory, if for some reason the module is unable to determine it +automatically. + A special directory should be configured for receiving ACME challenges. The package provides two Apache macros: for serving ACME challenges and diff --git a/lib/App/Acmeman/Source/Apache.pm b/lib/App/Acmeman/Source/Apache.pm index 2041bb1..b429f89 100644 --- a/lib/App/Acmeman/Source/Apache.pm +++ b/lib/App/Acmeman/Source/Apache.pm @@ -9,10 +9,16 @@ use File::Spec; use IPC::Open3; use App::Acmeman::Apache::Layout; use parent 'App::Acmeman::Source'; +use Getopt::Long qw(GetOptionsFromArray :config gnu_getopt no_ignore_case); sub new { my $class = shift; - bless { _layout => new App::Acmeman::Apache::Layout(@_) }, $class; + my $server_root; + GetOptionsFromArray(\@_, + 'server-root=s' => \$server_root); + my $self = bless { _layout => new App::Acmeman::Apache::Layout(@_) }, $class; + $self->server_root($server_root) if $server_root; + return $self; } sub layout { shift->{_layout} } @@ -238,7 +244,7 @@ sub setup { SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLHonorCipherOrder on - SSLCipherSuite EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:EECDH+RC4:RSA+RC4:!MD5 + SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:!DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLCertificateFile /etc/ssl/acme/\$domain/cert.pem SSLCertificateKeyFile /etc/ssl/acme/\$domain/privkey.pem SSLCACertificateFile /etc/ssl/acme/lets-encrypt-x3-cross-signed.pem @@ -289,6 +295,11 @@ sub probe { } close $nullin; close $nullout; + unless ($self->server_root) { + ::error("can't deduce server root directory"); + ::error("use `source = apache --server-root=DIR' in [core] section of /etc/acmeman.conf to declare it"); + exit(1); + } } |