如何自动将Windows根证书导出到文件?

2023-12-12

在 Windows 机器上,我想创建一个 C++ 代码,将 Windows 根证书导出到.pem \ .crt文件(就像 certmgr.msc 工具允许我手动执行的操作一样)。 目前正在挖掘 Windows 的 cryptoAPI 文档,但没有找到任何东西。

编辑: 使用下面的解决方案后,PEM 证书将以以下格式创建(行之间不必要的换行符和末尾的额外字符): -----BEGIN CERTIFICATE-----

MIICvDCCAiUCEEoZ0jiMglkcpV1zXxVd3KMwDQYJKoZIhvcNAQEEBQAwgZ4xHzAd

BgNVBAoTFlZlcmlTaWduIFRydXN0IE5ldHDvCMSxFzAVBgNVBAsTDlZlcmlTaWdu

....

Rj1QNAufcFb2jip/F87lY795aQdzLrCVKIr17aqp0l3NCsoQCY/Os68olsR5KYSS

3P+6Z0JIppAQ5L9h+JxT5ZPRcz/4/Z1PhKxV0f0RY2M=

-----证书结束-----

我不相信它会被 openSSL 接受,这是什么原因?


您正在寻找的是CertEnumCertificatesInStore功能。 另外,如果您想将证书保存在 PEM 中,您将需要加密二进制转字符串.

#include <Windows.h>
#include <wincrypt.h>
#include <string>
#include <fstream>
#include <vector>

#pragma comment(lib, "crypt32.lib")

int _tmain(int argc, _TCHAR* argv[])
{
    DWORD num = 1;
    /* open root certificate store */
    HCERTSTORE hCertStore = CertOpenSystemStore(NULL, L"ROOT");

    PCCERT_CONTEXT pCert = nullptr;
    while (pCert = CertEnumCertificatesInStore(hCertStore, pCert))
    {
        /* if you need save certificate in PEM */
        DWORD size = 0;
        CryptBinaryToString(pCert->pbCertEncoded, pCert->cbCertEncoded, CRYPT_STRING_BASE64HEADER, nullptr, &size);
        std::vector<wchar_t> pem(size);
        CryptBinaryToString(pCert->pbCertEncoded, pCert->cbCertEncoded, CRYPT_STRING_BASE64HEADER,
            pem.data(), &size);

        std::wstring pem_cert = std::to_wstring(num) + L".pem";
        std::wofstream pem_cert_file(pem_cert, std::ios::binary | std::ios::out);
        pem_cert_file.write(pem.data(), pem.size() - 1);


        /* or if you need save certificate in binary form (DER encoding)*/
        std::string der_cert = std::to_string(num) + ".cer";
        std::ofstream der_cert_file(der_cert, std::ios::binary | std::ios::out);
        der_cert_file.write(reinterpret_cast<char*>(pCert->pbCertEncoded), pCert->cbCertEncoded);
        ++num;
    }

    CertCloseStore(hCertStore, 0);
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何自动将Windows根证书导出到文件? 的相关文章

  • Facebook 对象调试器:Curl 错误:SSL_PEER_CERTIFICATE SSL:没有备用证书使用者名称

    我无法使用 Facebook 对象调试器 lint 工具 测试网站上的开放图标签 https developers facebook com tools debug og object https developers facebook c
  • 在 Jetty 运行时设置 ssl 密钥库

    是否可以在运行时更改密钥库 目前我正在设置 SSL 然后再执行 server start sslContextFactory setTrustStore ks sslContextFactory setTrustStorePassword
  • 在我的例子中以编程方式安装 X509 证书

    我正在开发一个Android项目 我有一个 PEM 证书字符串 BEGIN CERTIFICATE MIIEczCCA1ugAwIBAgIBADANBgkqhkiG9w0BAQQFAD AkGA1UEBhMCR0Ix EzARBgNVBAg
  • Java 应用程序中 PKIX 路径构建失败

    将应用程序从 Windows 2000 迁移到 Windows 2008 R2 Server 后 我花了将近一周的时间才让我的应用程序正常运行 步骤 安装Java JDK 1 7 0 25 设置系统环境变量JAVA HOME to C Pr
  • Dart 将客户端 Socket 升级为 WebSocket

    Since WebSocket https api dartlang org stable 2 1 0 dart io WebSocket class html在 Dart 中不允许直接设置安全上下文 https api dartlang
  • 无法验证 SSL 证书

    我想做的事 与以下人员保持干净的联系openssl connect到远程站点 网站似乎是自签名的 What I m getting CONNECTED 00000003 depth 0 CN DC01 home pri verify err
  • 如何使用 iText 对 pdf 进行数字签名?

    如何使用 iText 签署 pdf 我正在经历这个LINK http itextpdf sourceforge net howtosign html但不了解 my private key pfx 我真的需要数字签名证书吗 请澄清我 提前致谢
  • 如何在 Android 4.1+ 上将自签名 SSL 证书导入到 Volley

    我开发的android应用程序使用Volley 所有通信均通过HTTPS联系 因为我是在本地环境测试的 所以我对Tomcat使用自签名证书 之前我只有安卓2 3 and 3 0设备 现在我也有了4 1和4 4 我的实现使用这种方法 http
  • 当建立 TLS / LDAP 或 TLS / HTTP 连接时,线路上会发生什么?

    我正在重新表述我的问题 希望能得到更好的答复 我问了类似的问题这里服务器故障 https serverfault com questions 178561 what are the exact protocol level differen
  • 使用openssl从服务器获取证书

    我正在尝试获取远程服务器的证书 然后可以将其添加到我的密钥库中并在我的 Java 应用程序中使用 一位高级开发人员 正在度假 告诉我我可以运行这个 openssl s client connect host host 9999 获取转储的原
  • SSL 到底如何工作?

    SSL 是如何工作的 证书安装在客户端 或浏览器 和服务器 或Web服务器 的哪里 当您在浏览器中输入 URL 并从服务器获取页面时 信任 加密 身份验证过程如何启动 HTTPS协议如何识别证书 当证书负责所有信任 加密 身份验证工作时 为
  • 配置Apache将SSL客户端证书发送到后端服务器

    我想配置 Apache 以便它接收客户端证书 并将其传递到另一台服务器 我在用着 Windows 上的 Apache 2 0 65 后端服务器是基于 apache 的解决方案 IBM HTTP Server 我尝试了这个配置
  • 获取证书链

    我正在 Java 中使用 X509 证书 给定一个证书 是否可以在签名层次结构中找到所有其他证书 直到找到根证书 我有一个证书文件 带有 cer扩展名 我想提取父签名证书 我想继续查找该证书的父证书 直到获得最终的自签名根证书 我已经检查了
  • 如何正确配置Tomcat SSLHostConfig?

    我正在按照本教程在 tomcat 中启用 ssl https medium com raupach how to install lets encrypt with tomcat 3db8a469e3d2 https medium com
  • 如何在 C# 中创建 PKCS12 .p12 文件?

    这可能是一个n00b问题 但我在这方面确实没有任何经验 我需要创建一个包含 X509 证书和私钥的 p12 捆绑包 我当前有两个对象 X509Certificate2 和包含关键信息的 RSAParameters 对象 如何将它们合并到 p
  • 如何在 C# 中通过指纹查找证书

    我正在使用此代码通过指纹查找证书 证书存在于个人证书存储中的证书管理器中 但此代码未找到该证书 请告诉我我哪里做错了 namespace ConsoleApplication1 class Program static void Main
  • 如何在docker的keycloak中添加SSL

    我在将 SSL 证书添加到在 docker 上运行的 Keycloak 时遇到问题 我通过负载均衡器从 AWS EC2 获得了 SSL 证书 但不知道如何将其添加到 docker 上的 Keycloak 中 我正在通过谷歌搜索 但尚未找到任
  • Android SSL 无对等证书

    我有一个例外 没有同行证书 当我询问谷歌时 我得到了解决方案 我信任所有证书 但这个问题的答案是 它是不安全的 所以我给班级打电话 HostnameVerifier hostnameVerifier org apache http conn
  • 使用 cryptoapi CryptImportKey 导入公钥时出错

    我想将公钥 blob 导入到 CSP 但发生了错误 BYTE pbData 0xEB 0x2A 0x38 0x56 0x86 0x61 0x88 0x7F 0xA1 0x80 0xBD 0xDB 0x5C 0xAB 0xD5 0xF2 0x
  • Apache 2.4.9 在启用 ssl 模块并设置 ssl 证书后失败

    Apache 在尝试设置 ssl 证书后抛出以下错误 ssl emerg pid 30907 AH02572 Failed to configure at least one certificate and key for localhos

随机推荐

  • 如何在linux上运行aout?

    问题是如何在 Linux 系统上执行 aout format 二进制文件 我的意思是旧格式 例如在迁移到 ELF 之前在 FreeBSD 上使用的格式 是否有可能在没有额外编码的情况下做到这一点 是否有一些现有的解决方案 也许它应该是 Li
  • Laravel 8 - 外键约束的形成不正确

    我不知道出了什么问题 因为我对此很陌生 Product Model class Product extends Model use HasFactory public function store return this gt belong
  • Heroku —“很抱歉,出了点问题”

    嗨 我对 Heroku 还很陌生 我已经完成了我的应用程序的一部分 目前我在本地工作 但我想部署到 Heroku 当我打字时heroku logs我懂了 2012 07 30T16 36 27 00 00 app web 1 DEPRECA
  • 在 Firebase 中创建用户时出现错误

    所以我正在关注精明的应用程序教程以学习 Vue js 本教程使用 Firebase 和 Firestore 由于 Firestore 处于 Beta 阶段 正如教程所述 因此可能会发生变化 我认为这里可能就是这种情况 无论如何 我正在尝试注
  • 在 Sweave 中制作扁平化 pdf

    因此 我正在使用 Sweave 创建 pdf 其中包含一些带有大量点的图表 我可以很好地获取 pdf 但它似乎用大量图层创建了它 因此很难在 Acrobat 或 Reader 中打开该文件 当我这样做时 我确实可以看到文档上加载的点 有没有
  • Postgres 是否提供刷新缓冲区缓存的命令?

    你好 有时我需要做一些 SQL 调优任务 我通常在我的测试数据库上做这样的测试 当我执行一条sql语句后 我想刷新包含SQL的缓冲区缓存 语句和sql结果 就像Oracle中的命令 Alter system flash buffer cac
  • 如何添加和删除CSS类

    如何删除CSS默认类 这是我的div div 这是我的 css 类 messageContainer height 26px color FFFFFF BACKGROUND COLOR 6af VERTICAL ALIGN middle T
  • 身份管理/SSO 解决方案? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 您对基本的集中式身份管理 SSO 服务有何建议 它必须是开源的 具有可插入的身份管理器 例如 LDAP DB openID 等 并提供一系列适当的
  • 生成新的 Nestjs 模块会导致错误:无法执行命令

    我使用带有 M1 芯片的 MacOS monterey 作为操作系统 使用以下命令安装 NestJS cli sudo npm install g nestjs cli 使用创建新的 Nest 项目时nest new message一切正常
  • 使用 XSLT 合并相邻的兄弟节点

    我有一个问题让我头疼极了 请帮我 输入是 p class section section 1 p p class code some code p p class code following code p p class code fol
  • 如何在Javascript中深度复制(克隆)具有数组成员的对象?

    介绍 我有一个班级Persons包含一个数组Person和功能 function Persons this mItems Array of Objects Person Persons prototype calculateScores f
  • JavaScript 中未声明变量的用法

    如果我们尝试使用未声明但允许为其设置值的变量 为什么 JavaScript 会抛出引用错误 e g a 10 creates global variable a and sets value to 10 even though its un
  • 使用 Maven 运行多个类

    我有一个包含多个类的包 每个类都封装了一个可执行程序 即带有 main 方法 即 com myorg examples classA com myorg examples classB etc 所有类都属于同一个包 com myorg ex
  • 为什么通过泛型类型映射闭集不允许解析重复?

    In 这段 TypeScript 代码 也在下面重复 有一个映射类型 type DRYObjectModelMap PlanetaryBodyClass in keyof FieldNameWithValueMap ObjectModel
  • 如何将分隔的字符串转换为表格布局?

    我有一个包含值的字段 CM45024 CM45025 CM45026 我想使用子报告将其分成多个项目 我的 jrxml 来源是
  • 如何对元素进行排序并将它们存储在变量中,XSLT

    我想知道是否可以先对一些元素进行排序并将它们 已排序 存储在变量中 我需要引用它们认为 XSLT 这就是为什么我想将它们存储在变量中 我试图执行以下操作 但似乎不起作用
  • 在 rspec 功能测试中使用 Devise

    我编写了以下 rspec 功能测试规范 require rails helper RSpec describe Team management type feature do user sign in describe User creat
  • PyFPDF 内部链接

    内部链接应该如何做 我尝试从第 1 页链接到第 2 页 效果很好 但从一页到第二页是行不通的 怎么了 from fpdf import FPDF pdf FPDF pdf add page pdf set font Arial B 16 t
  • Java:在运行时将类添加到 Jar 存档中

    我想在运行时将一些编译的类 class 文件 添加到当前 Jar 文件中的目录 包 我怎样才能做到这一点 Thanks 这是无法完成的 要更新 Jar 文件 您需要创建一个新文件并用新文件覆盖旧文件 以下是有关如何执行此操作的示例 impo
  • 如何自动将Windows根证书导出到文件?

    在 Windows 机器上 我想创建一个 C 代码 将 Windows 根证书导出到 pem crt文件 就像 certmgr msc 工具允许我手动执行的操作一样 目前正在挖掘 Windows 的 cryptoAPI 文档 但没有找到任何