2015-10-13 4 views
2

J'essaie de suivre these instructions pour créer un jeton SAML2 en utilisant WIF.Comment puis-je créer un certificat de signature de test?

Les instructions disent

Pour fournir des informations d'identification vous devez la signature à la SecurityTokenDescriptor, d'abord obtenir une référence au certificat de signature en tant instance X509Certificate2. De cela, vous pouvez créer un SecurityKeyIdentifier et produire un SigningCredentials exemple

Le code suivant est fourni:

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; 

J'ai essayé de faire un certificat de test en utilisant makecert qui comprend un sujet identificateur de clé , mais quand je cours un certificat que je fais à travers le code ci-dessus, je reçois le suivant System.NotSupportedException:

'X509SecurityToken' ne prend pas en charge la 'X509SubjectKeyIdentifierClause' création .

Cela se produit lorsque vous appelez cette ligne:

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

Maintenant, je sais que les instructions disent ...

Note: Les certificats créés avec makecert.exe ne comprennent pas un sujet clé identificateur et ne peut donc pas être utilisé de cette manière. Vous devez générer des certificats avec Windows Server ou acheter un certificat auprès de Verisign ou d'un fournisseur équivalent.

... mais je l'ai utilisé l'argument -eku 2.5.29.14, que j'espérais résoudre le problème, et je pense que cette image montre que je l'ai fait droit?

enter image description here

Quelqu'un peut-il me donner des instructions sur la façon dont je peux créer un certificat de test que je peux utiliser pour obtenir ce code de travail, ou me diriger dans la bonne direction? Je ne suis pas sûr de ce qu'ils veulent dire par "Vous devriez produire des certificats avec Windows Server". Est-ce que cela signifie un creating a CSR?

Merci d'avance :)

Répondre

0

à mon humble avis, il serait préférable de simuler le scénario du monde réel afin faire un CA qui délivre le certificat utilisé pour la production jeton SAML. Vous en apprendrez plus sur l'ICP et les certificats, vous résolvez des problèmes de temps de développement, pas de temps de production. Mais techniquement, il n'est pas nécessaire de le faire de cette façon.

donc ce qui doit être fait:

  1. Télécharger XCA
  2. En XCA faire un certificat CA (il a déjà modèle CA donc simplement l'utiliser).Guide peut être trouvé here
  3. Émettre un certificat d'entité finale sous l'autorité de certification. Guide se trouve here
  4. certificat d'exportation CA (sans clé privée) dans un fichier
  5. certificat d'importation CA à magasin racine de confiance dans LocalMachine (utilisation MMC-> Fichier-> ajouter snapin-> certificats, notamment> compte d'ordinateur)
  6. Certificat d'entité finale émis avec une clé privée (format PKCS # 12).
  7. Importez le certificat d'entité finale dans Personal Store dans LocalMachine (utilisez mmc-> Fichier-> add snapin-> certificates-> compte d'ordinateur)
  8. Générez CRL. Guide se trouve here
  9. Placez le LCR à l'endroit que vous avez mis lors de l'émission certificat d'entité ou de le placer dans le magasin racine de confiance dans LocalMachine
  10. Alors X509Certificate2 signingCert = CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, "CN=busta-rpsts.com "); fonctionnera ... probablement. Si ce n'est pas le cas, vous devrez modifier les droits des clés privées (mmc à nouveau) afin que votre compte puisse utiliser la clé privée du magasin personnel de la machine locale.
+0

Merci de répondre. Les boutons de l'application XCA étaient grisés. Finalement, j'ai réalisé que j'avais besoin de créer une base de données. Je vais continuer avec vos instructions demain. –