Php 特定Laravel路由上的Laravel和双向SSL

Php 特定Laravel路由上的Laravel和双向SSL,php,apache,.htaccess,laravel,ssl,Php,Apache,.htaccess,Laravel,Ssl,正在尝试在两台生产服务器之间建立双向SSL连接。客户机将使用证书连接到Laravel路由,并传递xml负载。生产机器上的apache服务器和客户端机器之间应该有双向ssl握手 我正在生产计算机上使用此apache目录设置: <Directory /var/www/vhosts/subdomain/html/routename> SSLVerifyClient require SSLVerifyDepth 5 SSLOptions

正在尝试在两台生产服务器之间建立双向SSL连接。客户机将使用证书连接到Laravel路由,并传递xml负载。生产机器上的apache服务器和客户端机器之间应该有双向ssl握手

我正在生产计算机上使用此apache目录设置:

<Directory /var/www/vhosts/subdomain/html/routename>
    SSLVerifyClient      require
    SSLVerifyDepth       5
    SSLOptions           +FakeBasicAuth
    SSLRequireSSL
    SSLRequire       %{SSL_CLIENT_S_DN_O} eq "company name"
    SSLCipherSuite    ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLOptions +StdEnvVars +ExportCertData +OptRenegotiate
</Directory>

SSLVerifyClient要求
SSLVerifyDepth 5
发展+伪造
SSLRequireSSL
SSLRequire%{SSL_客户端_S_DN_O}eq“公司名称”
SSLCipherSuite全部:!ADH:!出口56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLOptions+StdEnvVars+ExportCertData+OptRenegotiate
我在.htaccess中设置了以下内容

<IfModule mod_rewrite.c>
    <IfModule mod_rewrite.c>
        SSLOptions +StdEnvVars
        SSLOptions +ExportCertData

    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

发展+标准
SSLOptions+ExportCertData
选项-多视图
重新启动发动机
#重定向尾部斜杠。。。
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]

Laravel路由仍在接受来自根本不使用证书或证书满足SSL\u客户端\u DN\O要求的计算机的连接。似乎mod_重写优先于目录ssl要求。提前感谢您提供的所有基本建议。非常感谢您的任何想法

我放弃了这个选择

Laravel的工作原理是通过隐藏的.htaccess文件中的“重写”来劫持URL。如果url位置确实存在,则apache将在文件系统上处理该脚本。如果文件系统上不存在url位置,则重写将通过Laravel的控制器(routes.php)、进程和返回路由请求

apache位置和目录指令使用特定文件系统位置中的特定脚本。我需要这些指令来保护某些脚本不被执行,除非访问者出示特定的SSL客户端证书。这种架构基本上与Laravel的结构不兼容


作为解决办法,我在实际的文件系统位置创建了特定的脚本(php文件),使用apache location指令对它们进行保护,并将传入的请求转发到Laravel routes,这些路由预期来自localhost的请求。

我是php双向ssl新手。您是否建议两台机器之间的双重ssl握手可以在php应用程序代码内部进行,而不是在服务器级别?