我正在尝试设置启用客户端认证的 Apache 服务器。这样客户就可以使用有效的客户端证书访问内容。
假设我的服务器正在运行
https://myserver/myservice/
此外,我还需要向客户提供一个接口,通过向其提供一些身份验证信息来获取他们的客户端证书
https://myserver/myservice/register
一旦上传信息验证通过,它将返回客户端证书。
如果我理解正确的话,这个路径应该被排除在客户端认证机制之外,因为它用于生成证书。所以问题是,我该如何指定 httpd 配置来实现这一点?
我当前的配置如下:
ProxyPass /myservice/register http://localhost:4444/register
<Virtualhost *:443>
ServerName myserver
DocumentRoot /path/to/my/server/root
ProxyPass /myservice/ ajp://localhost:8009/myservice/
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /path/to/server.cert
SSLCertificateKeyFile /path/to/server.key
...
SSLVerifyClient require
SSLVerifyDepth 10
SSLCACertificateFile /path/to/ca.buddle.pem
</Virtualhost>
通过此配置,我可以从
http://myserver/myservice/register
然后使用它访问服务。但是,我没有设法将其设置为https,以便我可以关闭80端口。
答案1
现在我得到了解决方案,只需使用或排除目标 URL 路径。
<Virtualhost *:443>
ServerName myserver
DocumentRoot /path/to/my/server/root
ProxyPass /myservice/register http://localhost:4444/register
ProxyPass /myservice/ ajp://localhost:8009/myservice/
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /path/to/server.cert
SSLCertificateKeyFile /path/to/server.key
...
SSLVerifyClient require
SSLVerifyDepth 10
SSLCACertificateFile /path/to/ca.buddle.pem
<LocationMatch ^/myservice/register$>
SSLVerifyClient none
</LocationMatch>
</Virtualhost>