Version 4, last updated by tzangerl at June 23, 2010 UTC
Browser requests
Confusa certificiate requests can also be made within the browser window. The crypto APIs of the different browsers are accessed to generate a CSR and a corresponding key. The key goes to the browser's keystore while the CSR will be signed by the CA and reimported into the browser once that is done. The browser can identify matching public/private key pairs and allow the user to export the result, most of the time in form of a PKCS#12 file.
The following table shows the currently supported browsers in Confusa:
Browsers tested to not work:
Google Chrome on Vista (will not generate any keys using the keygen tag)
The following table shows the currently supported browsers in Confusa:
| Browser | Used method | Request format | Response format | Tested version |
|---|---|---|---|---|
| Internet Explorer (pre Vista) | Xenroll.dll (via JavaScript) | PKCS#10 | PKCS#7 (full chain) | IE 7 on Windows Server 2003 |
| Internet Explorer (post Vista) | CertEnroll.dll (via JavaScript) | PKCS#10 | PKCS#7 (full chain) | IE 8 on Windows Vista |
| Firefox | keygen-tag | SPKAC | PKCS#7 (cert-only) | Firefox 3.0.13 on Ubuntu 8.10 |
| Safari | keygen-tag | SPKAC | PKCS#7 (cert-only), user must doubleclick | Safari 3 on MacOS X |
| Opera | keygen-tag | SPKAC | PKCS#7 (cert-only) | Opera 9.64 on Ubuntu 8.10 |
Browsers tested to not work:
Google Chrome on Vista (will not generate any keys using the keygen tag)
How does it work?
Key generation has to take place on the user's computer. This is required by EUGridPMA policy. Therefore, either JavaScript using the Windows/Mozilla CryptoAPI is used, or the <keygen>-tag which is supported by browsers like Firefox, Opera and Safari. To keep the key generation dynamic, a lot of data flow happens between the JavaScript in the user-space and the CertManager classes in the Confusa-backend. So when the user clicks "Start" in the graphical interface, first a private key and a certificate signing request are generated. Then the information is passed as shown in the following diagram:
