- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
此代码在 Node v7.9.0(Electron 当前使用的版本)中创建一个 https 服务器,并在端口 8000 上监听:
require('https').createServer(
{},
(req, res) => {
res.writeHead(200);
res.end('hello world/n');
}
).listen(8000);
不幸的是,当我访问https://localhost:8000在运行服务器的 Chrome 中,我得到 ERR_SSL_VERSION_OR_CIPHER_MISMATCH。我如何克服这个错误?我如何找出服务器提供的密码以及它使用的协议(protocol)(希望是最新版本的 TLS)?
编辑 这个错误也发生在 node v8.5.0 上,这是撰写本文时 Node 的最新稳定版本
最佳答案
晚了但是:通常一个 SSL/TLS 服务器包括一个 HTTPS 服务器需要一个私钥和(匹配的)证书或链来用于 SSL/TLS 握手中的公钥算法。参见 How to create an HTTPS server in Node.js?例如。
从技术上讲,协议(protocol)中定义了一些不需要 key 和证书的“匿名” key 交换机制,但它们被广泛认为不够安全,默认情况下在 OpenSSL(以及 nodejs)中被禁用。还有一些使用非公钥算法的 key 交换机制,如 PSK、SRP、Kerberos,但它们更难使用并且需要特殊配置,我不相信可以用 nodejs 完成(你当然没有做)。
因此,如果没有 key 和证书,并且没有启用匿名或其他特殊 key 交换,服务器支持的密码套件集是没有元素的空集——并且您进行的每次连接尝试都会失败,因为空集从来没有与客户端提供的一组密码套件的非空交集。
我认为您仍然可以通过查看为不同 ClientHello 版本返回的警报版本来找出它支持的协议(protocol)版本,但我不确定这样做有什么好处.在任何情况下,自 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 是否/何时使用/支持这个。
关于javascript - ERR_SSL_VERSION_OR_CIPHER_MISMATCH Node v7.9.0 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46229995/
由于 ERR_SSL_VERSION_OR_CIPHER_MISMATCH,对在 Java 1.6.0_21 上运行 Tomcat 6.0.32 的内部网站的 HTTPS 访问最近停止工作。这些网站使
我已经创建了我的 SSL 证书,如下所示: openssl ecparam -name secp521r1 -genkey -param_enc explicit -out domain.com.ke
每次打开此网站时都会在 Chrome 上收到此错误。实际上,这是居住在美国 的 friend 发给我的屏幕截图 不过,它在这里(印度)顺利开放。 最佳答案 对于遇到此错误的任何人,请尝试以下操作: 清
我已按照 Digicert 在以下链接中提供的说明在服务器上安装了 SSL/TLS 证书。 https://www.digicert.com/ssl-certificate-installation-
我为 SSL 配置了 Tomcat 7。我这样生成 keystore keytool -genkey -alias tomcat -keyalg RSA 在 server.xml 中,我有 如果我直
我关注了this answer使 https://localhost:3000/ 在 Chrome 和 Mac 中工作。今天突然不行了。 https://localhost:3000 给出不安全: S
我已经从 ssl2buy 购买了通配符 SSL。将它安装在我的 Tomcat 8 - server 2012 服务器上,我在那里运行我的 Java 应用程序。安装证书后,我收到这样的错误消息:ERR_
我刚刚在 Digital Ocean 云上创建了一个空间。 要启用 CDN,它需要 SSL。 我的域管理员是 Cloudflare . 我在 上创建了一个 CNAME Cloudflare DNS 设
Ubuntu 14、tomcat 7、java 7 godaddy 提供的 our.crt、our.key 和 gd_bundle-g2-g1.crt。该 bundle 中有 3 个证书(通过 vi'
我希望我能得到一些关于如何解决这个问题的信息。我是 jenkins 的新手,正在尝试设置 jenkins 服务器。 启用 SSL 后,我无法登录 Jenkins。 Chrome 抛出错误 ERR_SS
我有几个在 Apache 上运行的主机名,我希望有特定的强 TLS 配置。有2个.conf在 Apache 中启用的文件:第一个包含端口 80 的所有虚拟主机(例如 default.conf),另一个
我尝试通读帖子并使用 PHP 修改 wp-content 文件夹。我已经进行了多次尝试,但都失败了。我无法以任何方式访问 wp-admin 编辑器。 我有点新手,正在尝试添加所需的 SSL 证书以在我
很奇怪,我可以浏览我尝试的每个网站。 google.com 的子域除外。 前任; firebase.google.com 或 photos.google.com 或 analytics.google.
我正在为 JBoss 6 中的 HTTPS 设置一个 key ,它一直向我显示错误 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 证书有效。 我使用以下命令创建了 jks:ke
我最近从 Positive ssl 购买了个人 ssl 证书。在我通过激活和验证解决了所有问题之后,我终于能够下载证书文件了。 我得到的文件是: www.niknet.ddns.net.ca-bund
打开我的私有(private)网站时,我仅在 CHROME 中收到以下错误。在 Internet Explorer 中它的工作没有任何问题。 我尝试重置 chrome,删除所有缓存但没有运气。后端站点
我的代码托管在 GitHub Pages 上。我尝试通过 IP 将客户端连接到计算机的 Node.JS 服务器,但连接显示错误 ERR_SSL_VERSION_OR_CIPHER_MISMATCH。
我已经设置了一个 lambda 并将 API 网关部署附加到它。网关控制台中的测试一切正常。我为 *.hazeapp.net 创建了一个 AWS 证书。我在 API 网关中创建了一个自定义域并附加了该
自从我将 Chrome 从版本 40 更新到 41 后,我无法再访问在本地 tomcat 7 实例中运行的 ssl 站点。我有一个自签名证书。 Chrome 只打印 This webpage is n
此代码在 Node v7.9.0(Electron 当前使用的版本)中创建一个 https 服务器,并在端口 8000 上监听: require('https').createServer( {}
我是一名优秀的程序员,十分优秀!