TLS ECDHE-ECDSA-AES128-GCM-SHA256 的密钥生成要求

2023-11-23

我想知道 ECDHE-ECDSA-AES128-GCM-SHA256 和 ECDHE-ECDSA-AES128-GCM-SHA256 是否有最低密钥生成要求?我试图让 TLS 客户端和服务器使用上述算法之一相互连接,并不断收到“无共享密码错误”。我创建了一个用于签署客户端和服务器证书的 CA,并尝试仅使用 openssl 以及 node.js 进行连接。我在本地主机(127.0.0.1)上运行客户端和服务器,以消除任何其他可能的问题。

这是我到目前为止所做的:

CA密钥对创建:

  $ openssl genrsa -out ca-key.pem 4096
  $ openssl req -new -x509 -days 365 -key ca-key.pem -out ca-cert.pem

服务器/客户端密钥对创建:

  $ openssl genrsa -out server-key.pem 4096
  $ openssl req -new -key server-key.pem -out server-csr.pem
  $ openssl x509 -req -days 365 -in server-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem 

  $ openssl genrsa -out client-key.pem 4096
  $ openssl req -new -key client-key.pem -out client-csr.pem
  $ openssl x509 -req -days 365 -in client-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -set_serial 02 -out client-cert.pem

我最初尝试从命令行连接到node.js服务器(tls.createServer(),带有选项:ciphers:'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256'),但为了消除节点怀疑,我又使用 openssl 来创建客户端和服务器。

以下命令正确连接客户端和服务器,并声明它使用“新,TLSv1/SSLv3,密码为 ECDHE-RSA-AES256-GCM-SHA384”密码:

$ openssl s_server -accept 8888 -cert server-cert.pem -key server-key.pem -pass stdin -CAfile ca-cert.pem  -state
<password entered here>

$ openssl s_client -connect 127.0.0.1:8888 -cert client-cert.pem -key client-key.pem -pass stdin -CAfile ca-cert.pem -state
<password entered here>

共享的密码信息如下:

Shared ciphers:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-R
SA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES2
56-SHA:SRP-DSS-AES-256-CBC-SHA:SRP-RSA-AES-256-CBC-SHA:DHE-DSS-AES256-GCM-SHA384
:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:DHE-RSA-A
ES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:ECD
H-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES256-SHA384:ECDH
-ECDSA-AES256-SHA384:ECDH-RSA-AES256-SHA:ECDH-ECDSA-AES256-SHA:AES256-GCM-SHA384
:AES256-SHA256:AES256-SHA:CAMELLIA256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES
-CBC3-SHA:SRP-DSS-3DES-EDE-CBC-SHA:SRP-RSA-3DES-EDE-CBC-SHA:EDH-RSA-DES-CBC3-SHA
:EDH-DSS-DES-CBC3-SHA:ECDH-RSA-DES-CBC3-SHA:ECDH-ECDSA-DES-CBC3-SHA:DES-CBC3-SHA
:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA2
56:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:SRP-DSS
-AES-128-CBC-SHA:SRP-RSA-AES-128-CBC-SHA:DHE-DSS-AES128-GCM-SHA256

当我在服务器或客户端和服务器上指定密码时,以下命令不起作用。请注意,ECDHE-ECDSA-AES128-GCM-SHA256 密码在上面的列表中被列为共享密码。

$ openssl s_server -accept 8888 -cert server-cert.pem -key server-key.pem -pass stdin -CAfile ca-cert.pem -cipher ECDHE-ECDSA-AES128-GCM-SHA256
<password entered here>

<< Server output after client connection attempt >>
Using default temp DH parameters
Using default temp ECDH parameters
ACCEPT
ERROR
2674688:error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher:s3_srvr.c:1353:
shutting down SSL
CONNECTION CLOSED
ACCEPT


$ openssl s_client -connect 127.0.0.1:8888 -cert client-cert.pem -key client-key.pem -pass stdin -CAfile ca-cert.pem -cipher ECDHE-ECDSA-AES128-GCM-SHA256
<password entered here>

<<client output after connection attempt>>
CONNECTED(00000003)
2674688:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:708:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 166 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

有人有什么想法吗?提前致谢!


您使用了错误的密钥类型

 openssl genrsa -out ca-key.pem 4096 

你需要使用ecparam

openssl ecparam -name secp521r1 -out ca-key.pem -genkey

and

openssl ecparam -name secp521r1 -out client-key.pem -genkey

genrsa生成 RSA 密钥,当与 ECDHE 一起使用时,可对椭圆曲线 Diffie Hellman 密钥交换 (ECDHE) 进行身份验证。

ECDHE-ECDSA-AES128-GCM-SHA256 中的 ECDSA 意味着您需要椭圆曲线数字签名算法来验证该密钥。由于您没有此类密钥,因此该命令会失败。但是,ECDHE-RSA-AES256-GCM-SHA384 可以工作,因为它使用您拥有的 RSA 密钥。

您获得 sha384 是因为 openssl 选择了最强的密码套件,并且在所有条件相同的情况下 sha384 优于 sha256。您可以覆盖它,看起来您是这样做的--cipher.

请注意,您可能想要使用不同的曲线。您可以通过以下方式获取完整列表

openssl ecparam -list_curves

出于好奇,为什么要使用特定的密码套件? ECDHE 和 ECDSA 是最先进的,但 sha256 只是标准,而且 AES 128 肯定足够好,如果人们像 ECDHE 和 ECDSA 所暗示的那样谨慎,他们倾向于使用 256。

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

TLS ECDHE-ECDSA-AES128-GCM-SHA256 的密钥生成要求 的相关文章

  • 如何向 node-http-proxy 响应添加标头

    我需要在第三方服务上解决CORS 所以我想构建一个代理来添加标头 Access Control Allow Origin 为什么这段代码没有添加标题 httpProxy require http proxy var URL https th
  • 如何执行密集的 Node.js 计算

    我正在开发一个电子商务应用程序 每次产品从服务器发送到客户端时都必须重新计算产品的定价 每次发送多达数千个产品 计算部分本身相当密集 因为它需要多个数据库查询来计算 我的简单解决方案是将计算部分抽象到另一个专门用于计算的 Node js 应
  • 从 Node.js 调用 execl、execle、execlp、execv、execvP 或 execvp 的方法

    POSIX 系统公开了一系列exec函数 允许人们将可能不同的东西加载到当前进程中 保留打开的文件描述符 进程标识符等 可以出于多种原因执行此操作 在我的情况下 这是引导 我想更改我自己的进程的命令行选项 然后在现有进程上重新加载它 这样就
  • Node.js 请求随机开始挂起,直到服务器重新启动后才会清除

    我在我们的网络应用程序上遇到了一个非常奇怪且看似随机的问题 我似乎无法成功调试 它可以正常运行 10 分钟到 6 小时 然后突然无法向服务器发出或从服务器发出远程请求 它们只是挂起 这包括常规的 http 和 Web 套接字请求 奇怪的是
  • 将新属性动态添加到 Node 中现有的 JSON 数组中

    我需要添加当前 JSON 中不存在的属性 json 对象如下所示 var jsonObj result OK data 我想在 数据 中添加温度 我可以像下面那样做 jsonObj data push temperature 然后 我想在
  • 算法 HmacPBESHA256 不可用

    因此 我编写了一些代码来获取 PEM 通过 bouncycastle 将其添加到 PKCS 密钥库 然后使用 java crypto 将 PKCS 密钥库值导入到 JKS 密钥库中 我发誓昨天我在执行这些步骤后成功通过了单元测试 但是今天早
  • windows下用nodejs抓包

    node js v0 8 0 XP WIN7 不是 Cygwin 谷歌并找到node pcap https github com mranney node pcap https github com mranney node pcap 但它
  • Node.js 进行 rsa 加密的正确方法?

    我正在尝试创建一个 WS 来发出肥皂请求 在消息正文中有一个包含加密文本的字段 我有公钥来加密文本 但我获得的唯一结果是文本无法识别 我使用节点的加密模块来发出请求 并且文本已加密 但我不知道为什么没有正确加密 PS我用 openssl p
  • 类验证器 (Node.js) 在自定义验证中获取另一个属性值

    目前 我有一个非常简单的类验证器文件 其中包含 Nest js 中的 ValidationPipe 如下所示 import IsDateString IsEmail IsOptional IsString Length Max from c
  • GraphQL - POST 正文丢失。您忘记使用 body-parser 中间件了吗?

    我的电脑上不断出现以下错误graphql查询但不确定原因 POST body missing Did you forget use body parser middleware 我在这里做了什么奇怪的事吗 我已经尝试了在线 body par
  • 使用节点护照进行两次不同的登录

    我对两个站点 前台站点和后台 有相同的应用程序 两个站点都需要不同的登录条件 因为后台需要将 is admin 值设置为 true 这是我的登录方法 module exports verifyCredentials function use
  • Axios GET 返回不可读的响应

    我有一个带有 axios 1 2 0 的简单 GET 的 Express 应用程序 const result AxiosResponse await axios get https jsonplaceholder typicode com
  • 如何使用Nodejs将json数据导出为指定格式的pdf文件?

    我是nodejs的初学者 我正在编写一个程序 将文本数据从 json 文件转换为 pdf 文件 这是我的输入文件 input json Info Company ABC Team JsonNode Number of members 4 T
  • 设置ejs在express中查看文件夹的查找路径

    I have app js in Express 服务器文件夹 aap js 的完整位置是I WEB Development Node Express server 我做了views该位置的文件夹I WEB Development Node
  • 角度2多次错误TS2300:重复的标识符

    系统配置 ubuntu 14 04 节点 v gt v5 6 0 npm v gt 3 7 1 打字最新版本 不知道如何获取版本详细信息 第一次使用 angular2 时 我的文件夹样本 服务器结构如下 server js server t
  • 节点 html-pdf 自动配置失败

    我有一个使用 html pdf 包的简单项目 我想用以下代码制作一个简单的 pdf 文件 pdf create html toStream function err stream if err reject err else stream
  • Mongoose 更新嵌入文档不起作用

    问候大家 我定义了一个深度嵌入的猫鼬模型 Person 其中包含一个字段 Contact Contact 有一个 Address 数组 用于这个人的工作 家庭 送货等地址 当我想要更新地址并使用模型的 保存 功能时 更改并未反映在数据库中
  • AWS Lambda - Nodejs 函数不会返回数据

    我是 NodeJS 函数调用的新手 我已经在屏幕上敲了几个小时了 我所有的谷歌搜索都没有帮助 所以我有一个 AWS Lambda 函数 它接收一个带有单个 ID 号的 JSON 对象 该 ID 号将被传递并最终作为 myid 发送到 get
  • 从 puppeteer PDF 中删除分页符?

    我目前正在尝试查看是否有一种方法可以删除我的 puppeteer PDF 中的分页符 因为我当前的 PDF 设置中的一些分页符正在以一种奇怪的方式切断文本 我正在谈论的内容的屏幕截图 我的傀儡代码 app get companyId pdf
  • 带有node-gyp的node.js应用程序无法在azure网站上部署

    我已经建立了一个 Azure 网站 并且正在尝试使用依赖于 node gyp 的示例应用程序 我得到这个 emote gt email protected cdn cgi l email protection install C DWASF

随机推荐

  • 如何在画布上移动矩形

    我在我的应用程序中使用 JavaScript 使用画布 我在画布上画了一个矩形 我想借助鼠标 例如移动滑块 移动矩形 如何使用 JavaScript 或 jQuery 移动该矩形 画布实际上只是您在其上绘画的表面 您绘画的任何东西都不是对象
  • 如何为Android创建触摸交互式图表[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我的应用程序需要图表 其中
  • 无法在 CentOS 上安装 PHP 包

    我在数字海洋托管的服务器上通过 yum 重新安装 PHP 时遇到问题 我安装了 PHP 5 4 但想要 5 6 我添加 启用了 remi 存储库 然后运行yum y remove php 然后尝试重新安装php 当我跑步时yum y ins
  • 连接谷歌电子表格中的日期和时间

    我有一个脚本可以将电子表格中的事件导入日历中 function caltest1 var sheet SpreadsheetApp getActiveSheet var startRow 2 First row of data to pro
  • 循环遍历最多 k 位为 ON 的整数的最佳方法是什么?

    我需要循环遍历所有最多有 k 位 ON 位 1 的 n 位整数 其中 0 目前我正在使用这个简单的算法 for x 0 to 2 n 1 count number of bits 1 in x if count lt k do someth
  • Google 自定义搜索 API 的 OAuth2 范围

    我已经创建了 CSE 需要以编程方式更新促销活动 这是在后端系统中完成的 因此身份验证过程中的用户交互不是一种选择 可以通过 HTTP 使用自定义搜索 API 来更新促销活动 此过程需要身份验证令牌 他们的文档说自定义搜索仅支持 Clien
  • jsf 中没有会话生成

    在JSP中 有一个属性session用于禁用请求中的自动生成会话 有没有办法在 JSF2 中做同样的事情 Thanks 为什么 因为我们有一个公共注册表单页面作为应用程序中的默认页面 这是一个非常简单的表单 每次人们 或机器人等 请求主页时
  • 如何使用 Java 流将两个数组合并到一个映射中?

    假设我们有以下两个数组 String keys new String a b c aa d b int values new int 1 2 3 4 5 6 通过将这两个数组合并到 HashTable 中 我们得到以下结果 pseudo c
  • jquery select 具有多个属性的元素

    好吧 我现在对 jquery 的选择器过程感到很困惑 是的 开始时很混乱 我的页面上有 2 个输入元素 我想删除其中一个 这是我的输入
  • 设备上运行的应用程序中的所有活动的列表

    如何获取设备上运行的应用程序中的所有活动的列表 例如 包括 pdf 生成和电子邮件活动 我可以使用以下代码检查活动 ActivityManager am ActivityManager this getSystemService ACTIV
  • gdb 不适用于 macos High Sierra 10.13.3

    我已经用brew安装了gdb 8 1 我也有 codesign gdb 和 gdbinit 如下所示 set startup with shell off 我已禁用 SIP 功能 csrutil status System Integrit
  • 单一职责原则与贫乏/丰富领域模型有何关系?

    目前正在对从另一个团队接管的东西进行一些代码审查 并对应用 SRP 及其与贫血或丰富域模型 由 Martin Fowler 定义 的关系存有疑问 富域模型的概念是拥有智能对象 不仅可以设置 获取其属性 还可以执行一些更复杂的业务逻辑 我想知
  • 重组文本列表出现“意外缩进”

    我没有成功使用 Restructedtext 获得简单的 3 级缩进列表 cat test rst Title aaaa aaaa2 aaaa2 aaaa3 aaaa aaaa Ok rst2html test rst gt tmp a h
  • 具有大量查询的node-postgres

    我刚刚开始使用node js 和postgres 使用node postgres 我尝试做的事情之一是编写一个简短的 js 来填充我的数据库 使用一个包含大约 200 000 个条目的文件 我注意到一段时间后 不到 10 秒 我开始收到 错
  • 无法识别的表达式“$first”

    我需要从数组中提取第一项并将其添加到它自己的对象中 所以我发现 first 正是这样做的https docs mongodb com manual reference operator aggregation first array ele
  • 指向数组的指针数组

    我是 C 编程新手 这是我的问题 我想将每个数组的第一个值存储在一个新数组中 然后将每个数组的第二个值存储在一个新数组中 依此类推 我可以声明指针数组 但我不知道如何使用它 拜托 我需要帮助 int main int t1 4 0 1 2
  • Pandas 0.19.2 read_excel IndexError:列表索引超出范围

    我正在寻找解析 Excel 电子表格 我决定使用 pandas 但立即就遇到了错误 我从下面的代码开始 但使用完整路径并尝试设置工作表名称 import pandas as pd table pd read excel ss 12 xlsx
  • 随机数生成器测试

    您将如何测试随机数生成器是否生成实际的随机数 我的方法 首先构建一个大小为 M 的哈希 其中 M 是素数 然后拿号码 由随机数生成器生成 并与M取模 并查看它填充了所有散列或仅填充了某些部分 这就是我的方法 我们可以通过可视化来证明这一点吗
  • 确定全局/根坐标中的 SVG 视口

    SVG 元素内实际可见的内容取决于其宽高比 viewBox值及其preserveAspectRatio value 例如 相同的 SVG 元素大小具有相同的viewBox值 下面的红色虚线 可以有不同的视口 下面以蓝色显示 具体取决于pre
  • TLS ECDHE-ECDSA-AES128-GCM-SHA256 的密钥生成要求

    我想知道 ECDHE ECDSA AES128 GCM SHA256 和 ECDHE ECDSA AES128 GCM SHA256 是否有最低密钥生成要求 我试图让 TLS 客户端和服务器使用上述算法之一相互连接 并不断收到 无共享密码错