我为特定的子文件夹生成了具有客户端身份验证的wamp服务器:
现在,我想通过使用https://www.domain.com/subdomain/app1来访问我的站点而不是https://app1.domain.com
当我试图访问url时,我确实会被要求选择客户端证书,但是当我选择匹配的证书时,错误403将被禁止。
当我使用OpenSSL生成我的证书时,我使用*.domain.com作为服务器密钥的CN。
以下是httpd-ssl.conf中的虚拟主机定义:
<VirtualHost *:443>
ServerName www.domain.com:443
DocumentRoot "c:/wamp/www"
ServerAdmin admin@domain.com
ErrorLog "C:/wamp/bin/apache/apache2.4.9/logs/ssl_error.log"
TransferLog "C:/wamp/bin/apache/apache2.4.9/logs/ssl_access.log"
SSLEngine on
SSLVerifyClient require
SSLVerifyDepth 10
SSLCertificateFile "C:\wamp\bin\apache\apache2.4.9\conf\cert\server.cer"
SSLCertificateKeyFile "C:\wamp\bin\apache\apache2.4.9\conf\cert\server.key"
SSLCACertificateFile "C:\wamp\bin\apache\apache2.4.9\conf\cert\ca.cer"
<LocationMatch ^(?=.*/subomain/app1/)(?!.*/subdomain/app1/service).*>
SSLRequire %{SSL_CLIENT_S_DN_CN} eq "App1Key"
</LocationMatch>
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
BrowserMatch "MSIE [2-5]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
CustomLog "c:/wamp/bin/apache/apache2.4.9/logs/ssl_request.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>此外,我还创建了这个vhosts.conf以允许subdomain.domain.com
<VirtualHost *:80>
ServerName www.domain.com
ServerAlias *.domain.com
VirtualDocumentRoot "C:\wamp\www\demo\%1"
ErrorLog "logs\errors.log"
<directory "C:\wamp\www\demo\%1">
Options FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from all
</directory>
</VirtualHost>更新
我已经根据答案向ssl.conf添加了以下代码,但是现在客户端证书总是有效的,它忽略了LocationMatch的条件
<directory "C:\wamp\www\demo\%1">
Options FollowSymLinks
AllowOverride all
Order Deny,Allow
Deny from all
Allow from all
</directory>让我说,我想拥有与subdomain.domain.com等价的条件
<LocationMatch ^(?=.*/subomain/app1//)(?!.*/subomain/app1//service).*>
#SSLOptions +StdEnvVars +ExportCertData
SSLRequire %{SSL_CLIENT_S_DN_CN} eq "Shob"
</LocationMatch>发布于 2016-12-17 20:43:33
禁止使用403的不是您的SSL设置。
在<VirtualHost>块的末尾添加以下内容(尽管放在</VirtualHost>之前只是一个首选项),以授予访问虚拟主机的DocumentRoot文件夹的权限:
<Directory "c:/wamp/www">
Order allow, deny
Allow from all
</Directory>或者如果您正在使用Apache 2.4或更高版本:
<Directory "c:/wamp/www">
Require all granted
</Directory>您还应该检查之前的<Directory>块中是否还有其他内容,并将其也带进来。例如,您可能需要AllowOverride或设置一些Options,但上面的内容将解决您想要解决的问题。
https://stackoverflow.com/questions/41201066
复制相似问题