Client Certificates

Richard Jones
September 1, 2003
updated April 5, 2006

The OpenShop framework uses client certificates the authenticate users. A client certificate is issued on the behalf of a user by a Certificate Authority who can vouch for the reliability of the user's identity. Currently the framework recognizes certificates signed either globally by the DOE Science Grid authority or locally by the OpenShop Framework authority. Client certificates are transported and stored in files encrypted according to the PKCS12 standard, and normally have extension .pfx (IE convention) or .p12 (Mozilla convention). PKCS12 files are protected by a single password, which is supposed to protect the certificate and the public/private key pair inside from being stolen. The mere possession of a certificate is not enough to grant a user access; the certificate must be registered in the browser and/or plugin being used to communicate with the OpenShop web services.

Who are the recognized certificate authorities?

Any client certificate signed by one of the recognized CA's listed below are granted member access to the OpenShop web services. Clicking on one of the listed links will take you to a web site from where you can access and download the CA root certificate.

  1. OpenShop Certificate Authority
    To download the CA certificate into your browser for future use, you can select your browser type using the buttons near the top of the page and press the "Load CA Certificate" button. This needs to be done only once on any given installation.
  2. U.S. Department of Energy Grid Certificates Authority
    To download the CA certificate into your browser for future use, select the "Retrieval" tab and then click on "Import CA certificate chain" in the list in the left-hand column. This takes you to a page which gives you a number of options for examining and downloading the CA certificate. This needs to be done only once on any given installation.

How do I obtain a personal certificate from one of these CA's?

If you are a researcher with long-term interest in grid-enabled scientific applications then you should apply to the US Department of Energy Grid Certificates authority. If you would just like a temporary certificate that would allow you to work on one of the projects on this web site then send me an email summarizing your needs.

How do I get the browser to recognize my personal certificate?

Netscape/Mozilla and IE both use a similar interface to user certificates. Let us assume that you have a personal certificate in a .pfx file sitting in your home directory (linux) or on the desktop (windows/Mac). To import the certificate into the IE browser, start IE and go to Tools->Internet Options, select the Content tab and click the button labeled Certificates. Press the Import button and follow the instructions of the wizard. You will be instructed at one point to enter the password of the .pfx file. If the import is successful, the new certificate should appear in the list under the Personal tab, Certificates.

For Netscape/Mozilla, go to Edit->Preferences and find the Certificates pane under Privacy & Security. From there press the button Manage Certificates, then Import and follow the wizard. As for IE, you must enter the password for the pkcs12 file for the import to succeed. If the import worked then the certificate should be listed in the frame above the Import button.

How do I get the browser to pass my personal certificate to the server?

When you issue a request for a web page over SSL (address starting with https) it is the server that controls the handshake procedure that sets up the encrypted channel. If the server has been set up to expect client certificates then it will issue a request to the browser for a user certificate signed by one of the signing authorities that are recognized by the server. Only client certificates that would be recognized by the server are allowed to be returned by the browser, which means that sometimes the it sends back nothing in response to a server's request for a client certificate, even if a number of certificates have been registered in the browser which are signed by various other certificate authorities. If more than one of the certificates in the browser bank would be recognized by the server, the user is prompted for which one represents the identity that he would like to present to the server.

How do I get the GUI applet to pass my personal certificate to the server?

As of version 1.4, the java browser plugin for Netscape/Mozilla and IE keeps a completely separate table of client and server certificates from that maintained by the browser itself. This sounds like madness, but the developers claim that it makes perfect sense. So in order to authenticate yourself from within the GUI applet, you need first to load your personal certificate into the java plugin. This is done using the java plugin Control Panel. From within Windows and Mac, it is found in the ordinary control panels. To start the plugin control panel from linux, look in your jdk installation for the executable jre/bin/ControlPanel.

I did all of that, but still the server does not see my personal info!

One helpful tool for finding out what is going wrong with client authentication is the java console. It is found under Tools->Web Development with Netscape/Mozilla and under Tools->Sun Java Console with IE. To save time, cut any applet startup error messages out of the java console window and paste it into an email to me at the address below.

This page created and maintained by Richard T. Jones.