我正在为我的网站获取SSL连接,这意味着我可以使用HTTPS访问它。这是我第一次做这样的事情,我想知道我需要在脚本上做的基本工作,以使其与新连接一起工作。
我的网站使用Cookie和会话。我还需要知道如何强制用户使用HTTPS而不是HTTP(即:如果用户使用HTTP,则重定向到HTTPS)。
谢谢。
答案 0 :(得分:0)
您可以在php中执行此操作,但实际上您将接受http连接,然后运行脚本并继续以编程方式发送重定向HTTP标头。
通常你所做的就是配置你正在使用的任何服务你的php应用程序(apache,nginx,...)进行重定向。
答案 1 :(得分:0)
您需要注意以下几项事项:
http://wiki.apache.org/httpd/NameBasedSSLVHosts
答案 2 :(得分:0)
您需要注意以下事项:
如果您只想强制使用SSL,请将您的http vhost配置为重定向
Redirect permanent / https://yourdomain.com
安全地配置您的https vhost,确保您知道您在密码套件方面做了些什么等等。这是一个示例配置(可能不是您需要的,但类似):
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
答案 3 :(得分:0)
如果您需要为特定网址强制使用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服务器之间的传输全部加密。