-1

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

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

谢谢你。

4

4 回答 4

0

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

通常,您所做的是配置您使用的任何内容,为您的 php 应用程序(apache、nginx、...)提供服务以进行重定向。

于 2013-01-13T00:08:00.507 回答
0

您需要注意以下几点:

  1. 为 HTTPS 配置 Apache。您将需要安装 SSL 证书,并在端口 443 上为 HTTPS 创建一个新的虚拟主机。此页面有一个很好的示例说明如何执行此操作:

http://wiki.apache.org/httpd/NameBasedSSLVHosts

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

您需要注意以下事项:

  • 为自己获取该网站的专用 IP 地址(在任何正常情况下,您都不能拥有基于名称的虚拟 SSL 主机)
  • 从高质量的可信赖提供商处获得证书
  • 确保 Apache 可以处理 SSL 请求(openssl、mod_ssl)
  • 如果您只想强制 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
    
于 2013-01-14T15:19:29.800 回答
0

如果您需要对特定 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 服务器之间的传输全部加密。

于 2013-01-14T15:22:55.903 回答