Det forrige indlæg handlede om at gøre brug af to X.509 certifikater til implementering af WCF message sikkerhed. Nemlig et klient certifikat og et server certifikat. Dette indlæg kommer til at handle om at gøre brug af et enkelt fælles certifikat. Har man ikke lyst til at rode rundt med for mange certifikater, kan denne løsning benyttes. Konfiguration og fremgangsmåden minder meget om det forrige indlæg, dog er der et lille trick ved eksport af X.509 certifikatet, der vil blive beskrevet senere.

Vi starter med at danne et fælles certifikat, dette kan gøres på WCF service host maskinen:

makecert -pe -ss My -sr LocalMachine -a sha1 -sky exchange -n CN=Common

Tryk 'Start' -> Kør 'mmc'

Dette vil starte et konsol vindue, og for at se certifikatet skal man gøre følgende:
Tryk på 'File' -> 'Add/Remove Snap-in...' vælge 'Certificates' under 'Available snap-ins' og trykke på 'Add' -> 'Computer account' -> Next -> Finnish

mmc konsol

Under 'Personal/Certificates' vil man finde certifikatet. Herefter skal "NETWORK SERVICE" tildeles læse rettigheder for at læse den private nøgle på certifikatet.
Højreklik på 'Common' certifikatet -> All Tasks -> 'Manage Private Keys...'.
Herefter gives "NETWORK SERVICE" Full control. Højreklik herefter på 'Common' certifikatet og vælg 'Copy'. Find 'Trusted people\Certificates' og kopier certifikatet herunder.

Certifikatet skal herefter eksporteres. Dette gøres på følgende måde:

Højreklik på 'MyServer' certifikatet -> All Tasks -> Export -> Next -> Vælg 'Yes, export the private key' -> 'Personal Information Exchange - PKCS #12 (.PFX)' -> Next -> Angive et kodeord -> Next -> 'Common' og gem certifikatet.

Kopier herefter certifikatet over på klient maskinen, så den er klar til senere brug.

Nu skal den maskine, der udstiller WCF service konfigureres.

I web.config filen skal følgende konfiguration sættes op.
Web.config filen udvides med konfiguration af certifikat delen:

Efterfølgende sættes klient maskinen op. Først skal 'Common' certifikatet fra tidligere importeres. Dette gøres ved at starte MMC på samme måde som før og tilføje certificates snap-in, 'Computer Account' og herefter højreklikke på 'Personal' -> All Task og vælge import. Højreklik herefter på 'Common' certifikatet og vælg 'Copy'. Find 'Trusted people\Certificates' og kopier certifikatet herunder.

Tildel "NETWORK SERVICE" læse rettigheder på samme måde som før.

Trick!
Eksportér 'Common' certifikatet på følgende måde:
Højreklik på 'Common' certifikatet -> All Tasks -> Export -> Next -> Vælg 'No, do not export the private key' -> Base-64 encoded X.509(.CER) -> 'MyServer' og gem certifikatet. Importér 'Common' certifikatet igen. Dette vil erstatte *.pfx certifikatet med *.cer versionen.

Nu sættes klientens web.config op.

Test applikationen...og det hele burde spille fint uden problemer.

WCF sikkerheds autentificering af klient og server vha. et enkelt X.509 certifikat.