代码之家  ›  专栏  ›  技术社区  ›  Viletung

从SSLVerifyClient require排除路径

  •  -1
  • Viletung  · 技术社区  · 7 年前

    我让apache2.4.18(Ubuntu)作为反向代理运行。为了保护我的个人环境,我添加了 SSLVerifyClient require 到目前为止没有问题。

    但是,Jira希望访问自己来加载一些语言字符串。根据吉拉的记录 https://{DOMAIN_URL}/rest/gadgets/1.0/g/messagebundle/nl_NL/gadget.common%2Cgadget.project 哪里 gadget.common%2Cgadget.project

    好的,很好。所以为了解决这个问题,我想让Jira可以使用这个URL,因此跳过SSLVerifyClient,只针对这个特定的URL。

    我的当前配置:

    <VirtualHost *:80>
        ServerName {DOMAIN}
        Redirect permanent / https://{DOMAIN}
    </VirtualHost>
    
    <IfModule mod_ssl.c>
        <VirtualHost *:443>
            ServerAdmin info@{DOMAIN}
            ServerName {DOMAIN}
    
            <Location / >
                Options FollowSymLinks
                    AllowOverride None
            </Location>
    
            Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"
    
            SSLEngine       on
            SSLCompression      Off
            SSLProtocol         ALL -SSLv2 -SSLv3
            SSLHonorCipherOrder     On
            SSLCipherSuite      EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
            SSLCertificateFile  {SSL}/fullchain.pem
            SSLCertificateKeyFile   {SSL}/privkey.pem
    
            SSLCACertificateFile    {PATH}/ca.crt
            SSLVerifyClient     require
            SSLStrictSNIVHostCheck  on
            SSLVerifyDepth      1
    
            ProxyPreserveHost On
            ProxyRequests off
            ProxyPass / http://localhost/
            ProxyPassReverse / http://localhost/
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
        </VirtualHost>
    
    # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
    </IfModule>
    

    SSLVerifyDepth 1

    <Directory "/rest/gadgets">
        SSLVerifyClient      none
    </Directory>
    

    <Location /rest/gadgets>
            SSLVerifyClient none
    </Location>
    

    不过我查过了 https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html (客户端身份验证和访问控制),但是两者都不起作用。我不太确定,但我可能知道 Location Directory 不是正确的。我想让它具有通用性,只需检查URL的第一部分是否包含 /rest/gadgets .

    我希望我的问题有点清楚。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Viletung    7 年前

    这似乎是对我问题的回答:

    <VirtualHost *:80>
        ServerName {DOMAIN}
        Redirect permanent / https://{DOMAIN}
    </VirtualHost>
    
    <IfModule mod_ssl.c>
        <VirtualHost *:443>
            ServerAdmin info@{DOMAIN}
            ServerName {DOMAIN}
    
            Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;"
    
            SSLEngine       on
            SSLCompression      Off
            SSLProtocol         ALL -SSLv2 -SSLv3
            SSLHonorCipherOrder     On
            SSLCipherSuite      EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
                SSLCertificateFile  {SSL}/fullchain.pem
                SSLCertificateKeyFile   {SSL}/privkey.pem
    
            SSLCACertificateFile    {PATH}/ca.crt
            SSLStrictSNIVHostCheck  on
    
            <Location / >
                SSLVerifyClient     require 
                SSLVerifyDepth      1
    
                Options FollowSymLinks
                    AllowOverride None
            </Location>     
    
            <Location /rest/gadgets>
                    SSLVerifyClient none
            </Location>
    
            ProxyPreserveHost On
            ProxyRequests off
            ProxyPass / http://localhost/
            ProxyPassReverse / http://localhost/
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
        </VirtualHost>
    
    # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
    </IfModule>
    

    诀窍是延长电流 Location 然后移动 SSLVerifyClient . 之后添加一个额外的 -具有排除路径的指令, rest/gadgets

    推荐文章