百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

如何使用有效的 HTTPS 证书弥合开发和生产之间的差距

cac55 2024-10-19 02:57 15 浏览 0 评论

软件开发的核心原则之一涉及维护开发/生产的平衡。但对于 localhost. 开发人员来说,情况并非总是如此

回顾一下,开发/产品一致性是指保持开发、登台和生产环境尽可能相似,以避免遇到未检测到的错误。缺乏开发/产品对等性可能会导致在一种环境中出现错误,但无法在其他环境中复制和调试。

例如,如果您的生产网站在 HTTPS 上运行,您会希望本地开发网站也在 HTTPS 上运行。

“它可以在我的电脑上运行……”漫画。图片来源

为什么应该在本地主机上启用 HTTPS

您可能会想,“ localhost 的行为不就和 https 一样吗?这难道不是为什么某些在已部署的 HTTP 站点上不起作用的 API 却可以在 http://localhost ?”

嗯,是。对于大量用例, http://localhost/<yourportnumber> 就可以了,其行为类似于 HTTPS 站点。但也有一些情况并非如此。以下是此类案例的一些示例:

调试混合内容错误:当页面上的所有内容不是通过 HTTPS 检索时,就会发生混合内容错误。

例如,如果您使用基于 HTTP 的 CDN 中的 JavaScript 库,则当您在本地主机上工作时,一切都可能按预期工作。但在基于 HTTPS 的生产环境中,情况可能会有所不同。

在 HTTPS 页面上,任何从 HTTP URL 加载 JavaScript 的请求都将被浏览器阻止。由于您的本地环境在本地主机上运行,因此您可能无法发现此错误。

在本地测试需要 HTTPS 的第三方库或 API(例如 OAuth 或 Instagram 的 API)。

或者在本地开发期间跨浏览器设置和测试安全 cookie: Secure cookie 仅在 HTTPS 上设置,而不是在所有浏览器的 http://localhost 上设置。

还有其他情况,因为这并不是详尽的列表。但为了避免 http://localhost 出现问题,或者它的行为与您的生产站点不太一样,只需使用 HTTPS 进行本地开发。

现在,要为本地环境启用 HTTPS,您需要为其配置 TLS 证书。我们来谈谈这个吧。

HTTPS 和 TLS 证书之间的关系

如果您已经了解 TLS 证书以及它们如何启用 HTTPS,或者您专注于解决方案并希望立即采取行动,则可以跳过本部分并转到下一部分。

但如果您想了解一些背景信息,了解为什么 TLS 证书是关键,请继续阅读。

什么是 HTTPS?

HTTPS 是 HTTP 的安全扩展,HTTP 是用于通过互联网传送网页的通信协议。

HTTPS 本质上是 HTTP,加上了传输层安全 (TLS) 协议提供的附加安全层。 HTTP 处理互联网上的数据传输,而 TLS 则对数据进行加密以确保其安全性,从而产生了 HTTPS。

什么是 TLS?

数据传输的 TLS 加密基于 TLS 证书从 Web 服务器到客户端(通常是浏览器)的传输。

它的工作原理如下:当您输入要访问的 HTTPS URL 时,您的浏览器会尝试与托管提供网页所需文件的 Web 服务器建立 HTTPS 连接。为此,需要执行 TLS 握手。

TLS 握手的目标是让浏览器和 Web 服务器就共享对称加密密钥达成一致,该密钥用于加密和解密它们之间交换的消息。但这个对称密钥需要以安全的方式交换。

对称密钥是加密的首选加密密钥类型,因为它们运行速度更快(在网络中,速度就是一切)。但它们的风险更大,因为无法确保或验证不良行为者不会拦截传输中的对称密钥并声称它。此外,无法验证是否只有预期的收件人才获得密钥。

这就是非对称密钥要解决的问题。非对称密钥用于在客户端和服务器之间安全地传输对称密钥。

描绘浏览器和 Web 服务器之间安全通信的插图

非对称密钥如何工作?

非对称密钥使用一对密钥:公钥和私钥。交换数据时,发送者使用公钥来加密消息,接收者使用其私钥(保密且从不共享)来解密消息。由于私钥是保密的,这确保了只有预期的接收者才能解密消息。

例如,如果服务器想要安全地从浏览器接收对称密钥,它会创建一对非对称密钥并与浏览器共享公钥。浏览器使用公钥对对称密钥进行加密,并将加密后的消息发送到服务器。然后,服务器使用其私钥(只有服务器知道)来解密消息。

这就是非对称密钥如何确保只有具有相应私钥的预期接收者才能收到对称密钥。

但是Web服务器如何将其公钥送到浏览器手中,浏览器如何确定它收到的公钥实际上属于Web服务器呢?他们可以将其放入文件或文档中,这就是 TLS 证书的用途。

TLS 证书是托管在网站源服务器中的数据文件,包含服务器的公钥以及标识 Web 服务器的相关信息。

那么,信任问题又如何呢?这是游戏的第二个组成部分,即证书颁发机构发挥作用的地方。

什么是证书颁发机构?

证书颁发机构 (CA) 是客户端和服务器都信任的实体。其主要作用是负责任地颁发 TLS 证书。

CA 充当担保人或裁判人。例如,如果A先生想与B先生进行交易,但他们之前没有关系,则B先生信任的C先生可以为B先生提供担保。

在这个场景中,C先生扮演了CA的角色,帮助客户端和服务器之间建立信任。 TLS证书必须由证书颁发机构签名才能解决信任问题。

显示证书颁发机构如何工作的插图

因此,TLS 证书是包含 Web 服务器公钥的文件,由证书颁发机构签名,以证明证书中包含的公钥确实是 Web 服务器的公钥。

在 TLS 握手期间,客户端和服务器使用公钥和私钥来交换随机生成的数据。该随机数据用于创建新的共享对称密钥以进行加密,称为会话密钥。 HTTPS 就是这样产生的。

好的,今天的密码学就足够了。现在您已经了解了证书的基础知识,让我们看看如何为您的 [localhost](<http://localhost>) 服务器获取 TLS 证书。

如何为本地主机服务器获取 TLS 证书

现在您已经了解了证书在启用 HTTPS 中的作用,很清楚我们需要做什么才能为本地 Web 服务器启用 HTTPS:我们需要从设备上的浏览器和客户端信任的证书颁发机构获取 TLS 证书。

操作系统和浏览器附带了公共信任的 CA 的预定义列表,例如 Let’s Encrypt。要查看系统根信任存储上受信任的证书颁发机构列表,如果您使用的是 Mac,请搜索“钥匙串访问”。

但由于各种原因,这些 CA 被禁止向 localhost 等私有 TLD 上的域颁发证书。

无需 CA 即可创建自签名 TLS 证书。在这种情况下,您将亲自签署您的证书并证明您的公钥就是您的公钥。

使用自签名证书,没有外部机构可以验证源服务器是否是其声称的服务器。

浏览器不认为自签名证书值得信赖,并且尽管有 https:// URL,但仍可能将带有自签名证书的网站标记为“不安全”。这就是 Gatsby https 标志所发生的情况。

Firefox 浏览器上的自签名证书错误。

你需要做的是:

  1. 创建您自己的本地证书颁发机构
  2. 让您的系统/环境信任它
  3. 使用 CA 为本地 Web 服务器颁发 TLS 证书
  4. 在您的 Web 服务器上安装证书

这听起来可能很多,是吗?好消息是,使用名为 step-ca 的开源项目实际上非常容易且快速。

如何使用 step-ca 为本地 Node.js 服务器配置 TLS 证书

step-ca 是专用和内部网络的开源证书颁发机构。

首先,请按照下列步骤操作:

首先,打开你的终端。如果您使用的是 Mac,请运行 brew install step 来安装 step-ca 和随附的 CLI 工具 step-cli

step-cli 是一个 CLI 工具,可用于与 step-ca 进行交互和通信。如果您使用的是 Windows 或 Linux,则可以在文档中找到安装说明。

接下来,运行 step-init 。此命令在本地计算机上创建并初始化 step-ca 证书颁发机构服务器。

然后,系统会提示您选择一些选项,如下图所示:

step-ca 设置选项的屏幕截图

让我们一一回顾一下:

  • 部署类型:与上图相同,选择“独立”,因为您自己运行 step-ca 选项。
  • 您希望如何命名您的 PKI:将“Linda-PKI”更改为您希望的 PKI 名称。
  • 您希望将哪些 DNS 或 IP 地址添加到新 CA:这要求您指定允许 CA 颁发证书的域名或 IP 地址。由于这是针对本地主机的,因此输入“localhost”。
  • 您希望将 CA 绑定到什么 IP 和端口:要求您指定 CA 服务器运行的端口。
  • 您希望如何命名您的配置者:对于 step-ca 生态系统,配置者是被授权向 CA 发起证书颁发操作的个人或实体。将其视为使用您的电子邮件作为用户名在平台上注册的输入。
  • 为您的 CA 密钥和第一个配置者选择密码:这是将用于授权证书颁发请求的密码。记下您的密码,因为它将在后续步骤中派上用场。

填写完所有选项后,您将看到如下所示的屏幕,显示您的 CA 和其他必要元素已创建并准备就绪。

step-ca 成功屏幕的屏幕截图

现在,运行 step certificate install <path-to-root_ca.crt> 将 CA 根证书文件安装到您的系统信任存储中。将 <path-to-root_ca.crt> 替换为上一步中您自己的文件路径。从我的例子来看,我的是 </Users/linda/.step/certs/root_ca.crt>

还记得我提到过您的证书颁发机构必须受到浏览器的信任,并且所有操作系统和浏览器都预装了受信任的证书颁发机构吗?此步骤将您刚刚创建的证书颁发机构添加到该列表中。

运行此命令后,您将看到如下屏幕:

step-ca 根证书安装成功屏幕截图

接下来,运行 step-ca <path-to-ca.json> 启动 CA 服务器。在我的示例中, <path-to-ca.json> 将是第三步中的 /Users/linda/.step/config/ca.json 。您将看到一个屏幕,通知您您的 CA 现在正在您在第三步中指定的端口上运行。

使用您的 CA 为您的本地主机服务器/项目创建新的证书和私钥。在项目服务器上运行 step ca certificate <subject> <crt-file> <key-file> ,其中:

  • subject 是您要为其获取证书的服务器的域名或 IP 地址,
  • crt-file 是要写入证书的文件名,并且
  • key-file 是写入私钥的文件。

对于我的示例,我的命令是 step ca certificate localhost server.crt server.key

步骤-CA 证书和私钥创建步骤成功屏幕的屏幕截图

您会注意到将在您的项目中创建 server.crt 和 server.key 文件。

最后,在 index.js 方法中的 server.crtserver.key 文件作为 cert 和 key 属性> 文件。这指示生成的 Node.js 服务器在 TLS 握手期间使用证书和私钥来启用 HTTPS。

我的 node.js 演示项目中 https.createServer 函数引用的 server.crt 和 server.key 文件的屏幕截图

停止并重新启动 Node.js 服务器,然后导航到本地主机 URL。您的本地主机现在应该在 HTTPS 上运行,如下所示(注意挂锁标志):

相关推荐

为什么要对彗星“深度撞击”(比特彗星中文破解版)

在太阳系中,被人类探测器造访的彗星数量与行星数量差不多。其中绝大多数探测器都是从彗星附近飞过采集数据。但2005年“深度撞击”探测器则采取了主动出击的策略。它释放出的撞击体以10千米/秒的速度撞...

准妈妈备产清单:看看凯特王妃待产包里都有啥

来源:新华网英国威廉王子和凯特王妃即将迎来他们的第三个孩子。据悉,同生乔治王子和夏洛特公主时一样,此次凯特仍然选择在伦敦圣玛丽医院生产。那么,凯特的待产包里有些什么呢?匿名消息源向英国《OK!》杂志透...

系统小技巧:正确处理软件放行与禁用的矛盾

有时,我们讨厌一些程序运行,但它们偏偏会自动弹出,我们希望禁止其运行。而还有的时候,因为某种原因使用了比较复杂的“软件限制策略”,造成某些软件无法运行,这时我们希望将其解禁。虽然我们可以用修改注册表的...

老网民的青春:盘点那些消失在互联网中的软件,你用过哪款?

一则ICQ即将关闭的消息,唤醒了很多70后80后尘封的记忆。ICQ可以说是即时通讯软件的鼻祖,它诞生于1996年,由以色列公司Mirabilis推出,ICQ是Iseekyou的简写,中文释义为“我...

Windows Vista 动态桌面的设置(windows10动态桌面)

一、VMwareWorkstation15(16的版本能安装但是不能实现动态桌面)安装WindowsVistaEnterprise,15下安装及设置完成后,在16下可以正常显示,虚拟机下安装...

Hexoskin智能T恤 穿在身上的运动追踪器

来源:MSN理财综合|2016-01-0615:14:42[摘要]Hexoskin使用方便,续航时间超长。它能准确追踪运动数据,可以满足专业运动员以及热爱健身的人,官网售价399美元。其实不用多说什...

你了解这些互联网的名词吗?(互联网的别称有哪些)

要想成为互联网的菜鸟,可以先了解一下互联网的一些基础名词。现在就一起来来看看吧,记住了,可以应急用哦!PV:即页面浏览量,或点击量(用户每次刷新即被计算一次)UV:独立访客(UniqueVisi...

不要成为无用的大人——写给三十岁前的你

我不习惯写励志故事,看到鸡汤绕道而行,原因是任何人选择入世生活,就并不值得安慰,以及不要期待享受特权,也没有你必须不得承受的麻烦。金牛座的世界里遭遇一切苦都是应该的,一切得到则需要努力得到,而且要认真...

尼康宣布正研发专业级FX格式数码单反相机D5

尼康宣布正在研发专业级FX格式数码单反相机D5。作为D4s的后续机型,D5机型的命名源于此款产品代表了尼康数码单反相机的第5代专业级机型。D4s于2014年2月发布,作为专业级数码单反相机,一经推出,...

配置管理流程(配置管理流程属于)

资料来源:https://www.cnblogs.com/wayne-ivan/articles/525818.html1 概要1.1 内容规范配置管理活动,确保配置项正确地唯一标识并易于存取,保证基...

小密圈-重新定义你的朋友圈(小密圈开放了)

微信在我们的生活中已经被使用的非常广泛了,除了聊天、视频之外,用的最多的就是朋友圈。在朋友圈里分享自己每天的所感所悟,家长里短本来是一件很开心的事,但是最近的一条新闻引起了人们的关注。某白领因为不愿意...

十招教你找到海量PPT模板(怎么找ppt模板资源)

配图设计:@乌素淖尔我每天都能遇到这种求助问题,不堪重负。问:急求XXXPPT模版?无耻的来求PPT模版,我是在一家互联网公司工作的小员工,领导安排说年初要用PPT做一份工作计划报告,主要是想说一下今...

安卓系统手机文件夹及其文件详细解析

打开Android文件管理器,会发现里面数十个英文名称命名的文件夹罗列其中,很多功能我们可以从其名字上略有所知,内部大批量的文件却让我们有些一头雾水。这些文件是什么呢?有什么用?我们能不能删?这些都是...

我为什么不喜欢微信(有没有人不喜欢聊微信)

这个问题是我在知乎的一个回答,原始问题是“什么样的用户不喜欢微信”?出于数据备份的原因,将其复制保留一份到这里,以防丢失。以下是原回答内容:我是做技术出身的,我非常不喜欢微信,同样也不喜欢QQ,但是为...

花了一周时间,整理出推荐频率最高的14款办公必备软件

澄清!猫猫最近没有偷懒!猫猫去干大事儿了!随着猫猫推荐的软件越来越多,大家是不是也苦恼每次想找一类软件,还得去一篇一篇翻历史文章,其实我也很苦恼这个问题。于是!猫猫上周搭建了一个“猫猫软件中心”,这里...

取消回复欢迎 发表评论: