SSL连接的准备工作(HTTPS)

时间:2013-01-12 13:39:43

标签: php apache security http ssl

我正在为我的网站获取SSL连接,这意味着我可以使用HTTPS访问它。这是我第一次做这样的事情,我想知道我需要在脚本上做的基本工作,以使其与新连接一起工作。

我的网站使用Cookie和会话。我还需要知道如何强制用户使用HTTPS而不是HTTP(即:如果用户使用HTTP,则重定向到HTTPS)。

谢谢。

4 个答案:

答案 0 :(得分:0)

您可以在php中执行此操作,但实际上您将接受http连接,然后运行脚本并继续以编程方式发送重定向HTTP标头。

通常你所做的就是配置你正在使用的任何服务你的php应用程序(apache,nginx,...)进行重定向。

答案 1 :(得分:0)

您需要注意以下几项事项:

  1. 为HTTPS配置Apache。您需要安装SSL证书,并在端口443上为HTTPS创建新的虚拟主机。此页面提供了一个很好的示例:
  2. http://wiki.apache.org/httpd/NameBasedSSLVHosts

    1. 要通过HTTPS访问HTTP会话,您需要确保在HTTPS中使用与HTTP中相同的会话ID。有几种方法可以做到这一点,最常见的方法是在查询字符串中发送会话ID,然后使用session_id()在HTTPS页面上设置会话ID;

答案 2 :(得分:0)

您需要注意以下事项:

  • 获取该网站的专用IP地址(在任何正常情况下,您都不能拥有基于名称的虚拟SSL主机)
  • 获得高质量可信赖提供商的证书
  • 确保Apache可以处理SSL请求(openssl,mod_ssl)
  • 如果您只想强制使用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服务器之间的传输全部加密。