使用 SSL 时私钥存储在哪里?

2023-12-30

在我将在本地网络上托管的服务之间使用 ssl 证书之前,我想更多地了解它。通过在互联网上阅读,这就是我对 SSL 工作原理的理解。

  1. 客户端连接到WCF服务
  2. WCF 服务回复其公钥和证书
  3. 然后,客户端验证证书并使用公钥加密其凭据
  4. 然后 wcf 服务使用其私钥解密该消息并验证信息
  5. etc...

知道这里有一些我不明白的事情:

  • 在步骤 4 中,WCF 服务在哪里找到它的私钥?
  • 为什么需要 SSL 证书?通过在互联网上阅读,需要验证该服务是否是我想要的。这对我来说没有意义,因为首先我知道我的本地网络上的服务的 IP 地址(我知道该服务是谁)。假装这不是我在互联网上的情况,有人试图攻击我。在这种情况下,我相信,如果我连接到他们的服务而不是我真正的服务,我无能为力,因为如果您还记得第 2 步,WCF 服务用公钥和证书(纯文本)回复,这意味着有人可以获取该证书并使用它吗?
  • 如果我使用 SSL 证书并且某人可以访问托管该服务的计算机,他可能会以某种方式获取私钥,从而使我的连接不安全?

首先,第三步中缺少一些步骤。第三步实际发生的是:

  • 客户端验证证书
  • 客户端和服务器来回发送一些消息,从而协商什么样的消息密钥他们都可以使用的加密
  • 客户端创建一个密钥对于该加密算法,用服务器的公钥对秘密密钥进行加密,并将加密后的秘密密钥发送到服务器。
  • 服务器现在可以使用其私钥解密密钥。
  • 客户端和服务器现在就密钥算法达成一致,并且共享密钥。所有通信现在都使用共享密钥进行加密和解密。
  • 客户端使用密钥加密他们的凭据......

其原因是双重的。第一的,公钥加密的数学比秘密密钥加密的数学昂贵得多。这个想法是只进行一次昂贵的数学计算,以实现共享秘密的交换。其次,客户端知道服务器的公钥,但客户端可能连公钥都没有,那么服务器如何向它发送秘密消息呢?这就是为什么他们必须就共享密钥达成一致。

无论如何,继续你的问题:

该服务在哪里保存其私钥?

在 Windows 上,它位于操作系统提供的证书存储中。在其他操作系统上,我不知道。

为什么需要证书?

假设您想用信用卡购买我的割草机,但您担心我实际上可能是个骗子。您想知道我的真实姓名,以便在我开始用您的卡收取维加斯之旅费用时您可以起诉我。

因此,当我们进行交易时,我向您展示一张纸,上面写着“Eric Lippert 声称这张纸的所有者是 Eric Lippert,签名为 Eric Lippert”。你相信我吗?如果您已经信任埃里克·利珀特,那么您就不需要这张纸,如果您不信任埃里克·利珀特,那么这张纸就不会建立信任。这是一个“自签名证书”。

现在,如果我向您展示一张纸,上面写着“VeriSign 公司声称这张纸的所有者是 Eric Lippert,由 VeriSign 签名”,那么问题是:您是否相信 VeriSign 已验证我的身份?如果您这样做,则这证明与您交谈的人就是他们所声称的那个人。

这就是证书的目的。它确定特定的公钥确实与特定的组织相关联,因为它是由相互信任的第三方签署叫做认证机构.

当您使用信用卡在线购买商品时,您可能会相信该网站只会对该卡进行授权收费。该证书验证您要用于加密的公钥确实是该网站的公钥,而不是某些邪恶黑客的公钥。

但是带有公钥的证书是公开的,难道有人不能抢到证书并冒充服务器吗?

是的,但这对他们没有帮助,除非他们窃取了私钥,而私钥是私有的。拥有他人证书的人不能解密使用公钥加密的消息,所以他们将无法与客户端进行密钥交换!即使他们设法欺骗客户端,他们得到的只是用客户端选择的密钥编码的比特流,如果没有证书的私有部分,攻击者就无法获得该密钥。

这意味着:如果我允许访问我的私钥,那么有人就可以冒充我,对吧?

是的。整个系统的安全性取决于私钥的私密性。这就是为什么它被称为私钥.如果攻击者获得了您的私钥,那么他们就可以随意冒充您,因此保守秘密,保证安全。如果您的密钥遭到泄露,可以通过一种机制撤销证书,但通常损害已经造成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 SSL 时私钥存储在哪里? 的相关文章

随机推荐

  • 模块'对象没有属性'drawMatches' opencv python

    我只是在 OpenCV 中做一个特征检测的例子 该示例如下所示 它给了我以下错误 module 对象没有属性 drawMatches 我已经检查了 OpenCV 文档 但不确定为什么会收到此错误 有谁知道为什么 import numpy a
  • 如何在nodejs的ejs文件中显示警报

    例如 我想访问文档对象并想使用警报 所以我在 ejs 文件中创建了一个函数 我想在出现错误时显示警报 所以我正在渲染我的 ejs 文件并给出 2 个参数 一个是结果 另一个是错误 并希望显示是否有错误 显示警报 res render app
  • 如何避免在 PHP 7 中的每个文件上重新声明刻度

    Overview 在 PHP 5 6 中似乎添加declare ticks 1 然后使用register tick function 将遵循任何包含并相应地提供分析信息 在 PHP 7 中 但现在看来我必须添加declare ticks 1
  • PHP短路惰性求值,php.net手册在哪里?

    抱歉 如果这听起来像是一个非常愚蠢的问题 但我用 Google 搜索了网络 还专门用 Google 搜索了 php net 网站和 stackoverflow com 网站 我知道 PHP 会短路惰性求值使用时and or 运算符 但是 P
  • Django - 连接两个模型

    对于以下模型 我想检索在历史表中具有指定间隔之间的过渡日期的条目的所有设备 class History models Model device models ForeignKey DeviceModel to field id transi
  • INNER JOIN 和锁

    我有两张桌子TableA and TableB其中有我想要同时检索和更新的信息 当我使用 SELECT TOP 2 SomeFieldA FROM TableA WITH ROWLOCK UPDLOCK READPAST 一切正常 进程 1
  • Angular 2 - 让子组件加载到父组件中(动态创建)

    我正在尝试动态创建标头 构造标头模板并将其作为 字符串 传递给我的动态组件 我的要求是在标头组件模板字符串中调用另一个组件并加载它 已经创建了一个工作Plunker https plnkr co edit ENa23Q1Qqtvi46CYn
  • MarkLogic XML 到 JSON 的转换

    我正在尝试将此 XML 文件转换为 JSON 但无法取得任何成功 我的 XML 中有两个子元素 但它只返回最后一个 如何获取 JSON 格式的两条记录 XML
  • 升级到 XCode 13(和 iOS 15)后选项卡和导航栏发生变化

    我有一个 iOS 应用程序 自从升级到 Xcode 13 以来 我注意到一些特殊的变化Tab and 导航酒吧 在 Xcode 13 中 选项卡和导航栏上现在有这个黑色区域 并且在启动应用程序时 选项卡栏和导航栏现在都是黑色的 奇怪的是 如
  • Busboy-connect 在保存文件结束之前触发(node.js,express)

    我使用 Busboy connect 从客户端获取上传数据 我尝试保存数据 然后 on finish 将状态正常返回到服务器 问题是 on finish 在文件保存结束之前触发 我是否做错了什么或者这就是模块的工作方式 服务器端代码 con
  • DialogFragment设置Dialog的高度

    我刚刚使用第一个对话框使用 DialogFragment 创建的 一切都很好 除了我无法让对话框包装它的布局 我的布局具有所有元素的高度wrap content In MyFragmentDialog我什至找不到一种方法来暗示它可以用来设置
  • 如何使用 AngularJS 使用 Json 数据向服务器发送 DELETE 请求?

    我必须向服务器发送 http DELETE 请求 类型必须是 JSON 对象如下所示 id value 我的第一个方法是以下代码 但到目前为止它不起作用 http delete http blabla server house id val
  • 基于成员变量的不同视图/数据模板

    我有一个名为的视图模型 ViewModelClass 其中包含一个布尔值 我有另一个视图模型 其中包含 ObservableCollection
  • Jquery 检测 iframe 内 body 标记的更改或 keyup

    我有一个jwysiwyg http akzhan github com jwysiwyg help examples 01 basic html我的页面上的内容编辑器控件 该控件的工作原理是在 iframe 中创建自身 其中包含完整的 ht
  • 如何一起使用Mercurial、Maven和Eclipse?

    我目前正在与 5 名大学同事组成的团队一起开发 Java 项目 实际上 我们将在接下来的几天内完成规划阶段 然后开始实施 对于该项目 我们必须使用 Mercurial 通过 Bitbucket org 和 Apache Maven 我们想使
  • JAGS 错误 - 可能涉及以下部分或全部节点的有向循环

    完整数据集包含约 11 000 行 我一直在使用 K 400 运行代码 同时检查代码是否运行 所有行都与地图上的特定单元格相关 并包含从 Sentinel 2 图像和数字高程地图中提取的信息 117 个细胞的子集还包含实地考察中记录的栖息地
  • 带参数的并发 JUnit 测试

    所以我尝试运行并行参数化测试 我有一个解决方案 其中相同的测试可以与提供的参数并行运行 例如说我有以下内容 Test public void someTest1 Test public void someTest2 我可以让 someTes
  • 读取 numpy 矩阵的一个特定单元格

    我编写了一个函数来查看矩阵是否对称 def issymmetric mat if mat shape 0 mat shape 1 return 0 for i in range mat shape 0 for j in range i if
  • Hibernate 4 中的 NoCacheProvider 类替代方案

    我刚刚意识到没有org hibernate cache internal NoCacheProviderHibernate 4 Core 包中的类 也许它已被弃用 那么 Hibernate 4 有什么替代方案吗 先感谢您 CacheProv
  • 使用 SSL 时私钥存储在哪里?

    在我将在本地网络上托管的服务之间使用 ssl 证书之前 我想更多地了解它 通过在互联网上阅读 这就是我对 SSL 工作原理的理解 客户端连接到WCF服务 WCF 服务回复其公钥和证书 然后 客户端验证证书并使用公钥加密其凭据 然后 wcf