aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2018-10-06 11:45:01 +0300
committerSergey Poznyakoff <gray@gnu.org>2018-10-06 11:45:01 +0300
commit4463698e4210bbf5d8c8cc152916bf8b52594141 (patch)
tree24bd011980a098623eb71d7d57543072ca0ae45d
parentab2566689e861fd9308ad986721400dee86f55ee (diff)
downloadacmeman-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-xacmeman8
-rw-r--r--lib/App/Acmeman/Source/Apache.pm15
2 files changed, 19 insertions, 4 deletions
diff --git a/acmeman b/acmeman
index 83519f7..ea9198a 100755
--- a/acmeman
+++ b/acmeman
@@ -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);
+ }
}

Return to:

Send suggestions and report system problems to the System administrator.