sunlabs.brazil.ssl
Class CertHandler

java.lang.Object
  |
  +--sunlabs.brazil.ssl.CertHandler
All Implemented Interfaces:
Handler

public class CertHandler
extends Object
implements Handler

Handler for issuing A netscape certificate. Get a certificate request from the user as form data, generate the certificate, and sign it with the CA's certificate. There is currently no certificate management. The serial number is obtained from the form (if available), otherwise it is made up. [This should be converted into a template]. The following fields are required query info, either from a GET or POST:

commonname
The name of the certificate owner
country
The country of origin (2 char abbreviation
email
The email address
expires
The cert lifetime (in months)
key
The netscape key information (from KEYGEN)
locality
The local address of the cert holder
org
The company
orgunit
The division
state
The state or provice
The following fields are optional:
serial
the cert serial # (this is temporary)
can_sign
cert may be used for code signing
can_email
cert may be used for S/mime
can_ssl
cert may be used for client SSL
The follow server properties are used:
prefix
The url prefix for this handler to generate a cert
cert
The file name containing the CA certificate
id
If set, The the request property "id" MUST be set in order to generate a cert. This allows upstream handlers to do authentication before a cert is issued.


Constructor Summary
CertHandler()
           
 
Method Summary
 boolean init(Server server, String prefix)
          Get the CA's certificate chain.
static void main(String[] args)
          Generate a sample self-signed server certificate to use for signing client certificate requests.
 boolean respond(Request request)
          Responds to an HTTP request.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CertHandler

public CertHandler()
Method Detail

init

public boolean init(Server server,
                    String prefix)
Get the CA's certificate chain. prompting for the certificate password on the command line.

Specified by:
init in interface Handler
Parameters:
server - The HTTP server that created this Handler. Typical Handlers will use Server.props to obtain run-time configuration information.
prefix - The handlers name. The string this Handler may prepend to all of the keys that it uses to extract configuration information from Server.props. This is set (by the Server and ChainHandler) to help avoid configuration parameter namespace collisions.
Returns:
true if this Handler initialized successfully, false otherwise. If false is returned, this Handler should not be used.

respond

public boolean respond(Request request)
                throws IOException
Description copied from interface: Handler
Responds to an HTTP request.

Specified by:
respond in interface Handler
Parameters:
request - The Request object that represents the HTTP request.
Returns:
true if the request was handled. A request was handled if a response was supplied to the client, typically by calling Request.sendResponse() or Request.sendError.
Throws:
IOException - if there was an I/O error while sending the response to the client. Typically, in that case, the Server will (try to) send an error message to the client and then close the client's connection.

The IOException should not be used to silently ignore problems such as being unable to access some server-side resource (for example getting a FileNotFoundException due to not being able to open a file). In that case, the Handler's duty is to turn that IOException into a HTTP response indicating, in this case, that a file could not be found.


main

public static void main(String[] args)
Generate a sample self-signed server certificate to use for signing client certificate requests. We'll choose an arbitrary suite of algorithms.


Version 2.1, Generated 12/30/04
Copyright (c) 2001-2004, Sun Microsystems.