如何让 apache2 在端口 443 和非默认端口上提供 HTTPS 服务?

如何让 apache2 在端口 443 和非默认端口上提供 HTTPS 服务?

我希望我的apache2实例在默认端口 443 上提供 HTTPS(简单页面或任何内容)服务,例如用于letsencrypt证书安装客户端,并在其他端口(例如端口 446)上提供多项服务(wiki、问题跟踪器等)dokuwiki

在端口 443 上启用 HTTPS(见下文)之前,为多个服务提供这些非默认端口的服务效果很好,站点配置如下

Listen 0.0.0.0:446 https

Alias /dokuwiki/ "/var/www/html/dokuwiki/"

DirectoryIndex index.php index.html index.htm

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php .htm .html

<Directory "/var/www/html/dokuwiki">
    Options None
    AllowOverride Limit

    Require all granted
</Directory>

<VirtualHost [hostname]:446 >
    ErrorLog /var/log/dokuwiki/dokuwiki.log
    SSLEngine On
    DocumentRoot "/var/www/html/dokuwiki"
    ServerName [hostname]
    SSLCertificateFile /etc/letsencrypt/live/[hostname]/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/[hostname]/privkey.pem
</VirtualHost>

Listen 443在 中启用/etc/apache2/ports.conf、打开SSLEngine on/etc/apache2/sites-enabled/default-ssl.conf指定 SSL 证书和密钥SSLCertificateFileSSLCertificateKeyFiledokuwiki将在端口 443 上使用 HTTPS 提供服务,而 446 不再提供 HTTPS 服务,而是apache2根据 使用端口netstat -tupln

/etc/apache2/sites-available/default-ssl.conf

<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin admin@[hostname]

                DocumentRoot /var/www/html

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                SSLEngine on

                SSLCertificateFile /etc/letsencrypt/live/[hostname]/fullchain.pem
                SSLCertificateKeyFile /etc/letsencrypt/live/[hostname]/privkey.pem

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>

        </VirtualHost>
</IfModule>

我猜是dokuwiki因为端口 443 上提供服务,因为它与目录结构相匹配。我必须弄清楚如何关闭它,但这是另一个问题。我不明白为什么 446 不再提供服务(firefox显示 47.0SSL_ERROR_RX_RECORD_TOO_LONG并表示该网站根本不提供 HTTPS,并且dokuwiki网站日志包含的[Thu Jul 21 14:42:48.803900 2016] [ssl:info] [pid 13028] AH01914: Configuring server richtercloud.de:443 for SSL protocol内容没有任何意义)。这是一个错误吗?

我发现https://serverfault.com/questions/528210/bind-apache-ssl-port-with-different-port-with-same-openssl-port-443,但那里的解决方案是我的问题。

我正在使用 Ubuntu 16.04。

答案1

使用上述设置后,现在一切都运行正常。此行为可能是由于firefox缓存加载无用所致。

相关内容