html - 编程中http和https有什么区别

标签 html http https

<分区>

我只知道“s”代表“安全”,用户切勿在仅使用 http 的网站上输入重要信息。但我真的很想知道这两个协议(protocol)对我的编程有什么影响,例如:

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

  • 我心想 http 中的通信没有加密,而 https 中可能会进行一些加密,这是正确的吗?

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

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

最佳答案

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

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

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

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

关于html - 编程中http和https有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14912915/

相关文章:

java - 如何为 HTTP GET 的多个键值参数设计 REST URI

security - 保护部分 HTTP 请求?

ssl - 使用 let's encrypt 在 lamp web 服务器 ec2 aws 上配置 https

R httr 认证后下载在交互模式下工作但功能失败

html - 如何让我的 CSS div 到 "stick"到背景图像上的同一位置,即使浏览器在水平和垂直方向都调整了大小?

jquery - 如何删除第一行中的最后一个 TD

html - 如何使用CSS隐藏表格的第二行?

Java http 读取超时问题

python - HttpResponseForbidden 和 handler403

javascript - 开始使用 JavaScript 中的动画排版/粒子(将粒子映射到单词)?