Friday, November 28th, 2008 | Author: admin

Μερικές γρήγορες οδηγίες για να ενεργοποιήσεις το SSL στον Tomcat για να πειραματιστείς με HTTPS:

1. Ενεργοποίησε τον SSL connector στο server.xml αρχείο του Tomcat, βγάζοντας τα comments από το παρακάτω


<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS" />

2. Θα χρειαστείς ένα certificate ώστε να το χρησιμοποιήσει ο Tomcat στο SSL. Μιας και απλά θέλουμε να πειραματιστούμε δε μας ενδιαφέρει το certificate να είναι “κανονικό” (σ.σ. να προέρχεται από κάποιο publicly trusted CA = να πληρώσουμε για να το αγοράσουμε) οπότε θα χρησιμοποιήσουμε το keytool της Java για να φτιάξουμε ένα certificate μόνοι μας.

Ξεκινάμε με το να φτιάξουμε το public/private keypair μας:


C:\>keytool -genkey -alias tomcat -keypass changeit -keyalg RSA

Enter keystore password:

Re-enter new password:

What is your first and last name?

  [Unknown]:  localhost

What is the name of your organizational unit?

  [Unknown]:

What is the name of your organization?

  [Unknown]:

What is the name of your City or Locality?

  [Unknown]:

What is the name of your State or Province?

  [Unknown]:

What is the two-letter country code for this unit?

  [Unknown]:

Is CN=localhost, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?

  [no]:  yes

Στη συνέχεια κάνουμε generate ένα CRS ως PKCS#10 certificate request:


C:\>keytool -export -alias tomcat -keypass changeit  -file tomcat.crt

Enter keystore password:

Certificate stored in file <tomcat.crt>

Και τέλος κάνουμε import το certificate (που υποτίθεται μας έκανε sign κάποιο root CA) στα trustes certificates μας:


C:\>keytool -import -file tomcat.crt -keypass changeit -keystore %JAVA_HOME%/jre/lib/security/cacerts

Enter keystore password:

Re-enter new password:

Owner: CN=localhost, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown

Issuer: CN=localhost, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown

Serial number: 492f8c56

Valid from: Fri Nov 28 19:14:46 EET 2008 until: Thu Feb 26 19:14:46 EET 2009

Certificate fingerprints:

         MD5:  40:00:2F:E0:FE:9E:1A:9B:A8:20:38:A0:88:04:FF:15

         SHA1: 81:09:2F:33:8F:35:5A:1E:2C:21:D3:89:58:EF:B8:C7:DE:5C:34:75

         Signature algorithm name: SHA1withRSA

         Version: 3

Trust this certificate? [no]:  yes

Certificate was added to keystore

Μερικά πράγματα που πρέπει να προσέξεις:

α) Τα keystores του JRE σου βρίσκονται κάτω από το home folder του χρήστη με τον οποίο έχεις κάνει login και στο αρχείο με όνομα .keystore. Σε Windows XP, για παράδειγμα, θα βρεις το αρχείο αυτό κάτω από το C:\Documents and Settings\Administrator αν έχει κάνει login με το χρήστη Administrator.

β) Τα trusted certificates του JRE σου βρίσκονται κάτω από το %JAVA_HOME%/jre/lib/security/ folder και στο αρχείο με όνομα cacerts.

γ) Ένα πολύ συνηθισμένο λάθος που ενώ έχεις κάνει όλα τα παραπάνω σωστά αλλά συνεχίζει να μην παίζει το SSL στον Tomcat, είναι ότι ο Tomcat χρησιμοποιεί διαφορετικό JRE/JDK από αυτό που χρησιμοποίησες για να φτιάξεις τo certificate (ειδικά αν ξεκινάς τον Tomcat μέσα από το IDE σου στο οποίο ενδεχομένως έχεις registered πολλαπλά J2SEs). Για να σιγουρευτείς ότι ο Tomcat χρησιμοποιεί το ίδιο JDK με αυτό που χρησιμοποίησες για να φτιάξεις το certificate, τσέκαρε τις δυο-τρεις πρώτες γραμμές στo console του Tomcat όταν ξεκινάει και δες τι χρησιμοποιείται ως JAVA_HOME.

Category: Programming
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply