Avatar billede kennethjohnsen Nybegynder
01. oktober 2009 - 11:27 Der er 7 kommentarer og
1 løsning

Send password med digital signatur

Jeg har noget kode der snakker med en webservice:

        Dim certFile As String = ConfigurationManager.AppSettings.Get("CertificateFile")

        certificate = X509Certificate.CreateFromCertFile(certFile)

        service.ClientCertificates.Add(certificate)
       
        // Kode der kalder servicen her.

Problemet er bare at den popper op og beder om password til signaturen. Dette vil jeg gerne have til at ske programmatisk.

Jeg ved at man fra .NET 2.0 kan sende password med et certifikat, men jeg kan ikke helt regne ud hvordan.

Mvh. Kenneth.
Avatar billede sirius Nybegynder
01. oktober 2009 - 12:58 #1
Kan du ikke gøre sådan her i stedet:
certificate = new X509Certificate(certFile, "password")
Avatar billede kennethjohnsen Nybegynder
01. oktober 2009 - 13:42 #2
Har jeg også prøvet. Den popper stadig op og beder om password.
Jeg har også prøvet med X509Certificate2, men det giver samme resultat.
Avatar billede neess Nybegynder
26. oktober 2009 - 14:44 #3
Det skyldes certificatet er eksporteret med stærk password beskyttelse. Herved kommer den op og spørger hver gang efter password.

Det du kan gøre er at installere det.
åbne start->kør->mmc
I dette program tilføjer du et snap in og vælger certifikater.

Du kan nu finde der hvor du har installeret dit certfikat og eksportere det igen, her skal du være opmærksom på der ikke skal være kryds i stærk kryptering. Er der ikke dette, kan du sende password med i din kode, uden den popper up efter det.
Avatar billede kennethjohnsen Nybegynder
26. oktober 2009 - 17:24 #4
Efter jeg har tilføjet snap-in'et i MMC, kan jeg godt finde mit certifikat, højreklikke på det, og vælge "All tasks" og så "Export".

Nu får jeg en "Certificate export wizard", som ligner den jeg brugte til at lave cer-filen i første omgang (det var bare fra Internet Explorer).

I det første billede i denne wizard, spørger den om jeg vil eksportere private key, men jeg kan kun vælge "No, do not export the private key". (det er måske nok her filmen knækker?).

I næste billede kan jeg vælge mellem "DER encoded binary x.509 (.CER)", "Base-64 encoded X.509 (.CER)" og "Cryptographic Message Syntax Standard - PKCS #7 Certificates (.P7B)." (her har jeg tidligere valgt DER).

I sidste billede kan jeg give filen et navn.

Der er ikke rigtigt noget sted jeg kan vælge stærk kryptering til eller fra.

Når jeg kører min kode får jeg igen password-prompten, og da denne er komplet med DanID logo og det hele, tror jeg at den regner ud at private key ikke er i filen, men at den kan finde den i det tilsvarende certifikat i den lokale certifikat-store, og så popper DanID-boksen op.

Det skal siges at mit certifikat er et DanID virksomhedscertifikat, som jeg har modtaget på samme måde som en digital signatur, og installeret på samme måde.

Måske er problemet at jeg ikke får private key ud i filen, og det er nok den, den vil bruge til at kommunikere med webservicen.


Mvh. Kenneth.
Avatar billede neess Nybegynder
26. oktober 2009 - 18:36 #5
Det skyldes da certificatet blev installeret blev det markeret til at den private nøgle ikke må eksporteres.

Der findes et link til en Dan ID hjemmeside hvor du kan komme til at eksportere nøglen til en pkcs med den private nøgle.

Herefter kan du installere det, og eksportere det igen.
Måske kan man faktisk allerede fra eksporten via DAN id vælge at gøre det med svag sikkerhed.

Kan finde linket til dig i morgen, til hvordan du eksportere med privatekey
Avatar billede kennethjohnsen Nybegynder
26. oktober 2009 - 18:53 #6
Det ville være guld.
På forhånd tak!

Mvh. Kenneth.
Avatar billede kennethjohnsen Nybegynder
28. oktober 2009 - 10:17 #7
Fandt du det link til DanID hjemmesiden?

Mvh. Kenneth.
Avatar billede kennethjohnsen Nybegynder
29. oktober 2009 - 13:57 #8
Jeg har fundet løsningen, og det var, som neess ganske rigtigt skrev, fordi det ikke var muligt at eksportere den private nøgle.

Løsninger er, at klippe pkcs12-nøglen ud af DanID backup'en (den HTML fil man kan lave fra DanID softwaren).

Dernæst skal denne gemmes i en separat fil, og dekodes.

Jeg har gjort det ved at gemme den som en .b64 fil, og bruge:

openssl enc -d -a -in DS.b64 -out DS.pkcs12

Herefter afinstalleres DanID softwaren.

Den resulterende DS.pkcs12 fil importeres i FireFox.

Nu bruges FireFox til at tage en backup af den (den spørger om et nyt password undervejs, som udemærket kan være det samme som det gamle).

Backup'en resulterer i en .p12 fil som jeg kan bruge.

Som Sirius skrev:

certificate = new X509Certificate2(certFile, "password")


Mvh. Kenneth.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester