0

我对证书几乎一无所知,关于有CA,publicprivate key, 我正在学习。我正在使用创建 SSO 登录SAML 2,我使用添加<Signature>元素的例外情况。

创建证书:

我有一个副本,makecert.exe并且pvk2pfx.exe在一个目录中。我打开cmd并输入以下内容:

makecert -r -pe -n "CN=Test Cert" -sky exchange -sv testcert.pvk testcert.cer

弹出一个对话框,要求输入密码并确认密码,我输入。弹出另一个对话框,询问密码(我假设这与我之前输入的密码相同,我一直在这样做)。testcert.cer这将在同一目录中创建一个。

然后我把它输入cmd

pvk2pfx -pvk testcert.pvk -spc testcert.cer -pfx testcert.pfx

编辑:它要求我输入密码。我输入了与private key创建cer.

它在目录中创建一个pfx文件。


这就是我感到困惑的地方。如果我将cer文件导入MMC,我可以访问它:

        X509Certificate2 cert = null;

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

        var storeCollection = store.Certificates.Find(X509FindType.FindBySubjectName, "Test Cert", false);
        if (storeCollection.Count == 1)
        {
            cert = storeCollection[0];
        }

        if (cert == null)
        {
            throw new ArgumentNullException("Certificate", "No certificate found.");
        }

        store.Close();

但是,当我这样做时,私钥(属性)是null. 我读到私钥在pfx文件中。所以,我没有访问商店,而是这样做:

privateKey是我在创建证书时使用的私钥makecert.exe

X509SigningCredentials clientSigningCredentials = new X509SigningCredentials(
     X509Certificate2(@"c:\directory\testcert.pfx", privateKey, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable));

我收到一个错误:The specified network password is not correct.

我还尝试将pfx文件导入MMC,而不是cer文件。它要求我输入密码。我把密码放在我用来创建证书的密码中makecert.exe。它总是告诉我密码不正确。

我究竟做错了什么?

4

1 回答 1

0

我相信makecertandpvk2pfx在某种程度上是不正确的。我知道这不是答案,但我发现了这个漂亮的小工具:

PluralSight 的自我证书

基本上做了同样的事情,但是当我查看证书时,它有:

您有一个与此证书对应的私钥

另一个testcert.cer没有这个。

现在代码

X509SigningCredentials clientSigningCredentials = new X509SigningCredentials(
 X509Certificate2(@"c:\directory\testcert.pfx", privateKey, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable));

回来没有问题,我的 SAML 断言很好。

于 2015-02-25T18:11:15.287 回答