【问题标题】:How to get the certificate password from a self signed certificate如何从自签名证书中获取证书密码
【发布时间】:2020-05-04 13:43:01
【问题描述】:

我想从带有证书的 Azure 应用注册中获取令牌。
我按照说明 here 并使用 Powershell 生成了一个自签名证书。我还将公钥导入到门户中。 但如果我想通过 .NET 访问应用程序,我需要提供以下 MSAL 配置:

CertificateFileContents 只是我从 certgmgr 导出的公钥。但是我应该把什么作为 CertificatePass?这是哈希吗?还是私钥?我在文档中找不到任何内容,而且上面的链接也没有给我任何建议...

我也不太明白为什么私钥没有导入到门户中?

【问题讨论】:

    标签: azure oauth azure-active-directory msal


    【解决方案1】:

    根据我的经验,导出私钥时应该需要 CertificatePass。

    本文档之前有这样的内容:

    导出私钥,指定证书文件的密码,然后 导出到文件。

    但现在它只告诉你导出一个公钥。详情可从this issue查看。

    所以基于SharePoint document,如果你从本地机器读取PFX文件,我认为你应该使用带密码的私钥。

    【讨论】:

    • 正是这个问题让我感到困惑。我是否需要私钥来保护我的应用注册?还是公钥足够?为什么只需要一个公钥?即使我导出了一个私钥,我也只能得到一个二进制文件,我不能从上面的配置文件中将其用作输入。对我来说,与应用注册有关的整个私钥/公钥的文档记录不足...我了解 SSL 证书和签名/验证的概念,但我不明白它如何与应用注册一起使用...
    • @DavidElsner 理论上,公钥和私钥都应该是可行的。但我不知道你的配置文件是如何实现的。是来自 GitHub 的示例代码吗?
    • 来自文档。最后,我从 .NET 创建了一个证书。构造函数从 base64 获取字节和证书密码,例如:_certificate = new X509Certificate2(certBytes, options.CertificatePass);
    • @DavidElsner 所以这个问题解决了吗?您可以添加答案并将其标记为已回答。这对其他社区成员可能是有益的。谢谢。
    【解决方案2】:

    好的,CertificatePass 是证书本身的密码。
    Azure 门户本身只持有公钥。
    客户端应用程序需要为整个证书提供私钥和公钥。
    如果您从 Windows 10 中的证书管理器导出私钥/公钥,您将无法直接将其导出为 base64,但您可以创建一个 pfx 文件。
    以后可以使用您选择的工具将这些文件编码为 Base64。例如this
    您的证书的密码必须是 CertificatePass,FileContents 是 Base64 公钥和私钥,但使用密码解密。

    这当然只是一种用于测试目的的方法。在生产环境中,您宁愿使用密钥保管库或类似的东西,以便在您的 appsettings.json 中没有任何秘密。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-10
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      • 2012-09-08
      • 2015-05-23
      相关资源
      最近更新 更多