为了账号安全,请及时绑定邮箱和手机立即绑定

注册 X509Certificate2,不要在机器上留下任何痕迹

注册 X509Certificate2,不要在机器上留下任何痕迹

C#
万千封印 2021-06-18 10:12:25
目前正在创建证书颁发机构和颁发的证书。请求的生成、注册和验证都是功能性的,但是当我检查我的证书存储时,我意识到这是将它们放在我的个人证书目录中。出于记忆、安全和法律原因,我不能这样做。证书存储在安全的远程数据库中。可以从集合中的随机机器上随机访问或生成证书。如果它们生成证书,它会将它们存储在创建证书的任何机器上。有没有办法生成证书注册(CX509Enrollment),之后机器上不会留下任何证书痕迹?控制招生的部分相对较小且直接。它只能以管理员身份运行。我认为这是因为它正在向商店添加证书。我目前正在运行一个单独的项目文件来尝试调试这个问题。我的两个证书都是构建并保存在内存中的。static void Main(string[] args){    X509Certificate2 rootCert = CreateSelfSignedCertificate("testRoot");    X509Certificate2 signedChild = CreateSignedCertificate("testyMcTesterson", rootCert);    X509Chain chain = new X509Chain();    chain.ChainPolicy = new X509ChainPolicy()    {        RevocationMode = X509RevocationMode.NoCheck,        VerificationFlags = X509VerificationFlags.AllFlags,        UrlRetrievalTimeout = new TimeSpan(0, 1, 0)    };    chain.ChainPolicy.ExtraStore.Add(rootCert);    bool isValid = chain.Build(signedChild); //Is True :D}证书最终在我的个人证书存储中我的注册发生在这种方法中。它需要一个完全构建和编码的证书请求。public static CX509Enrollment EnrollCertificateRequest(CX509CertificateRequestCertificate certRequest){    var enroll = new CX509Enrollment();    enroll.InitializeFromRequest(certRequest);    string csr = enroll.CreateRequest();     enroll.InstallResponse(InstallResponseRestrictionFlags.AllowUntrustedCertificate,        csr, EncodingType.XCN_CRYPT_STRING_BASE64, "");     return enroll;}编辑 我目前仅限于 .NET 4.5.x。我遇到的另一个问题是,尝试使用 root 签署证书会引发 CRYPT_E_NOT_FOUND 异常。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 201 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信