gpt4 book ai didi

ssl - 在 Unity 中验证 SSL\TLS 证书

转载 作者:太空宇宙 更新时间:2023-11-03 12:43:56 40 4
gpt4 key购买 nike

我在统一证书验证方面遇到问题。我使用 .Net 类 HttpWebResponse 发出请求并向 ServicePointManager.ServerCertificateValidationCallback 提供回调函数。

证书由权威机构签署,在网络浏览器中工作正常。

验证失败,状态:X509ChainStatusFlags.PartialChain X509ChainStatusFlags.RevocationStatusUnknown X509ChainStatusFlags.OfflineRevocation

在我看来,问题是空的根证书存储和空的 CRL 列表。我打开 Mono 源代码,发现这个数据应该是从 X509Store 获取的,但不知何故它不包含任何根证书或 CRL。

我需要实现正确的证书验证,而不仅仅是通过在 ServerCertificateValidationCallback 中返回 true 或对证书指纹进行硬编码来跳过它,为此我需要提供所有必需的数据。

假设我知道 Root 权限,我可以在应用程序启动时将它添加到存储中。但它不适用于 CRL。平台为Android\IOS。

问题是:如何强制 unity 安装 Roots 和 CRLs?

最佳答案

您可以通过 X509Store 安装证书。安装是持久的,所以只需要调用一次。根据X509Certificate2从 Base64 或 DER 字节创建证书。可以通过openssl导出:openssl x509 -inform DER -in YOUR_ROOT_CER.cer -out YOUR_BASE64_PEM.pem .

private static void InstallCertificate(byte[] cert)
{
X509Certificate2 certificate = new X509Certificate2(cert);
X509Store store = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
store.Add(certificate);
store.Close();
}

关注StoreLocation.CurrentUser指向 /data/data/<your.package.name>/.mono/同时StoreLocation.LocalMachine/usr/xxx/.mono在安卓上。

关于ssl - 在 Unity 中验证 SSL\TLS 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29096376/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com