Apache SSLRequire文件表达式

Apache SSLRequire文件表达式,apache,mod-ssl,Apache,Mod Ssl,我对Apache2.4中的SSLRequire文件表达式有一个问题,因为它似乎找不到或无法访问有问题的文件 以下是代码摘录: <Location /> SSLOptions +StrictRequire SSLRequireSSL SSLRequire (%{SSL_CLIENT_CERT} eq file("<full_path_to_PEM_file>")) <

我对Apache2.4中的SSLRequire文件表达式有一个问题,因为它似乎找不到或无法访问有问题的文件

以下是代码摘录:

<Location />    
                SSLOptions +StrictRequire
                SSLRequireSSL
                SSLRequire (%{SSL_CLIENT_CERT} eq file("<full_path_to_PEM_file>"))
</Location>

S开发+严格要求
SSLRequireSSL
SSLRequire(%%{SSL\U客户端\U证书}eq文件(“”)
当我尝试访问该站点时,在日志中会出现以下错误:

[Tue Jun 27 13:20:02.358478 2017] [ssl:error] [pid 18661:tid 47040594310912] [client 82.69.3.205:58275] Evaluation of expression from 20-mod_ssl.conf:240 failed: Cannot open file <full_path_to_PEM_file>, referer: https://example.com/
[Tue Jun 27 13:20:02.358478 2017][ssl:error][pid 18661:tid 47040594310912][client 82.69.3.205:58275]对来自20-mod_ssl.conf的表达式的求值失败:无法打开文件,请参考:https://example.com/
权限是正确的,文件肯定存在,所以我不确定在这里还能做什么

PEM文件是有效的公共证书,在开始和结束处有“开始证书”和“结束证书”行


有什么想法吗?

您的虚拟主机应该是:

<VirtualHost *:443>
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/html/example

    ServerName example.com

    SSLEngine on

    SSLCertificateFile /etc/ssl/CA/example_com.crt
    SSLCertificateKeyFile /etc/ssl/CA/example.key

    # https://support.comodo.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1203&nav=0,96,1,95
    SSLCertificateChainFile /etc/ssl/CA/chain_example_with_Positive.pem

    SSLHonorCipherOrder On
    SSLProtocol -all +TLSv1 +SSLv3
    SSLCipherSuite RC4-SHA:HIGH:!MD5:!aNULL:!EDH:!ADH
    SSLInsecureRenegotiation off

    <Directory /example/>
            Options Indexes SymLinksIfOwnerMatch
            AllowOverride All
            Require all granted
    </Directory>
    <Directory /var/www/html/example/>
            Options Indexes SymLinksIfOwnerMatch
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown    
</VirtualHost>

服务器管理员webmaster@example.com
DocumentRoot/var/www/html/example
ServerName example.com
斯伦金安
SSLCertificateFile/etc/ssl/CA/example_com.crt
SSLCertificateKeyFile/etc/ssl/CA/example.key
# https://support.comodo.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1203&nav=0,96,1,95
SSLCertificateChainFile/etc/ssl/CA/chain\u示例\u带\u Positive.pem
SSLHonorCipherOrder开启
SSLProtocol-全部+TLSv1+SSLv3
SSLCI RC4-SHA:高:!MD5:!阿努尔:!埃德:!ADH
SSL安全协商关闭
选项索引SYMBLINKSIFOwnerMatch
允许超越所有
要求所有授权
选项索引SYMBLINKSIFOwnerMatch
允许超越所有
命令允许,拒绝
通融
ErrorLog${APACHE_LOG_DIR}/error.LOG
SetEnvIf用户代理“*MSIE.*”无保留ssl未清理关闭

谢谢,但这不是我要问的。根据您的回答,我已经安装了公钥和私钥-这不是问题。我试图为客户端添加一个附加的身份验证层,以便在连接之前提供证书。这是通过SSLRequire选项和SSLOptions+StrictRequire实现的。我的问题是关于文件表达式,它似乎不适用于SSLRequire…好的。。。您是否注意到错误显示“无法打开文件”?这意味着根本没有名为
的文件无法打开文件
是的,就像我在原始帖子中说的那样……”权限是正确的,文件肯定存在”先生。。。如果你想解决你的具体问题,你不需要提供准确的输出。。。不显示密码。。。但是其他的…但是再一次,输出在最初的问题中-没有其他东西可以显示。。