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

Fen*_*nek 5 apache ssl vhosts lets-encrypt

我正在尝试根据用于连接到我的服务器的 url 动态读取 SSL 证书的位置。我尝试了几种不同的方法,但似乎都不起作用。目前我的配置如下所示

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>
Run Code Online (Sandbox Code Playgroud)

这里的问题是,当我启动 apache 时,出现错误,提示找不到 ssl 证书的文件位置,该证书声明“/etc/letsencrypt/live/%0/cert.pem”

所以看起来 %0 没有被 url 替换。

编辑:当我手动仅用 url 替换 %0 时,则表示 url 具有有效的 SSL

Ste*_*ich 2

文档中:

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

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

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