我正在尝试根据用于连接到我的服务器的 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>
这里的问题是,当我启动 apache 时,我收到一条错误消息,指出它找不到 ssl 证书的文件位置,说明 '/etc/letsencrypt/live/%0/cert.pem'
所以 %0 似乎没有被 url 替换。
编辑:当我只用 url 手动替换 %0 时,然后说 url 有工作 SSL
最佳答案
来自documentation :
The variable %0 references the requested servername, as indicated in the Host: header.
主机 header 是 HTTP 请求的一部分。 HTTP 请求仅在 TLS 握手成功后可用。此握手需要证书。因此,%0
不能用于指定证书的路径。
我怀疑任何其他变量是否可以用于此目的,因为证书是在启动时加载的,因此文件名必须在启动时就已经可用。
关于apache - 具有动态 apache vhosts 的非通配符证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41635535/