如何在Apache中将专用证书分配给代理通行证的子目录



我想将"/"和/sub-dir"代理到不同的目标。

OK–在块中放入两个ProxyPass和ProxyPassReverse命令即可。

但我需要为每个子目录提供不同的*SSLCertificateFile、SSLCertificateChainFile、SSLCertificationKeyFile、SSLVerifyClient和SSLACertificateFile。

在一个块中使用SSLCertificateFile是不允许的,并且当使用两个块(在第一个块中有ProxyPass子目录(时,"/"不是代理传递的(获得"未知授权机构签名的证书"错误-禁用第一个块时,它起作用(

(*monitoring*是网站的LetsEncrypt,ca_user.crt=自签名用于网站的一般客户端身份验证,server_monitoring*和相应的ca_monitoring.crt用于物联网设备=自签名(

<VirtualHost 0.0.0.0:443>
ServerName my-domain
ServerAlias www.my-domain
ProxyPass  http://sub-dir http://target1:3000 retry=5 keepalive=on Timeout=3600
ProxyPassReverse  http://sub-dir target1:3000
ProxyPass  http://sub-dir2 http://target2:3000 retry=5 keepalive=on Timeout=3600
ProxyPassReverse  http://sub-dir2 target2:3000
SSLCertificateFile conf/monitoring.crt
SSLCertificateKeyFile conf/monitoring.key
SSLVerifyClient on
SSLCACertificateFile conf/ca_user.crt
</VirtualHost>
<VirtualHost 0.0.0.0:443>
ServerName my-domain
ProxyPass / http://pushprox:8081/ retry=5
ProxyPassReverse / http://pushprox:8081/
SSLCertificateFile conf/server_monitoring.crt
SSLCertificateChainFile conf/ca_monitoring.crt
SSLCertificateKeyFile conf/server_monitoring.key
SSLVerifyClient on
SSLCACertificateFile conf/ca_monitoring.crt
</VirtualHost>

因为在TLS握手之前只传输子域(SNI(,而不是完整的URL,所以服务器无法决定使用哪个CA。因此,不可能为每个子目录使用专用CA。有了ALPN,这是可能的,但问题只是关于URL。

最新更新