是否可以在 Windows 服务器存储上存储 .PEM 文件并以编程方式读取它

Posted

技术标签:

【中文标题】是否可以在 Windows 服务器存储上存储 .PEM 文件并以编程方式读取它【英文标题】:Is it possible to store .PEM file on windows server store & read it programatically 【发布时间】:2019-01-14 16:21:03 【问题描述】:

通常我们将 .P12(证书)文件保存在 windows 服务器存储中。可以使用this link 存储证书。似乎只允许保存以下扩展。

    .P12 - 个人信息交换 .PFX - 个人信息交换 .P7B - 加密消息语法标准 .SST - Microsoft 序列化证书存储

我使用了 OpenSSL 并从我的 .P12 证书生成了两个 .PEM 文件(私钥和证书)。 是否可以将这些文件存储在 windows server store 中?

我们可以通过以下方式读取证书:

     X509Store store = new X509Store(StoreLocation.CurrentUser);
     store.Open(OpenFlags.ReadOnly);

        X509Certificate2Collection cers = store.Certificates.Find(X509FindType.FindBySubjectName, "My Cert's Subject Name", false);
        if (cers.Count>0)
        
            cer = cers[0];
        ;
        store.Close();

【问题讨论】:

重点是什么?为什么不使用已经支持的.p12 文件? 我正在使用 PhantomJs,但无法使用 .P12 文件。但它适用于 .PEM 文件。 【参考方案1】:

是否可以将这些文件存储在 windows server store 中?

不,你不能,因为微软在将密钥加载到提供程序时使用 CSP(加密服务提供程序)概念,并且提供程序使用私钥处理所有操作。从历史上看,CSP 使用自定义密钥格式,该格式不向后兼容 PKCS#1 或 PKCS#8 密钥格式。

您的想法很简单:针对特定应用使用一对.pem.key 文件。对于其他 Windows 应用,请使用从 PFX 导入的证书存储中的 PFX 或证书。

【讨论】:

以上是关于是否可以在 Windows 服务器存储上存储 .PEM 文件并以编程方式读取它的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在远程 Windows 服务器上确定证书私钥的文件名?

是否可以使用非交互式的默认Windows凭据对远程Git存储库进行身份验证?

是否可以在 C# 中遍历存储在服务器上的所有会话

windows2016双击热备不用共享存储

是否可以在另一台服务器上存储一个特定的 Django 模型/Postgresql 表?

移动了存储库。我是否使用SVN交换机,SVN重定位或其他所有内容