我对证书几乎一无所知,关于有CA
,public
和private 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
。它总是告诉我密码不正确。
我究竟做错了什么?