Я почти ничего не знаю о сертификатах, так как есть CA
, public
и private key
, и я учусь, когда я иду. Я создаю логин SSO, используя SAML 2
, который у меня работает с исключением добавления элемента <Signature>
.Подпись - сертификат X509 с закрытым ключом - SAML2
Создание сертификата:
У меня есть копия 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
EDIT: Он просит у меня пароль. Я вводил тот же пароль (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
. Это ВСЕГДА сообщает мне, что пароль неверен.
Что я делаю неправильно?
Вам необходимо загрузить pfx not cer. сертификат ТОЛЬКО имеет открытый ключ. PFX представляет собой пакет cert и закрытый ключ. – pm100
, и вы должны знать, что makecert.exe устарел и больше не поддерживается. – Crypt32
@ pm100 - ОК, но почему «закрытый ключ» всегда неверен, когда я пытаюсь либо импортировать в «MMC» и/или загружать, используя «X509SigningCredientals»? –