问题标签 [x509certificatevalidator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wcf - 带有配置的自定义 X509CertificateValidator?
我正在我的 wcf 服务上设置客户端证书。一切都很好。该服务需要客户端证书,我的客户端测试应用程序提供证书并且能够向服务端点之一发出请求。
不,我想实现一个自定义验证器。我创建了一个继承自 X509CertificateValidator 的新类,并在服务 Web 配置中进行了设置。我可以在 validate 方法中放置一个断点并查看它被调用。了不起的负鼠。
现在我希望能够为验证器提供自定义配置参数。X509CertificateValidator 有一个 LoadCustomConfiguration 方法,我可以覆盖它,但它没有被调用,我假设这是因为我没有在任何地方提供任何实际的自定义配置 - 如果这个假设是正确的,我如何定义我的自定义配置参数? 还是有其他方法我应该这样做?
配置
c - 为什么 X509_CRL_verify() 失败?
我正在使用 openssl (v.1.0.1k) 编写一个库,以根据颁发者证书和吊销列表验证证书。我的第一步是验证 CLR 来自发行人。我已验证证书和 CLR 已正确生成并使用以下命令行进行验证:
然而!我无法使用 X509_CRL_verify() 进行 CRL 验证。它总是报告:“期待:证书”
ERR_get_error() 的输出:
我想知道它是否有问题,因为我的证书是“受信任的”证书。我必须使用 PEM_read_bio_x509_AUX() 而不是普通的 PEM_read_bio_x509() 来加载证书。在验证受信任的证书之前,我还需要做些什么吗?
这是验证码:
这是颁发者证书:
和 CRL:
哦,是的,我已经初始化了 openssl 堆栈:
谢谢!
nginx - 如何解决 Nginx “proxy_pass 502 Bad Gateway”错误
我试图在我的 nginx.conf 文件中添加 proxy_set_header。当我尝试添加 proxy_pass 并调用 URL 时,它会引发 502 Bad Gateway nginx/1.11.1 错误。
不确定如何解决此错误:
openssl - 什么可能导致 CMS 例程:CMS_SIGNERINFO_VERIFY_CERT:certificate verify 错误?
我正在尝试根据其颁发者 CA 证书验证签名者证书。我正在使用以下 OpenSSL API 来验证证书。
第一个参数包含 base 64 编码的消息。第二个参数是 CA 和签名者证书的堆栈,第三个参数是指向证书存储的指针,第四和第五个参数是 BIO 指针。最后一个参数设置为 0。
当我尝试根据我得到的 CA 证书验证签名者证书时
签名者证书的颁发者证书是 CA 证书,并且 CA 和签名者证书都有效。
有谁知道可能导致此验证失败的原因?以及任何绕过它的方法?
java - Uidai 二维码验证返回 False
我们已经解压缩了 adhaar 二维码示例数据,我们能够验证手机号码和电子邮件,但我们停留在 Pdf 文档下面的最后一步,我们无法使用签名和证书验证签名数据,我们已经尝试使用 uidai 的两个证书已在开发者部分现场提供。
Uidai 文件如下: https://uidai.gov.in/images/resource/User_manulal_QR_Code_15032019.pdf
如果有人对此进行过工作,请提供帮助。
验证码如下:
openssl - 使用 OpenSSL CLI 从 x509 证书获取链或 CA 颁发者
我正在尝试使用 OpenSSL 从证书构建一个链(或只是从某个地方获取它),最好使用命令行界面。
我在互联网上找到了一些示例,但我被困在“我在哪里可以从证书中获得 CA 颁发者?”的问题上。
例如查看这个网站openssl command cheatsheet,你会发现命令
openssl s_client -showcerts -host example.com -port 443
得到链子。您可以尝试使用www.google.com
而不是example.com
. 输出应该给你链。其他网站迟早会使用相同的命令...
因此,我无法直接从证书中获取链,但我应该在某个地方询问链。
现在我的问题是:我从哪里获得主机名,我可以在哪里发送我对链的请求?
我看了两个证书。
- stackexchange.com
- google.com
使用OpenSSL
,我可以使用命令询问颁发者
openssl x509 -in certFile -noout -issuer
我分别得到
- issuer=C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
- 发行人=C = 美国,O = Google 信任服务,CN = GTS CA 1O1
老实说,我不知道如何处理这些结果......
然后,用命令调查
openssl x509 -text -in certFile
我找到了 AIA 扩展:
- CA 颁发者 - URI:http ://cert.int-x3.letsencrypt.org/
- CA 发行者 - URI: http: //pki.goog/gsr2/GTS1O1.crt
好的,在第一个例子中,我终于可以使用命令了
openssl s_client -showcerts -host http://cert.int-x3.letsencrypt.org/ -port 443
但是对于谷歌,我不知道如何使用openssl
....我可以使用下载链wget
,但我没有从 stackexchange 获得的相同格式...
所以,最后,我的问题:
- 我应该如何处理这些差异?
- 有没有更好的方法从证书中获取链,而不要求 CA 颁发者?
- CA Issuer 是 AIA 的扩展,我认为它不是强制性的,我可以依赖它吗?
- 如何在
OpenSSL
不自己解析输出的情况下使用 CA 颁发者?(类似openssl x509 -caIssuer -in certFile
)
PS:我最终尝试实现的是验证证书,遍历整个链,并检查链中每个证书的所有 OCSP 或 CRL ...如果您有 C++ 中的工作示例,或者只是使用 OpenSSL CLI,我将不胜感激 :)
编辑:
我现在正在做的是自己创建链。
使用 AIA 扩展,我获得 CA 颁发者 URI,下载 CA 颁发者证书(如果需要,转换为 PEM),依此类推,直到我不再找到 CA 颁发者。然后,可能它是一个根 CA。
之后,我手动收集所有 pem 并创建链。
wcf - 使用 crl 文件验证客户端证书
我正在构建一个 wcf c# 服务以在 Windows Server 2012 中运行。我有一个 crl 文件 (sample.crl),我需要根据 crl 文件验证客户端证书。(我的服务器无法访问在线 crl)。即,我需要确保我的整个证书链不存在于 crl 列表中。
我尝试将crl 文件导入到“中间证书颁发机构”下的本地证书存储中。验证码看起来像这样
我相信这段代码会根据本地 crl 缓存(certutil -urlcache crl)测试证书。但是我添加到本地证书存储的 crl 并没有显示在本地 crl 缓存中。如何针对我在 C# 中本地拥有的 crl 文件实现证书验证。