Hey, I have a success. And in part thanks to the original MS guy in the MSDN managed newsgroup. So I owe him an apology.
Instead of browsing the Cert Authority website from http://localhost whilst logged on as the admin. I ended up granting my regular account 'Enroll' permissions for Code Sign template and browsing the web site from a client PC logged in with regular account. Now the 'mark keys as exportable' check box is enabled.
For the benefit of anybody else who struggling to figure this out I have documented what I needed to do below:
After Certificate Services is installed on Windows 2003 server.
Log on to server as admin.
Run up the Certificate Templates snap-in.
Right-Click the Code Signing template->Properties->Security Tab-> Enable 'enroll' permission for whoever will need to to request a Code-Signing cert. Maybe use 'Authernticate Users' group
Run up the Certification Authority snap-in.
Right-Click Certificate Templates->New->Certificate Template to Issue -> Code Signing
Enable IIS, ASP pages, and the CertSrv virtual directory if any of this is switched off/locked down.
From the client desktop and account of user requiring cert.
Browse to http://<server name>/CertSrv
-> Request a certificate
-> Advanced Certificate request
-> Create and submit a request to this CA
Type of cert needed:
code signing cert
Key Option:
Create new keyset checked
CSP: Microsoft enhanced RSA and AES Crypto provider ( should be the bottom option )
KeyUsage: signature
KeySize: 2048 ( or 4096 )
Check automatic key container name
check - mark keys as exportable
check - export keys to file ( give the .pvk file )
check - enable strong key protection
Additional Options:
Request format: cmc
hash algo: sha1
Hit submit
pvk file should be downloaded to filepath specified
and you should get a pending request page
Log back into server as admin
Run up the Certification Authority snap-in.
Pending Requests -> Right-click on freshly waiting cert->Issue
From the client desktop and account of user requiring cert.
Browse to http://<server name>/CertSrv
-> View the status of pending certificate request
Download the waiting cert
Use cert2spc.exe to generate spc file.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfsoftwarepublishercertificatetesttoolcert2spcexe.asp