2015-10-13 3 views
2

Я пытаюсь выполнить these instructions, чтобы создать токен SAML2 с использованием WIF.Как создать сертификат подписывания теста?

инструкции говорят

Для обеспечения подписания полномочий на 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<X509SubjectKeyIdentifierClause>() }); 
X509SigningCredentials signingCreds = new X509SigningCredentials(signingCert, ski); 
descriptor.SigningCredentials = signingCreds; 

Я попытался сделать тестовый сертификат, используя MakeCert, который включает в себя идентификатор ключа субъекта , но когда я запускаю какой-либо сертификат, который я делаю с помощью вышеуказанного кода, я получаю следующее: 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

ИМХИ было бы лучше, чтобы имитировать реальный мир сценарий так сделать центр сертификации, который будет выдавать сертификат, используемый для маркеров SAML поколения. Вы узнаете больше о PKI и сертификатах, решаете проблемы во время разработки, а не время производства. Но технически это не нужно делать так.

Так что должно быть сделано:

  1. Скачать XCA
  2. В XCA выписывать сертификат CA (это уже шаблон CA так просто использовать его).Руководство можно найти here
  3. Выдать сертификат конечного объекта под CA. Руководство можно найти here
  4. Экспорт CA сертификат (без секретного ключа) в файл
  5. Импорт CA сертификата доверенного корневого хранилища в LocalMachine (используйте mmc-> Файл-> добавить snapin-> certificates-> учетной записи компьютера)
  6. Экспортированный сертификат конечного объекта с закрытым ключом (формат PKCS # 12).
  7. Импортировать сертификат конечного объекта в Личный магазин в LocalMachine (используйте mmc-> Файл-> добавить snapin-> certificate-> учетную запись компьютера)
  8. Создать CRL. Руководство можно найти here
  9. Поместите CRL в месте, которое вы поставите при выдаче сертификата конечного лица или поместить его в хранилище доверенных корневых в LocalMachine
  10. Тогда X509Certificate2 signingCert = CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, "CN=busta-rpsts.com "); будет работать ... наверное. В противном случае вам придется изменить права на секретный ключ (mmc снова), чтобы ваша учетная запись могла использовать закрытый ключ из личного хранилища личных компьютеров.
+0

Спасибо, что ответили. Кнопки в приложении XCA были выделены серым цветом. В конце концов я понял, что мне нужно создать БД. Завтра я продолжу ваши инструкции. –

Смежные вопросы