oracle - 在 DocuSign API 返回重定向 URI 时收到证书错误消息
问题描述
我正在尝试使用 Oracle Application Express 测试 DocuSign eSignature API。我收到一个 Oracle 错误:ORA-29273:HTTP 请求失败 ORA-06512:在“SYS.UTL_HTTP”,第 1130 行 ORA-29024:证书验证失败
我让 Oracle DBA 基于开发人员环境端点将 3 个 DocuSign 证书安装到 Oracle Wallet,以根据我从以下 DocuSign 网页中找到的 T 进行身份验证和 REST API:
https://developers.docusign.com/docs/esign-rest-api/how-to/ :
https://account-d.docusign.com(这也重定向到https://appdemo.docusign.com/home所以我也包括了这个 https://demo.docusign.net/
但是在返回我的应用程序(重定向 URI)时出现错误。
请提供具体的证书或完整的 URL,以便我自己下载证书。
罗伯特
解决方案
通常的问题是您尚未将根证书添加到文档存储中。对于 DocuSign,这就是 DigiCert 根证书。查看DocuSign 证书列表
添加
根证书在颁发者部分引用自己。对于 DocuSign,这是 DigiCert 证书:https ://www.docusign.com/sites/default/files/digicerthighassuranceevrootca_2.crt
您可以通过以文本格式转储来检查您是否拥有正确的证书,见下文。
这是文本转储的重要部分,表明证书是根证书(它引用自己):
Certificate:
Data:
...
Issuer: C = US, O = DigiCert Inc, OU = www.digicert.com,
CN = DigiCert High Assurance EV Root CA
Subject: C = US, O = DigiCert Inc, OU = www.digicert.com,
CN = DigiCert High Assurance EV Root CA
完整的证书转储
$ openssl x509 -in ~/Downloads/digicerthighassuranceevrootca_2.crt -text -noout -inform der
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
02:ac:5c:26:6a:0b:40:9b:8f:0b:79:f2:ae:46:25:77
Signature Algorithm: sha1WithRSAEncryption
Issuer: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
Validity
Not Before: Nov 10 00:00:00 2006 GMT
Not After : Nov 10 00:00:00 2031 GMT
Subject: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:c6:cc:e5:73:e6:fb:d4:bb:e5:2d:2d:32:a6:df:
e5:81:3f:c9:cd:25:49:b6:71:2a:c3:d5:94:34:67:
a2:0a:1c:b0:5f:69:a6:40:b1:c4:b7:b2:8f:d0:98:
a4:a9:41:59:3a:d3:dc:94:d6:3c:db:74:38:a4:4a:
cc:4d:25:82:f7:4a:a5:53:12:38:ee:f3:49:6d:71:
91:7e:63:b6:ab:a6:5f:c3:a4:84:f8:4f:62:51:be:
f8:c5:ec:db:38:92:e3:06:e5:08:91:0c:c4:28:41:
55:fb:cb:5a:89:15:7e:71:e8:35:bf:4d:72:09:3d:
be:3a:38:50:5b:77:31:1b:8d:b3:c7:24:45:9a:a7:
ac:6d:00:14:5a:04:b7:ba:13:eb:51:0a:98:41:41:
22:4e:65:61:87:81:41:50:a6:79:5c:89:de:19:4a:
57:d5:2e:e6:5d:1c:53:2c:7e:98:cd:1a:06:16:a4:
68:73:d0:34:04:13:5c:a1:71:d3:5a:7c:55:db:5e:
64:e1:37:87:30:56:04:e5:11:b4:29:80:12:f1:79:
39:88:a2:02:11:7c:27:66:b7:88:b7:78:f2:ca:0a:
a8:38:ab:0a:64:c2:bf:66:5d:95:84:c1:a1:25:1e:
87:5d:1a:50:0b:20:12:cc:41:bb:6e:0b:51:38:b8:
4b:cb
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature, Certificate Sign, CRL Sign
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Subject Key Identifier:
B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3
X509v3 Authority Key Identifier:
keyid:B1:3E:C3:69:03:F8:BF:47:01:D4:98:26:1A:08:02:EF:63:64:2B:C3
Signature Algorithm: sha1WithRSAEncryption
1c:1a:06:97:dc:d7:9c:9f:3c:88:66:06:08:57:21:db:21:47:
f8:2a:67:aa:bf:18:32:76:40:10:57:c1:8a:f3:7a:d9:11:65:
8e:35:fa:9e:fc:45:b5:9e:d9:4c:31:4b:b8:91:e8:43:2c:8e:
b3:78:ce:db:e3:53:79:71:d6:e5:21:94:01:da:55:87:9a:24:
64:f6:8a:66:cc:de:9c:37:cd:a8:34:b1:69:9b:23:c8:9e:78:
22:2b:70:43:e3:55:47:31:61:19:ef:58:c5:85:2f:4e:30:f6:
a0:31:16:23:c8:e7:e2:65:16:33:cb:bf:1a:1b:a0:3d:f8:ca:
5e:8b:31:8b:60:08:89:2d:0c:06:5c:52:b7:c4:f9:0a:98:d1:
15:5f:9f:12:be:7c:36:63:38:bd:44:a4:7f:e4:26:2b:0a:c4:
97:69:0d:e9:8c:e2:c0:10:57:b8:c8:76:12:91:55:f2:48:69:
d8:bc:2a:02:5b:0f:44:d4:20:31:db:f4:ba:70:26:5d:90:60:
9e:bc:4b:17:09:2f:b4:cb:1e:43:68:c9:07:27:c1:d2:5c:f7:
ea:21:b9:68:12:9c:3c:9c:bf:9e:fc:80:5c:9b:63:cd:ec:47:
aa:25:27:67:a0:37:f3:00:82:7d:54:d7:a9:f8:e9:2e:13:a3:
77:e8:1f:4a
又加了一些
您仍在Certificate validation failure
从您的框架接收 TLS 级别...一些建议的后续步骤:
检查客户端(您的应用程序)和服务器(DocuSign)之间的实际 TLS 协议。通过捕获跟踪文件并使用WireShark读取它来做到这一点。WireShark wiki 包含有关如何获取跟踪的说明。
这可能是不同类型的证书问题,例如支持的密码不匹配。
也可能是某种程度的错误配置。例如,您的应用程序框架是否使用 TLS 1.2?DocuSign 不支持 TLS 1.0(或 1.3)。TLS 1.1 即将推出。
一个常见问题是,当 TLS 级别出现问题时,许多框架没有提供好的细节。
如果您仍然遇到问题,请向 DocuSign 的开发人员支持小组开一张支持票。(但鉴于您目前的调查,他们向您提出的第一个请求将是请求 TLS 级别的跟踪。)
推荐阅读
- javascript - 如何使用javascript单击从数组中删除特定对象
- python - 如何在 python 标记器库中设置词汇量?
- bash - 在linux中删除具有特定列数的行
- java - How can I configure Checkstyle to validate this simple import style?
- spring - 如何使用 Spring Cloud Kubernetes 以编程方式写入 ConfigMap 值?
- flutter - Dart // Flutter - 如何连接图像和音频来渲染静态视频
- reactjs - 当所有孩子都有钥匙时,反应抱怨没有钥匙的孩子
- java - Content-Length 分隔的消息正文过早结束 - Resttemplate
- javascript - 搜索/过滤 JavaScript 对象数组
- java - 如何与“>”进行比较