You are just talking about the key, but what is actually needed to use SSL (if Tomcat 
is like WebLogic) is a self-signed certificate, and there are several steps that you 
have to go through to create that correctly, even before the challenge of configuring 
Tomcat to use it.
 
The example below uses OpenSSL, which comes standard with most flavors of Linux.
 
Assume directory /usr/local/temp where you are going to create your certificate.
1. Go to /usr/local/temp, and create directory cert,
2. Go to directory cert.  This will be referred to in the SSL section as the SSL 
working directory.  From the SSL working directory, create directory demoCA,
3. Go to directory demoCA, and create two directories:
  A. newcerts
  B. private
4. In directory demoCA, create 2 text files:
  A. serial (no extension), and insert the value 01 and a return,
  B. index.txt which should be left empty.
 
5. Return to directory cert, and from a command shell issue the  following command, to 
create a Certificate Authority (CA for short):
 
> openssl req -x509 -newkey rsa:512 -keyout ./demoCA/private/cakey.pem -out 
> ./demoCA/cacert.pem –days 1095
 
Command Summary for readability:
openssl req -x509
-newkey rsa:512 
-keyout ./demoCA/private/cakey.pem 
-out ./demoCA/cacert.pem 
–days 1095
 
openssl will ask you numerous questions:
 
   Pass Phrase          = **********
   Country (2 chars)    = US
   State (spell out)    = Idaho
   Locality (City)      = Boise
   Organization         = my org
   Org. Unit               = my division
   Common Name      = myorg.org
   emailAddress         = [EMAIL PROTECTED]
 
openssl uses the configuration file mentioned above for default values.  If everything 
works, it will create the CA key, called cakey.pem, at:
 
./demoCA/private/cakey.pem
 
and will will create the CA, called cacert.pem, at:
 
./demoCA/cacert.pem
 
Store the pass phrase that you enter in a secure place.  You will need it in step 8 
ahead.
 
6. Next you need to create a key for a certificate request.  From the SSL working 
directory, issue the command:
 
> openssl genrsa -out ./key.pem 512 –days 1095
 
which will create the key file called key.pem in the working directory.
 
7. Next you need to create the certificate request.  From the SSL working directory, 
issue the command:
 
> openssl req -new -key ./key.pem -out ./req.pem –days 1095
 
You will once again be asked all the questions listed above.  Additionally, you will 
be asked to choose a Challenge Password.  Enter a Challenge Password; do not confuse 
this with the Pass Phrase in step 5.   Hit return for the prompt ‘An optional 
company name[]’.
 
8. Next you will use the CA to create and sign cert.pem, an actual certificate.  The 
CA will use ./cert/req.pem (the Certificate request)  as the raw material from which 
to create the actual certificate.  The CA and its key (the one in the subdirectory 
called private, not the one in the working directory) are used to sign the request.  
From the SSL working directory issue the command:
 
> openssl ca -in ./req.pem -out ./cert.pem  –days 1095
 
At that point you must enter the PEM pass phrase that you used to create the CA (see 
step 5 above).  It must be exactly the same as before.  Then you will have a signed 
certificate at:
 
/usr/local/temp/cert/cert.pem
 
Now make sure to change owner and permissions so that the server will be able to use 
all this stuff.  From the SSL working directory, issue the commands:
> cd ..
> chown –R youruser:youruser ./cert
> chmod –R 700 ./cert
 
9. Next you must open cert.pem with a text editor, and remove all of the stuff above 
the line:
 
-----BEGIN CERTIFICATE-----
 
I don't know why openssl puts that stuff in there, but WebLogic will not work with it 
there.  If you do not remove it, you will get an exception:
 
java.security.KeyManagementException: ASN.1: Unxpected ASN.1 tag

(that is Sun's misspelling of Unexpected, not mine).
 
[[[[ 
Configure Tomcat to user certificate at this point, along with moving the certificate 
from /usr/local/temp to the location where Tomcat expects it to be.  This is stuff I 
do not know the details about yet.
 ]]]]
 
Then if you did everything correctly, you can restart the, and it will use your new 
Certificate.  How will you know?  When you connect to the server, you will be prompted 
with two dialog boxes (from Internet Explorer).  The second one will say Security 
Alert.  Select the button labeled View Certificate, and you will see:
 
Issued to:  myorg.org
Issued by:   myorg.org
 
Instead of the default values used by Tomcat when it is using its demonstration 
certificates.

 

        -----Original Message----- 
        From: Matt Morgan [mailto:[EMAIL PROTECTED] 
        Sent: Thu 9/25/2003 4:55 PM 
        To: Tomcat Users List 
        Cc: 
        Subject: Re: Configuring server.xml for SSL breaks Tomcat
        
        

        Thanks. Well, the Tomcat docs don't say anything about what the default
        expiry is for keys self-generated with keytool, but this is work that I
        did all today, and in general I was trying to use the keys within
        seconds of creating them.
        
        Any other thoughts? Are these keys I'm creating persistent in some
        way--cached somewhere, or anything like that? It doesn't seem like it.
        
        King,Daniel wrote:
        
        >I don't know what your time span has been for working with this, but I ran 
into a problem using WebLogic where my key had expired.  My self-signed certificate 
had not expired, but the key had.  I used the OpenSSL software.  When I recreated the 
key with arguments to make it expire in a year, instead of the default of 30 days, I 
did not have the problem again.
        >
        >
        >       -----Original Message-----
        >       From: Matt Morgan [mailto:[EMAIL PROTECTED]
        >       Sent: Thu 9/25/2003 3:24 PM
        >       To: [EMAIL PROTECTED]
        >       Cc:
        >       Subject: Configuring server.xml for SSL breaks Tomcat
        >      
        >      
        >
        >       I'm using 4.1.27 on debian 3.0 with the JDK 1.3 from Blackdown, and the
        >       last independent JSSE from Sun, the one intended for jdk1.3. Tomcat 
runs
        >       as user "tomcat4," whose home dir is /usr/share/tomcat4 and whose login
        >       shell is /bin/false.
        >      
        >       Tomcat runs fine when I don't try to get SSL working. Annoyingly 
enough,
        >       it ran for a minute with SSL working, but that was with the default
        >       password on the keystore which I thought was a bad idea, long-term. So 
I
        >       created a new key, put it in the same place (with the same name), and
        >       restarted tomcat. Only Tomcat wouldn't start at all, not even the
        >       non-SSL connector.
        >      
        >       So, I tried to go back to the old key. No good; same problem. Finally I
        >       went back to a /conf/server.xml file with the SSL connector commented
        >       out, and I could get Tomcat to restart (non-SSL only). I've tried about
        >       ten times to recreate the key with the default password and every time 
I
        >       reconfigure server.xml to start an SSL connector, Tomcat won't start.
        >      
        >       I am creating the key as root, since I can't login as tomcat4; I use
        >      
        >       /usr/lib/j2se/1.3/bin/keytool -genkey -alias tomcat -keyalg RSA
        >      
        >       and then I copy the key to /usr/share/tomcat4 and chown it to tomcat4.
        >       This is what worked the one time. I have also tried using -keystore
        >       /usr/share/tomcat4/.keystore, which hasn't helped. I've deleted all the
        >       old .keystores from the system, so I know it's not trying to open an 
old
        >       one.
        >      
        >       Basically, all I'm doing to server.xml is removing the comments around
        >       the pre-configured SSL connector. So it looks like this:
        >      
        >       <Connector className="org.apache.catalina.connector.http.HttpConnector"
        >           port="8443" minProcessors="5" maxProcessors="75"
        >           enableLookups="true"
        >           acceptCount="10" debug="0" scheme="https" secure="true">
        >           <Factory className="org.apache.catalina.net.SSLServerSocketFactory"
        >           clientAuth="false" protocol="TLS"/>
        >       </Connector>
        >      
        >       I know certificates can be touchy, but I'm at a loss to understand why
        >       this worked once, and is failing to work now. And why would it prevent
        >       Tomcat from working in non-SSL?
        >      
        >       Thanks,
        >       Matt Morgan
        >       Manager of Information Systems
        >       Brooklyn Museum of Art
        >      
        >
        > 
        >
        >------------------------------------------------------------------------
        >
        >---------------------------------------------------------------------
        >To unsubscribe, e-mail: [EMAIL PROTECTED]
        >For additional commands, e-mail: [EMAIL PROTECTED]
        >
        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to