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

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

cac55 2024-10-19 02:57 14 浏览 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 上运行,如下所示(注意挂锁标志):

相关推荐

正点原子开拓者FPGA开发板资料连载第四十章 SD卡图片显示实验

1)实验平台:正点原子开拓者FPGA开发板2)摘自《开拓者FPGA开发指南》关注官方微信号公众号,获取更多资料:正点原子3)全套实验源码+手册+视频下载地址:http://www.openedv.c...

东芝存储改名为铠侠了,铠侠microSD卡128GB全网首测

作为一个数码爱好者,平时总爱把玩各种科技数码产品,最近又迷上了口袋云台相机,大疆OsmoPocket、飞宇口袋相机、SnoppaVmate口袋相机什么的,不过这类产品由于设计的机身体积很小(毕竟为...

SD存储卡卡面上奇奇怪怪的图标,你知道几个?

现在对高像素照片、连拍、4K甚至8K的需求越来越多,对存储卡的传输速度、容量等,要求也越来越多了。但是,看到SD存储卡卡面上奇奇怪怪的图标,让人非常迷惑。这篇文章让你简单认识这些图标和奇奇怪怪的数字。...

拍摄4K视频上选!铠侠 EXCERIA PLUS microSD卡

大家好,我是波导终结者。今天跟大家分享的是铠侠的EXCERIAPLUS极至光速microSDXCUHS-1存储卡,名字有点长,但是不用担心,我会帮大家梳理好存储卡的选购建议。有不少刚入门的朋友...

高速稳定,一卡多用:铠侠极至光速microSD存储卡评测

Hello,大家好,我是小胖子。半个月前收到了KIOXIA铠侠寄来的一张256GB的TF卡,用了大半个月,让我们看看这款产品表现如何吧。其实很多人并不太了解铠侠,问我铠侠是什么品牌,好不好。其实,东芝...

读速205MB/s、V30规格,雷克沙SILVER系列存储卡再添新成员

IT之家6月19日消息,雷克沙今日推出3款SILVER系列SD/microSD存储卡新品,支持4K60fps录像。据介绍,该系列存储卡均符合V30标准,其中micr...

相机、无人机拍视频,选择SD存储卡有什么需要知道的?

本文章不涉及产品推荐导购行为,致力于给到小白带来基础知识。相机一般使用SD卡,无人机一般使用microSD卡(也叫TF卡),使用的标准和图标标识是一样的。相机、无人机拍视频,选择SD存储卡有什么需要知...

PNY推出适用Switch 2的microSD Express卡,读取速度高达890MB/s

任天堂Switch2开始预订,其比前代产品变得更加昂贵,各种配件的价格都高于预期,这也包括转向microSDExpress存储。此时,PNY推出了新款microSDExpress闪存卡。新款mi...

SD卡迎来25周年:全球售出120亿张,容量翻50万倍

IT之家5月21日消息,科技媒体betanews今天(5月21日)发布博文,报道称SD卡迎来了25周年的生日。自2000年首款SD存储卡问世以来,已走过25个年头...

微单相机买一款什么样的SD卡才够用?写入速度更为关键

最近,评价君朋友发现自己的卡拍摄视频时候总断流,于是感觉写入速度应该是不够的,打算换卡,评价君正好跟他说道说道。目前的SD存储卡,很多只标注读取速度,比如95MB/s,80MB/s等等,而没有写写入速...

金士顿Canvas Go!Plus 系列存储卡评测

前言2020年,金士顿推出了CanvasGo!Plus系列存储卡,凭借其优秀的读写速度和稳定性获得了广大用户的认可。时隔5年,金士顿推出了其全新升级产品:SDG4/SDCG4,可选容量覆盖64GB...

TF卡速度等级|MK米客方德(tf卡速度等级图)

TF卡(TransFlash卡,又称MicroSD卡)是一种常见的便携式存储媒体,广泛用于智能手机、相机、平板电脑等设备中。TF卡的性能通常由速度等级来衡量,这些等级反映了TF卡的数据传输速度。拓优星...

关于SD卡,看这张表就够了(sd卡的作用)

这里是溢图科技(原“相机笔记”)。这两天有不少存储产品促销,随之而来的就是关于SD卡的一些提问。文章以前已经写过很多了,这里主要给大家看一张表格:上面就是SD卡协会官方制作的“族谱”,明确给出了不同版...

轻量化储存的首选——凯侠极致光速256G microSD存储卡实测

对于摄影师而言,我们经常会接触到相关存储设备,像照片拍摄中给相机安装的SD卡,视频录制中外录高规格画面的SSD等,都属于专业的存储介质,被应用于商业拍摄、电影级别拍摄之中。而针对生活中我们日常用于拍摄...

首发1569元,读取速度可达250MB/s,闪迪推出最新2TB至尊超极速存储卡

近日,闪迪(SanDisk)正式发布了其最新的2TB至尊超极速microSDXCUHS-I存储卡。据悉,这款存储卡的读取速度可达250MB/s,写入速度则达到150MB/s。这意味着用户在处理高分辨...

取消回复欢迎 发表评论: