2015-10-13 118 views
2

我正在尝试关注these instructions以使用WIF创建SAML2标记。如何创建测试签名证书?

的指示说

要提供签约凭据SecurityTokenDescriptor,必须 首先得到签名证书作为 X509Certificate2实例的引用。

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

我试图让使用makecert包括主题密钥识别测试证书:这个,你可以创建一个 SecurityKeyIdentifier并产生SigningCredentials实例

下面的代码提供,但是当我通过上面的代码运行任何证书时,我会得到以下代码System.NotSupportedException

'X509SecurityToken'不支持'X509SubjectKeyIdentifierClause' 创建。

new X509SecurityToken(signingCert).CreateKeyIdentifierClause<X509SubjectKeyIdentifierClause>() 

现在我知道了指示说...

注:与makecert.exe创建的证书不包括主题 关键

这调用此线时出现标识符,因此不能以这种方式使用。您应该使用Windows Server产品证书 或从Verisign或同等供应商处购买证书 。

...不过我用的说法-eku 2.5.29.14,我希望这将解决这个问题,我觉得这个图像显示,我已经做到了吗?

enter image description here

谁能给我我如何可以创建我可以用它来获取此代码的工作,或点我的方向是正确的测试证书的说明?我也不确定它们是什么意思,“您应该使用Windows Server生成证书”。是否提前意味着creating a CSR?

谢谢:)

回答

0

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

需要做那么什么:

  1. 下载XCA
  2. 在XCA使CA证书(它已经CA模板,只是用它)。可以找到指南here
  3. 在CA下发出最终实体证书。指南可以发现here
  4. 导出CA证书(无私钥)到一个文件
  5. 导入CA证书到受信任根存储在LOCALMACHINE(使用mmc->文件 - >添加snapin->证书─>计算机帐户)
  6. 使用私钥(PKCS#12格式)导出颁发的最终实体证书。
  7. 将最终实体证书导入LocalMachine中的个人存储(使用mmc-> File-> add snapin-> certificates-> computer account)
  8. 生成CRL。指南可以发现here
  9. 放置在CRL你发出最终实体证书时,放置或放置在受信任根存储在LOCALMACHINE
  10. 然后X509Certificate2 signingCert = CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, "CN=busta-rpsts.com ");将工作......大概位置。如果没有,您将不得不修改私钥的权利(mmc再次),以便您的帐户可以使用私钥从本地机器的个人存储。
+0

感谢您的回复。 XCA应用程序上的按钮呈灰色。最终我意识到我需要创建一个数据库。我明天继续你的指示。 –