Php 特定Laravel路由上的Laravel和双向SSL
正在尝试在两台生产服务器之间建立双向SSL连接。客户机将使用证书连接到Laravel路由,并传递xml负载。生产机器上的apache服务器和客户端机器之间应该有双向ssl握手 我正在生产计算机上使用此apache目录设置: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
<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应用程序代码内部进行,而不是在服务器级别?