我只知道“s”代表“安全”,用户永远不应该在仅使用 http 的网站上输入关键信息。但我真的想知道这两个协议对我的编程有何影响,例如:
有些网站如何获得“https”,而有些网站却没有(或者他们如何打开和关闭此功能,我不知道)。这是否意味着我必须在某个地方注册它?
我心想,http 中的通信没有加密,而 https 中可能会进行一些加密,这是正确的吗?
并且由于加密(如果有)过程是由浏览器完成的,因此,我的服务器端代码与“http”或“https”无关,是否正确?
有没有办法强制用户只使用https?
使用 HTTPS 协议的网站使用由受信任的第三方(或“证书颁发机构”)颁发的证书,其中包含公钥(请参阅:公钥基础设施 http://en.wikipedia.org/wiki/Public_key_infrastructure)。公钥与私钥配对,用私钥加密的信息只能用公钥解密。这用于确认服务器是私钥的持有者(因此是经过证书颁发机构认证的实体)。要使用 HTTPS 协议,您必须生成或购买证书。由于各种原因,购买证书而不是生成证书更为常见。
HTTPS 通信是加密的。与证书关联的密钥不会进行加密,而是浏览器和服务器使用 Diffie-Hellman Exchange 等方案来生成用于加密通信的密钥。这很重要,因为任何拥有公钥的人都可以解密使用私钥加密的内容。
从浏览器发送的信息由浏览器加密并由服务器解密。您的网络服务器软件将解密该信息;收到的信息与标准 HTTP 流量没有什么不同。
是的,您可以强制使用 HTTPS。您可以通过服务器软件(例如RewriteRule
在阿帕奇,有一个RewriteCond
检查 HTTPS),或通过 HSTS,这涉及发送特定标头。如果您在支持 HSTS 的浏览器中发送 HSTS 标头,浏览器将自动从 HTTP 重定向到 HTTPS(请参阅:HTTP 严格传输安全 http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)