我正在为我的网站建立 SSL 连接,这意味着我可以使用 HTTPS 访问它。这是我第一次做这样的事情,我想知道我需要在我的脚本上做的基本事情,以使其在新连接中正常工作。
我的网站使用 cookie 和会话。我还需要知道我应该如何强制用户使用 HTTPS 而不是 HTTP(即:如果用户使用 HTTP,则重定向到 HTTPS)。
谢谢你。
您可以在 php 中执行此操作,但实际上您将接受 http 连接,然后运行脚本并继续以编程方式发送重定向 HTTP 标头。
通常,您所做的是配置您使用的任何内容,为您的 php 应用程序(apache、nginx、...)提供服务以进行重定向。
您需要注意以下几点:
http://wiki.apache.org/httpd/NameBasedSSLVHosts
您需要注意以下事项:
如果您只想强制 SSL,请将您的 http vhost 配置为重定向
Redirect permanent / https://yourdomain.com
安全地配置你的 https 虚拟主机,确保你知道你在做什么关于密码套装等。这是一个示例配置(可能不完全是你需要的,但类似):
SSLEngine on
Header set Strict-Transport-Security "max-age=8640000;includeSubdomains"
SSLProtocol -ALL +SSLv3 +TLSv1
SSLCipherSuite 'ECDHE-RSA-RC4-SHA:RC4+SHA1+RSA'
SSLCertificateFile path/to/your.crt
SSLCertificateKeyFile path/to/your.key
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
SSLCACertificateFile path/to/intermediate.ca
如果您需要对特定 URL 强制使用 SSL,那么您可以执行以下操作
使用特定模式重写端口 80 上的传入 URL;
RewriteCond %{REQUEST_URI} ^/PATH-YOU-WANT-TO-RESTRICT$
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R,L]
您还需要确保您的 apache 服务器正在侦听来自端口 443 的请求。这可以在您的 httpd.conf 文件中轻松完成;
Listen servername:443
您还需要在我们的 Apache 服务器上安装一个虚拟主机;
LoadModule ibm_ssl_module modules/mod_ibm_ssl.so
<VirtualHost servername:443>
SSLEnable
ServerName servername
SSLClientAuth None
ErrorLog /servername/conf/ssl/logs/https-error_log
RewriteEngine On
Include conf/vanity_rules/vanity_rewrite_rules.conf
KeyFile /servername/conf/ssl/yourkey.kdb
</VirtualHost>
此配置将确保浏览器和 Apache 服务器之间的传输全部加密。