none
根证书的注册表Blob值项代表什么? RRS feed

  • 问题

  • 将一张根证书安装到本地计算机下受信任的根证书存储区,在注册表的相关位置也会有证书的值。
    想问一下各位大佬,注册表的Blob值代表的是什么?

    图片链接:https://img2020.cnblogs.com/blog/1798500/202011/1798500-20201123222016843-1711298929.png

    使用Win32 API安装根证书到根证书存储区的方式得到的Blob值项和使用certlm.msc导入根证书得到的Blob值项是不一样的,Blob值项里是什么信息呢?

     下面是我使用Win32 API安装根证书的关键代码:

    HCERTSTORE hCertStore = NULL;
    hCertStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL, CERT_SYSTEM_STORE_LOCAL_MACHINE, _T("ROOT"));
    if (hCertStore == NULL)
    	{
    		DWORD dwErrorCode = GetLastError();
    		if (dwErrorCode == ERROR_ACCESS_DENIED)
    		{
    			AfxMessageBox(_T("请以管理员启动"));
    			return;
    		}
    	}
    
    
    // pCertContextInFile是从证书文件中得到的PPCERT_CONTEXT
    if (!CertAddCertificateContextToStore(hCertStore, pCertContextInFile, CERT_STORE_ADD_NEW, NULL))
    	{
    		CertFreeCertificateContext(pCertContextInFile);
    		CertCloseStore(hCertStore, CERT_CLOSE_STORE_CHECK_FLAG);
    		AfxMessageBox(_T("证书安装失败"));
    		return;
    	}

    使用此种方法得到的Blob值项是:

    030000000100000014000000D3FBFAA8A67FC9A2EADBF86AEB5D07A9D6AF322E200000000100000023030000+(根证书的十六进制串)

    使用certlm.msc导入根证书得到的Blob值项是:

    0400000001000000100000006C4139B0DBE1C3BEFDC83F5794A2EA0B0F00000001000000140000003D4C691

    DBA6527DD8037BD928839D97FF5DBD21A1400000001000000140000005869C9D5DD14B313A0713C7C038D0

    3E63D0F8E011900000001000000100000004C20CF3A717A7E6C89EB97B723E41CDE0300000001000000140000

    00D3FBFAA8A67FC9A2EADBF86AEB5D07A9D6AF322E5C000000010000000400000000080000200000000100000023030000+(根证书的十六进制串)

    哪种方式得到的Blob的值是正确的?

    2020年11月30日 12:41

答案

全部回复

  • Hi,

    感谢再次发布。

    Blob值代表的是什么?您可以查看此文档:证书BLOB属性

    您是否尝试过CertAddEncodedCertificateToStore?

    另外,你使用的证书类型是什么?

    感谢

    Drake


    "Win32 API" forum will be migrating to a new home on Microsoft Q&A !
    We invite you to post new questions in the "Win32 API" forum’s new home on Microsoft Q&A !
    For more information, please refer to the sticky post.

    • 已标记为答案 Quincy1024 2020年12月2日 1:11
    2020年12月1日 10:08
  • 感谢大佬回复!

    使用的是根证书。

    证书详细内容如下图所示:(账户无法直接发送图片,汗……)

    图片链接:

    https://s3.ax1x.com/2020/12/01/D4mags.png
    https://s3.ax1x.com/2020/12/01/D4mY4g.png
    https://s3.ax1x.com/2020/12/01/D4mNCQ.png

    使用的是Base64编码 X.509格式导出的cer文件,证书文件内容如下所示:

    -----BEGIN CERTIFICATE-----
    MIIDHzCCAgegAwIBAgIEGCVShDANBgkqhkiG9w0BAQUFADAiMQswCQYDVQQGEwJD
    TjETMBEGA1UEChMKQ0ZDQSBDUyBDQTAeFw0xMTA1MjAxNTI3MDVaFw00MTA1MTIx
    NTI3MDVaMCIxCzAJBgNVBAYTAkNOMRMwEQYDVQQKEwpDRkNBIENTIENBMIIBIjAN
    BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAshVScIOG1yHCTl2FSU1XHONBWXcS
    tlJr79ZeOZ8GkH+YFG0U60iaveoYBb4B7gAcc/pprxHEhgVr8uRBjlOAfp9vLrRX
    1dJH00j93T7DXVRchGVjD/4x3zyjKLuNekeiBcA+7ry0m3FCHGSj31Kocw4kfrUc
    +BsDz4gIXJtsu617/AO4bvA+a+nBfxhwnIRNItsCLkO6qJfGIzeGMO+IYJ1s4XzL
    XCsrXM4ofUj6jblh5Cqo7ZwFRa0dV5lmgOz8xBYzvn/t+8HoIlwRq7zAbw1I8IpC
    VYcaE4+aPBK47hY9o9q9+JAqKbYQQwjLW4MSv4GNCKCVHQCeHD0QLoxtQwIDAQAB
    o10wWzAfBgNVHSMEGDAWgBRYacnV3RSzE6BxPHwDjQPmPQ+OATAMBgNVHRMEBTAD
    AQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUWGnJ1d0UsxOgcTx8A40D5j0PjgEw
    DQYJKoZIhvcNAQEFBQADggEBAGXTChXGscLtYcWtYF8v9OLdvzEWXclSAbyPI15S
    PYVrTleGMfUWraszz9CUrypuoYiWTnhr8ldOZ5HmR1IYIcs/XFQztTruAyCbAnMQ
    s2il3WqEZ1N5N5AG9PeAg/EYoLxJ9+lHpNa9fLjMK9x9IzDu6/qtkdDN6NuJgqTX
    6gk8RpSl8PSaxxhmyum6t1adm5S7fj2IlbWdjHcRUQEBn5l7/MNaleGh1q7+5fc3
    sLIC+udfA42SLYrDCAQGJ8UK5ec37hKSKQxT1WXJnSgP5hcYd+Jmb3AeXz7PoR7t
    8TsDYnMum7OHLlLlxm+wmZ1ew+SCTlz1nwhPaDqWOIZmSXc=
    -----END CERTIFICATE-----
    

    2020年12月1日 15:11