如何解决如何以编程方式处理充当其自己的证书颁发机构CA的应用程序的数百个实例
我想使用C#访问将在数百甚至数千台服务器上运行并充当其自己的证书颁发机构(CA)的应用程序的API。
最初,我在建立SSL / TLS信任关系时遇到问题。我了解到可以将curl与“ --insecure”参数一起使用来建立连接,但我知道从安全角度来看,这是不合时宜的。
研究如何使用C#进行相同操作时,我发现了多个示例(Link),这些示例使我可以关闭SSL / TLS身份验证。
示例:
ServicePointManager.ServerCertificateValidationCallback = (obj,X509certificate,chain,errors) => true;
然后我发现我可以从服务器上的应用程序检索“证书”并将其保存在客户端系统上的文件中。
示例:
-----BEGIN CERTIFICATE-----
MIICajCCAdOgAwIBAgIIaFSnqgAAAAAwBZYJKoZIhvcNAQENBQAwNzEOMAwGA1UE
...
rvqtlUd9krLEN3HQZ94kw4l1nv5JPMqNdeDZEOcSzuA32Saz/gIACEU9lJ5S6w==
-----END CERTIFICATE-----
同样,我可以使用“ --cacert”参数和服务器应用程序中包含cert的文件的名称来进行curl测试。这使我避免使用“ --insecure”参数,并使用从应用程序下载的证书进行安全连接。
我想创建一个C#程序,该程序使用应用程序提供的“ cacert”并存储在我的客户端上的“ cacert.pem”文件中,以与应用程序建立信任关系。基本上,我试图模仿上面描述的“ curl --cacert”功能。
这是一个控制台应用程序,我正计划使用“ .Net Core”,希望将来将该应用程序移植到Linux / MacOS。
其他问题:
-
我一直在使用HTTPWebRequest来构成API调用,据我了解有点过时。我应该改用HTTPClient吗?
-
我应该尝试使用Windows信任存储代替我自己的“ cacert.pem”文件吗?尤其要注意以下几点:
- 我希望该应用程序可移植到Linux / MacOS。
- 由于该应用程序有成千上万个实例,因此我可能拥有数千个证书。
- 我希望该应用程序可移植到Linux / MacOS。
-
我仍在学习证书。应用程序“证书”是否与自签名证书相同?还是因为应用程序说它正在充当自己的证书颁发机构而不同?
对于一个问题/帖子,这似乎很多。我不确定是否应该将其放在一起,因此将其分为多个问题更有意义...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。