- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在同一服务器-客户端微服务的两个不同安装上遇到了两个不同的错误。这些是在不同主机上运行的基于 Node.js 的服务。是的,我使用的是自签名证书。根据在线搜索,我可以在 https.agent 选项 中使用 rejectUnauthorized: false 绕过这些错误,或者将 NODE_TLS_REJECT_UNAUTHORIZED=0 设置为 ENVIRONMENT 变量客户端。我不想那样做,主要是因为这违背了 TLS 和 HTTPS 的全部目的。因此,我将签名证书传递给了客户,现在一切正常。至少,在我的一个安装实例中,它给出了 DEPTH_ZERO_SELF_SIGNED_CERT。我无法测试提供 SELF_SIGNED_CERT_IN_CHAIN(后勤问题)的另一个实例。我想知道,这两个错误有什么区别?一些在线博客和论坛将这两个错误视为同义词,并为两者提供类似的修复。
最佳答案
两个错误字符串都来自 OpenSSL。
所以如果你看https://www.openssl.org/docs/manmaster/man1/openssl-verify.html你得到:
X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN
The certificate chain could be built up using the untrusted certificates but the root could not be found locally.
和
X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT
The passed certificate is self-signed and the same certificate cannot be found in the list of trusted certificates.
因此它们在技术上是不同的,但在这两种情况下,这意味着在证书链中(自签名时的证书本身或链中更高的证书)其中一个在本地不受信任/找不到值得信赖。
这基本上意味着您没有使用您期望使用的证书,或者您的信任库没有相应配置。
创建一个自签名证书并在上面运行openssl verify
,你会得到:
$ openssl verify -verbose cert.pem
cert.pem: C = AU, ST = Some-State, O = Internet Widgits Pty Ltd
error 18 at 0 depth lookup:self signed certificate
OK
如果你查看它的联机帮助页,你会得到:
18 X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: self signed certificate
所以错误 18
是 DEPTH_ZERO_SELF_SIGNED_CERT
现在创建另一个证书 (cert2.pem
),它将由这个自签名证书签名。
不通过不受信任的部分:
$ openssl verify -verbose cert2.pem
cert2.pem: C = US, ST = Some-State, O = Internet Widgits Pty Ltd
error 20 at 0 depth lookup:unable to get local issuer certificate
错误 20
是 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY
。正如预期的那样,openssl 告诉您该证书不是自签名的,而是由它在本地不知道的授权机构签名的。
但是通过将先前的自签名证书作为第二个证书的 CA 传递:
$ openssl verify -verbose -untrusted cert.pem cert2.pem
cert2.pem: C = AU, ST = Some-State, O = Internet Widgits Pty Ltd
error 19 at 1 depth lookup:self signed certificate in certificate chain
错误 19
确实是 X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN
:openssl 告诉您它可以根据不受信任的(即通常是 cert.pem
中的中间)证书(因此两者之间存在有效签名)但是该中间证书是自签名的并且不被称为受信任的 CA,因此基于您当前的信任库, openssl 无法完全验证此证书。
关于node.js - SELF_SIGNED_CERT_IN_CHAIN 和 DEPTH_ZERO_SELF_SIGNED_CERT 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57154131/
问题 我编写了一个要求客户端证书的最小服务器,但是它始终拒绝与以下authorizationError的连接:DEPTH_ZERO_SELF_SIGNED_CERT。我在下面放置了我遵循的步骤,这些步
当我尝试使用我正在编写的 node.js 客户端连接到网络服务器时出现上述错误。 但是当我尝试连接到服务器时出现错误。 'DEPTH_ZERO_SELF_SIGNED_CERT' 这是发送请求的代码。
我正在使用此 SMTP 设置: secure: true, ignoreTLS : true, port: 465, 但是我收到此错误,并且无法发送电子邮件: [Error: DEPTH_ZERO_S
我正在使用 Node 0.10.26 并尝试通过客户端验证建立 https 连接。 服务器代码: var https = require('https'); var fs = require('fs'
我在同一服务器-客户端微服务的两个不同安装上遇到了两个不同的错误。这些是在不同主机上运行的基于 Node.js 的服务。是的,我使用的是自签名证书。根据在线搜索,我可以在 https.agent 选项
从我的 browserify React 应用程序通过无效 SSL 发出请求时遇到问题,我基本上遇到了这个问题:https://github.com/request/request/issues/41
我正在尝试在 Node 中使用 TLS 设置服务器和一些客户端。我在客户端和服务器上使用自签名证书。服务器运行正常,但是当我尝试连接客户端时,客户端出现以下错误: Error: DEPTH_ZERO_
我的服务器在带有 heroku SSL 插件的 heroku 上运行。服务器是使用以下选项创建的: name: 'ServerName', version: '1.0.0', 我这样运行服务器:
我正在尝试对具有自签名证书的 Web 服务器在 HTTPS 上执行 method=POST。我下载了服务器公共(public)证书并将路径放在发布选项中。但是我在第 47 行收到错误 [Error:
我正在使用最新版本的 nodejs 和 http-proxy 关注在线示例,但是当我的请求发送到端点 https 服务器时出现以下错误: C:\Users\Me\node_modules\http-p
我需要使用 mocha 和 super test 测试通过 HTTPS 提供的 API(证书未过期) 这是服务器的要点: ... var app = express(); var _options =
我是一名优秀的程序员,十分优秀!