【发布时间】:2015-03-04 06:37:19
【问题描述】:
尝试在两台生产服务器之间建立双向 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>
我在 .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>
Laravel 路由仍在接受来自根本不使用证书或证书满足 SSL_CLIENT_S_DN_O 要求的机器的连接。似乎 mod_rewrite 优先于 Directory ssl 要求。提前感谢您提供任何基本建议。任何想法都非常感谢。
【问题讨论】:
-
我是 PHP 的 2-way ssl 新手。您是否建议两台机器之间的双重 ssl 握手可以发生在 php 应用程序代码内部而不是服务器级别?
标签: php apache .htaccess laravel ssl