编程中http和https有什么区别

时间:2013-02-16 17:13:24

标签: html http https

我只知道“s”代表“安全”,用户不应该在仅使用http的网站上输入关键信息。但我真的想知道这两个协议对我的编程有什么影响,例如:

  • 某些网站如何获得“https”而某些网站没有(或者他们如何打开和关闭此功能,我不知道)。这是否意味着我必须在某处注册?

  • 我当时认为http中的通信没有加密,而某些加密可能会在https中进行,这是正确的吗?

  • 因为加密(如果有的话)过程是由浏览器完成的,因此我的服务器端代码与“http”或“https”无关,是否正确?

  • 有没有办法强制用户只使用https?

2 个答案:

答案 0 :(得分:8)

  • 使用HTTPS协议的网站使用由受信任的第三方(或“证书颁发机构”)颁发的证书,该证书包含公钥(请参阅:Public Key Infrastructure)。公钥与私钥配对,用私钥加密的信息只能用公钥解密。这用于确认服务器是私钥的持有者(因此是证书颁发机构认证的实体)。要使用HTTPS协议,您必须生成或购买证书。由于各种原因,购买证书而不是生成证书更为常见。

  • HTTPS通信已加密。与证书关联的密钥不进行加密,而是浏览器和服务器使用诸如Diffie-Hellman Exchange之类的方案来生成用于加密通信的密钥。这很重要,因为拥有公钥的任何人都可以解密使用私钥加密的内容。

  • 浏览器发送的信息由浏览器加密并由服务器解密。您的Web服务器软件将解密信息;收到的信息与标准HTTP流量没有什么不同。

  • 是的,您可以强制使用HTTPS。您可以通过服务器软件(例如Apache中的RewriteRuleRewriteCond检查HTTPS)或通过HSTS(包括发送特定标头)来执行此操作。如果您在支持HSTS的浏览器中发送HSTS标头,浏览器将自动从HTTP重定向到HTTPS(请参阅:HTTP Strict Transport Security)。

答案 1 :(得分:4)

您需要在网络服务器上安装SSL证书才能启用HTTPS。这将允许在客户端浏览器和服务器之间建立加密连接,并且将加密所有HTTP流量。此证书由受信任的机构颁发。您还可以生成用于测试目的的证书,但是当客户端浏览器导航到该网站时,它将发出警告,指出该证书不是由受信任的机构颁发的。

您可以通过将Web服务器配置为自动将所有HTTP请求重定向到相应的HTTPS端点来强制使用HTTPS。

您可以查找SSL/TLS