带有动态apache vhost的非通配符证书

时间:2017-01-13 13:17:26

标签: apache ssl vhosts lets-encrypt

我正在尝试动态读取SSL证书的位置,具体取决于用于连接到我的服务器的URL。我尝试了几种不同的方法,但似乎都没有。目前我有如下所述的配置

UseCanonicalName Off

listen 443

<VirtualHost *:443>
  ServerName example
  ServerAlias *

  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/%0/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/%0/privkey.pem

  VirtualDocumentRoot /var/www/vhosts/%-2/%-3+/public
</VirtualHost>

这里的问题是,当我启动apache时,我收到错误消息,说它无法找到ssl证书的文件位置,说明'/etc/letsencrypt/live/%0/cert.pem'

所以似乎%0没有被网址替换。

编辑:当我手动更换网址时只有%0,然后说网址已经工作了SSL

1 个答案:

答案 0 :(得分:0)

来自documentation

  

变量%0引用请求的服务器名称,如Host:header中所示。

Host标头是HTTP请求的一部分。 HTTP请求仅在成功进行TLS握手后才可用。此握手需要证书。因此,%0不能用于指定证书的路径。

我怀疑是否有任何其他变量可用于此目的,因为证书是在启动时加载的,因此文件名必须在开始时可用。