【问题标题】:How to configure multiple SSL certs on Apache virtual host with aliases?如何使用别名在 Apache 虚拟主机上配置多个 SSL 证书?
【发布时间】:2017-06-18 04:48:31
【问题描述】:

我有一个使用相同代码在多个国家/地区域上运行的网络应用程序。 Apache 配置了别名。除了配置单个 SSL-certs 之外,这是可行的:

    ServerAlias *.server-at
    ServerAlias *.server-ch
    ServerAlias *.server-es

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/rex.server-de.crt
    SSLCertificateKeyFile /etc/ssl/private/rex.server-de.key

apache2 是否可以在虚拟主机容器内配置多个 SSL 证书?

【问题讨论】:

    标签: apache ssl certificate apache2 virtualhost


    【解决方案1】:

    您可以使用虚拟主机轻松配置各个证书,以通过ServerName 区分每个域的请求。例如

    listen 443
    
    <VirtualHost *:443>
        ServerName rex.server.de:443
        SSLEngine on
        SSLCertificateFile " /etc/ssl/certs/rex.server-de.crt"
        SSLCertificateKeyFile " /etc/ssl/certs/rex.server-de.key"
    </VirtualHost>
    
    <VirtualHost *:443>
        ServerName rex.server.at:443
        SSLEngine on
        SSLCertificateFile " /etc/ssl/certs/rex.server-at.crt"
        SSLCertificateKeyFile " /etc/ssl/certs/rex.server-at.key"
    </VirtualHost> 
    

    【讨论】:

    • 是的,这是可能的。但是,有几个配置选项需要复制。我正在寻找一个更“优雅”的解决方案,我可以添加数十个别名而不是数十个 VH。
    • 证书的主机名必须与服务器的 ServerName 匹配。使用别名服务与配置的证书主机名不匹配的请求将被浏览器拒绝。每个虚拟主机可以配置一个证书,并且不能使用通配符,因为你的域后缀不同,所以恐怕你需要每个域配置一个虚拟主机
    • 对于 OP 来说可能为时已晚,但如果您有相同的选项需要放入多个 VH 中,您可以将它们放入一个包含文件并包含来自不同 VH 的相同包含文件。这样每个 VH 将有不同的 ServerNames 和证书,并且只有一个 Include 指令。
    • 我一直在摆弄这个几天,这个工作!谢谢!对于来这里尝试为 RocketChat 设置加密的其他人:我的秘密是(1)删除ReverseProxyPass 行和(2)使用ServerName chat.example.com:443
    • 请注意,如果您有像&lt;VirtualHost _default_:443&gt; 这样的默认ssl,那么您可能需要在其中添加ServerName whatever。是的,它实际上可以是whatever。如果某些 VH 中没有添加服务器名称,您会得到奇怪的结果。
    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 2010-09-21
    • 2013-01-27
    • 2017-05-22
    • 2018-07-18
    • 2019-04-21
    • 2018-03-27
    • 2015-02-01
    相关资源
    最近更新 更多