节点 v7.9.0 https 的 ERR_SSL_VERSION_OR_CIPHER_MISMATCH

2024-04-20

此代码在node v7.9.0(Electron当前使用的版本)中创建一个https服务器,并监听端口8000:

require('https').createServer(
  {},
  (req, res) => {
    res.writeHead(200);
    res.end('hello world/n');
  }
).listen(8000);

不幸的是,当我访问时https://本地主机:8000 https://localhost:8000在服务器运行的 Chrome 中,我收到 ERR_SSL_VERSION_OR_CIPHER_MISMATCH。我该如何克服这个错误?如何查明服务器正在提供哪些密码以及它正在使用哪种协议(希望是最新版本的 TLS)?

EDIT此错误也发生在 Node v8.5.0 上,这是撰写本文时 Node 的最新稳定版本


迟到但:通常是 SSL/TLS 服务器,包括HTTPS 服务器需要私钥和(匹配的)证书或链用于 SSL/TLS 握手中的公钥算法。看如何在 Node.js 中创建 HTTPS 服务器? https://stackoverflow.com/questions/5998694/how-to-create-an-https-server-in-node-js举些例子。

从技术上讲,协议中定义了一些不需要密钥和证书的“匿名”密钥交换机制,但它们被广泛认为不够安全,并且默认在 OpenSSL(以及 Nodejs)中被禁用。还有一些使用非公钥算法的密钥交换机制,如 PSK、SRP、Kerberos,但它们使用起来要困难得多,并且需要特殊配置,我不认为可以用 Nodejs 来完成这些配置(而且你当然没有这样做)做)。

因此,如果没有密钥和证书,并且没有启用匿名或其他特殊密钥交换,服务器支持的密码套件集是没有元素的空集——并且您所做的每次连接尝试都会失败,因为空集永远不会有非空交集使用客户端提供的一组密码套件。

I think您仍然可以通过查看不同 ClientHello 版本返回的警报版本来找出它支持的协议版本,但我不确定这会有什么好处。无论如何,自 2012 年发布 OpenSSL 1.0.1 以来,OpenSSL 已经支持 TLS 1.0 到 1.2,甚至 Nodejs 7.9.0 也比 2012 年更新了很多。OpenSSL 还支持 SSLv3,但在最近的版本中,它被禁用或排除在构建之外默认;如果您的版本仍然包含它,您不应该使用它,因为 POODLE 攻击会破坏它。 (只有当您使用仅支持 SSLv3 而不能支持任何 TLS 的非常旧的客户端时,通常才会发生这种情况,因此不要使用此类客户端。)实际上,低于 1.1.0 的 OpenSSL“支持”SSLv2,因为代码仍然存在,但默认配置禁用它; SSLv2 早已被破坏和禁止,您绝对不应该使用它。

截至 2018 年 9 月,OpenSSL 1.1.1 发布并支持 TLS 1.3。我不知道nodejs是否/何时使用/支持这个。

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

节点 v7.9.0 https 的 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 的相关文章

随机推荐

  • Rails::Railtie:创建 Rails 3 gem 时遇到问题

    我真的可以用另一双眼睛来看待这个问题 所以我想我会把它发布在这里 不久前 我出于自己的教育目的编写了一个基本的 ActiveRecord 扩展 我最近一直在阅读有关 Railties 的内容 并想尝试让它与 Rails 3 一起工作 我想我
  • Swift 与 Objective C 指针操作问题

    我在 Objective C 中有这段代码 运行良好 list controller gt audioBufferList list gt mBuffers 0 mDataByteSize inNumberFrames kSampleWor
  • 导入Stanford nlp Intellij

    我在使用斯坦福词形还原器时遇到问题 当我使用 Intellij IDE 时 我尝试通过依赖项 Windows 导入它 但我无法通过这种方式访问 所有类 有没有办法在 Intellij 上正确导入 stanford english coren
  • 使用随机数生成引擎

    我正在尝试使用兰德 字节 https www openssl org docs crypto rand htmlOpenSSL 的 API 但我想尝试使用各种随机数生成引擎 在 OpenSSL 中是否有推荐的生成随机字节并添加熵的方法 我在
  • 模型无法通过烧瓶迁移检测到

    我的烧瓶应用程序中有这棵树 api migrations model init py Persons py Comments py other classes py resources init py app py util py This
  • 如何更新实体?

    我之前有一个更详细的问题 但我没有答案 我将以更简单的方式提出同样的问题 I have an EF database with foreign key to another table 我想UPDATE an ENTITY 但我需要这样 我
  • 如何定期更新WebView中的HTML5位置(使用FINE_ACCURACY)

    我正在开发一个应用程序来跟踪我的手机定期 不仅是第一次 with navigator geolocation getCurrentPosition 运行在 HTML5 页面中 运行在 webkit webview 中 运行在 android
  • SpringFramework:预期有一个匹配的 bean,但发现了 2 个

    我正在构建一个使用 SpringFramework 从 MongoDB 读取数据的项目 其结构为存储库 and Service如下 Repository Interfaces I
  • 将安装文件打包为单个可执行安装程序

    我有一个用 C 编写的旧程序的旧设置 其中包含多个安装文件 SETUP 1 SETUP DLL INST32I EX ISDEL EXE SETUP EXE DISK1 ID SETUP INI SETUP INS SETUP LIB SE
  • UITableView 的本地化索引

    我正在尝试为我的 UITableView 使用本地化索引 就像 iPhone 的联系人应用程序一样 这是我返回字符数组的方法 NSArray sectionIndexTitlesForTableView UITableView tableV
  • 如何停止对辅助隐式加载 DLL 的 DLL 劫持

    例如 COMDLG32 DLL 隐式链接到以下系统 DLL 以及其他 xmllite dll dll srvcli dll wkscli dll 链接信息库 netutils dll 微星 dll 由于这些是由操作系统隐式加载的 而不是使用
  • 如何重定向 Visual Studio 调试器的输出?

    在 Visual Studio 2008 中 我可以指定命中断点时要打印的消息 通过右键单击断点并选择 命中时 当程序运行时 这些消息出现在输出窗口中 我想知道有什么办法可以将它们重定向到文件吗 指定 gt file txt作为程序的命令参
  • 休眠批量插入

    这是我在数据库中插入批次的代码 Override public void addMultiple session get session tx session beginTransaction for int i 0 i lt 100 i
  • 错误:ValueFactory 尝试访问此实例的 Value 属性

    Error 源文件 c Projects WaterfrontSeattle org src Orchard Logging OrchardLog4netLogger cs Line 63 来源错误 Line 61 Load the log
  • 升级到Numpy 1.8.2后,ImportError:无法导入名称多数组

    我刚刚使用 Anaconda 的 Spyder 在 64 位 Windows 机器上升级到 Numpy 1 8 2 我使用了命令 conda update numpy 它安装了它 在此之前我有numpy 1 7 1 并且我在另一个路径中也有
  • 帮助--LibSVM 的准确率达到 100%?

    名义上这是一个好问题 但我很确定这是因为发生了一些有趣的事情 作为上下文 我正在研究面部表情 识别空间中的一个问题 因此获得 100 的准确度似乎令人难以置信 并不是说在大多数应用程序中这是合理的 我猜测数据集中存在一些一致的偏差 这使得
  • 删除行以及引用已删除行的其他行

    我正在使用 PostgreSQL 并且我有一张表family像这样 id name parent id 1 adam 0 2 eva 0 3 peter 2 4 pan 3 现在 当我删除这个人时 我也希望孩子们也被删除 例如删除WHERE
  • 重命名 APK 内的包名称

    我创建了一个AIR app目前市场上有这种产品 要更新应用程序 显然我必须保留相同的包名称 我的第一个版本是使用以下方式打包的Eclipse使用 ADT 插件 现在可以使用AIR 3 0 本机扩展 ANE 当我第一次开发该应用程序时不可用
  • 在 django 平面中嵌入tinyMCE

    我在用着django tinymce https github com aljosa django tinymce 我想知道如何将其嵌入到管理面板的平面中 来自项目的自述文件 将tinymce添加到项目的settings py中的INSTA
  • 节点 v7.9.0 https 的 ERR_SSL_VERSION_OR_CIPHER_MISMATCH

    此代码在node v7 9 0 Electron当前使用的版本 中创建一个https服务器 并监听端口8000 require https createServer req res gt res writeHead 200 res end