如何创建测试签名证书?

我正在尝试按照这些说明使用WIF创建SAML2令牌。

说明说

要向SecurityTokenDescriptor提供签名凭据,您必须首先获得对签名证书的引用作为X509Certificate2实例。 从中您可以创建SecurityKeyIdentifier并生成SigningCredentials实例

提供以下代码:

X509Certificate2 signingCert = CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, "CN=busta-rpsts.com "); SecurityKeyIdentifier ski = new SecurityKeyIdentifier(new SecurityKeyIdentifierClause[] { new X509SecurityToken(signingCert).CreateKeyIdentifierClause() }); X509SigningCredentials signingCreds = new X509SigningCredentials(signingCert, ski); descriptor.SigningCredentials = signingCreds; 

我尝试使用包含主题密钥标识符的makecert制作测试证书,但是当我运行通过上面代码生成的任何证书时,我得到以下System.NotSupportedException

‘X509SecurityToken’不支持’X509SubjectKeyIdentifierClause’创建。

调用此行时会发生这种情况:

 new X509SecurityToken(signingCert).CreateKeyIdentifierClause() 

现在我知道说明说……

注意:使用makecert.exe创建的证书不包含主题密钥标识符,因此不能以此方式使用。 您应该使用Windows Server生成证书或从Verisign或同等提供商处购买证书。

…但是我使用了-eku 2.5.29.14的论据,我希望能解决这个问题,我认为这张图片表明我做得对吗?

在此处输入图像描述

任何人都可以给我说明我如何创建一个测试证书,我可以使用它来使这段代码正常工作,或指向我正确的方向? 我也不确定他们的意思是“你应该用Windows Server生成证书”。 这是否意味着创建CSR?

提前致谢 :)

恕我直言,最好模拟真实场景,以便创建一个CA,它将发出用于生成SAML令牌的证书。 您将了解有关PKI和证书的更多信息,解决开发时间中的问题,而不是生产时间。 但从技术上讲,不需要这样做。

那么需要做些什么:

  1. 下载XCA
  2. 在XCA中制作CA证书(它已经有CA模板,所以只需使用它)。 指南可以在这里找到
  3. 在CA下颁发终端实体证书。 指南可以在这里找到
  4. 将CA证书(不带私钥)导出到文件
  5. 将CA证书导入LocalMachine中的受信任的根存储(使用mmc->文件 – >添加snapin->证书 – >计算机帐户)
  6. 导出已发布的带有私钥的终端实体证书(PKCS#12格式)。
  7. 将最终实体证书导入LocalMachine中的个人存储(使用mmc->文件 – >添加snapin->证书 – >计算机帐户)
  8. 生成CRL。 指南可以在这里找到
  9. 将CRL放在发布最终实体证书时放置的位置,或将其放在LocalMachine中的受信任的根存储中
  10. 然后X509Certificate2 signingCert = CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, "CN=busta-rpsts.com "); 可能会工作…… 如果没有,您将不得不修改私钥权限(再次mmc),以便您的帐户可以使用本地计算机个人存储中的私钥。