Digital signatur backup-format

Før du går videre her bør du have læst min "disclaimer" i det overliggende afsnit

Der findes et standardformat for beskyttet opbevaring af certifikat og tilhørende privat kryptonøgle. Dette format kaldes PKCS#12 og filer i dette format har oftest extension .p12, .pkcs12 eller .pfx. DanID (dengang TDC) anvendte oprindelige dette format for at sikre interoperabilitet og en platformsuafhængig digital signatur. Imidlertid viste det sig at en række applikationer har en ret let omgang med beskyttelse af den digitale signatur og at brugere kom til at installere certifikat/nøgle uden beskyttelse, blot ved at dobbeltklikke på en PKCS#12-fil og trykke "Næste >>" et par gange.

DanID har valgt at pakke PKCS#12 formatet væk for den almindelige bruger, for at hjælpe med at undgå fejl. Men som du skal se nu, betyder det ikke at det er umuligt at få gravet sin digitale signatur frem i en PKCS#12-fil.

Formatet der anvendes i dag er baseret på HTML. Filen indeholder brugerens ukrypterede certifikat, TDC rodcertifikatet og brugerens certifikat/nøgler i PKCS#12-format. Når siden indlæses i en javascript-baseret browser hentes et javascript fra DanID til håndtering af ovenstående data-klumper. Prøv at checke det ved at åbne dokumentet i din foretrukne tekst-editor.

Som udgangspunkt skal du ikke anvende denne information, da scriptet gerne skulle snuse til din konstallation af browser og operativsystem og tilbyde dig den funktionalitet, som du har brug for. F.eks. vil man på MSIE/Win32 blive tilbudt muligheden for at installere/fjerne signaturen på den aktuelle maskine. Som default vil scriptet tilbyde at gemme i PKCS#12-format (en mulighed MSIE brugere ikke ser). Hvis det af en eller anden grund ikke kan bringes til at virke (f.eks. hvis man IKKE ønsker at tillade javascript) kan man selv trække PKCS#12-klumpen ud af HTML-formatet på følgende måde:

Find PKCS#12-delen i HTML-koden (linien starter med 'pkcs12=')

Kopier alt mellem citationstegnene over i en ny fil (som du f.eks. kan kalde "minSignatur.b64")

Det var første del. Nu har du en fil med en base64-kodet version af certikat+nøgle. Det sidste der skal ske er en base64-dekodning og det kan gøres vha. af utallige forskellige produkter (prøve at søge "base64" på Google). Anvend dog ikke online-værktøjer, da vi jo her bl.a. snakker om din private signaturnøgle!

Her beskriver jeg hvordan det gøres vha. open source værktøjet OpenSSL, da det er vidt udbredt og fordi der lige er en lille twist, når man bruger OpenSSL.

OpenSSL har det skidt med base64-indkodet data, der ikke har linieskift, så før du gør noget andet skal du åbne "minSignatur.b64"-filen i din foretrukne tekst-editor og tilføje et linieskift efter hver 64. tegn. Nu er du klar til dekodningen. I en command-prompt skriver du:

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

Nu har du en binær PKCS#12-fil, "minSignatur.pkcs12". That's its!

HUSK AT RYDDE OP EFTER DIG. SLET F.EKS. "minSignatur.b64"