Securing tomcat with ssl (tls1.2)

Generate ssl

1. shell> keytool -genkey -alias replserver -keyalg RSA -keystore keystore.jks

Enter password (twice)

Use domain name for Name (www.magicsite.gr) (required).

Leave other defaults or give more information (optional).

2. Now you need to export the certificate so that it can be added to the truststore as the trusted certificate:

shell> keytool -export -alias replserver -file client.cer -keystore keystore.jks

3. This has created a certificate file in client.cer that can now be used to populate your truststore.

shell> keytool -import -v -trustcacerts -alias replserver -file client.cer -keystore truststore.ts

Give step1 password and answer yes

Trusted apps should use truststore (e.g. WEB-INF/classes/truststore) with provided password

4. Setup tomcat use generated key

Edit: $CATALINA_HOME/conf/server.xml

<Connector port=”443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
maxThreads=”150″ scheme=”https” secure=”true” sslEnabledProtocols=”TLSv1.2,TLSv1.1,TLSv1″
clientAuth=”false” sslProtocol=”TLS” keystoreFile=”/path/to/keystore/keystore.jks” keystorePass=”providedPassword” />

Restart tomcat, check urls to see installed certificate.

Usefull link for certificate generation: http://docs.continuent.com/tungsten-replicator-2.1/deployment-ssl-stores.html

Setup tomcat use specific java version

Download jdk from the source you want to use (Oracle, OpenJDK, …)

Untar downloaded tar: tar -zxvf filename

Edit $CATALINA_HOME/bin/startup.sh of tomcat and set JAVA_HOME to previous folder of selected java:
export JAVA_HOME=/home/user/java/jdk1.7.0_79/

Restart Tomcat with new Java version

 

SaxParser entityExpansionLimit tomcat

Για να κάνει parse ο Sax σε μεγάλα αρχεία πρέπει να αυξηθεί το όριο της Java. Δύο τρόποι, προγραμματιστικά live και πριν εκτελεστεί η Java.

Εντολή προγραμματιστική: System.setProperty(“entityExpansionLimit”, Integer.toString(1000000));

Οδηγία να εκτελεστεί η Java με αυτό το Limit πριν ξεκινήσει ο Tomcat, προσθέτουμε στο catalina.sh τη γραμμή (πρώτη εντολή): JAVA_OPTS=”$JAVA_OPTS -XX:MaxPermSize=512m -DentityExpansionLimit=1000000″

Εγκατάσταση Fedora σε εξωτερικό Tomcat

Εγκατάσταση και ρύθμιση Tomcat.

Κατέβασμα από Internet τον Tomcat, extract σε φάκελο.

Ρύθμιση $CATALINA_HOME/conf/tomcat-users.xml

<role rolename=”admin-gui”/>
<role rolename=”admin-script”/>
<role rolename=”manager-jmx”/>
<role rolename=”manager-status”/>
<role rolename=”manager-gui”/>
<role rolename=”manager-script”/>
<user username=”user” password=”password” roles=”admin-gui, manager-gui”/>

*Προσθήκη οποιουδήποτε άλλου ρόλου εδώ.

Ρύθμιση $CATALINA_HOME/conf/server.xml

Ρύθμιση των πορτών 8080 σε 80 (εάν θέλουμε) και 8443 σε 443.

Εάν θέλουμε να ενεργοποιήσουμε το SSL. Ξεσχολιάζουμε και προσθέτουμε τα παρακάτω στο section με το Define a SSL Http Connector.

<Connector port=”443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
maxThreads=”150″ scheme=”https” secure=”true”
clientAuth=”false” sslProtocol=”TLS” keystoreFile = “/home/…/…/apache-tomcat-7.0.40/conf/.keystoreFile” keystorePass = “password”/>

Ορίζουμε από που θα διαβάζει το αρχείο με το πιστοποιητικό του και δημιουργούμε το πιστοποιητικό με την εντολή:

keytool -genkeypair -keystore .keystore -alias tomcat

Δες επίσης για TLS 1.2

Όταν ρωτήσει για όνομα χρήστη δίνουμε localhost εάν θα τρέχει τοπικά ή το όνομά του στο δίκτυο εάν θέλουμε να το βλέπουν και απ’ έξω. Τα υπόλοιπα default.

Εγκατάσταση Fedora.

Κατεβάζουμε τον installer από το site.

Τρέχουμε sudo java -jar fcrepo… /home/…/install.properties (εάν έχουμε έτοιμο configuration) ή χωρίς το path εάν δεν το έχουμε και δίνουμε τα options από το command line. Επισυνάπτεται το install.properties για ευκολία. –> install.properties

Πριν την εκκίνηση του fedora θα πρέπει να υπάρχει κάποια βάση για να αποθηκεύει που θα πρέπει να έχει πρόσβαση ο χρήστης που δίνεις στο configuration. Οδηγίες για στήσιμο postgresql σε linux στο post…

Ορίζεις το namespace των αντικειμένων του fedora στο fedoraHome(το έχεις δώσει στον installer)/server/config/fedora_fcfg

Οτιδήποτε αποθηκεύεται στο fedora κρατιέται στο φάκελο fedoraHome, backup κλπ γίνονται από εκεί.

Ρύθμιση του truststore της fedora για authenticate και ομιλία με tomcat που πριν στήσαμε.

Στο πιστοποιητικό που δημιουργήσαμε στο tomcat προηγουμένως (keystore) κάνουμε export το public κλειδί με την εντολή:

sudo keytool -exportcert -alias tomcat -file tomcat.cert -keystore .keystore

και μας δίνει το tomcat.cert που είναι το κλειδί που καθένας θα πρέπει να κρατάει ώστε να μιλάει μαζί μας

Δημιουργούμε ένα νέο truststore το οποίο θα έχει μέσα όλα τα public κλειδιά που εμπιστευόμαστε για να μιλάμε. Εντολή:

keytool -importcert -alias tomcat -file tomcat.cert -keystore truststore

Το ίδιο για οποιαδήποτε άλλη εισαγωγή πιστοποιητικού στο συγκεκριμένο truststore (π.χ. google books cert).

Το τελικό παραγώμενο truststore αρχείο αποθηκεύεται στο shared του tomcat για να το βλέπουν οι εφαρμογές (fedora).

 

 

 

 

Cannot resolve placeholder fedora.home

Προσπαθεί να βρει αυτή τη παράμετρο που μπορείς να τη δώσεις με πολλούς τρόπους, ένας απ’ όλους που έπιασε όταν μου έσκασε ήταν να φτιάξω ένα αρχείο fedora.xml στο φάκελο /home/fedora/tomcat/conf/Catalina/localhost/ το οποίο περιέχει μέσα

<?xml version=”1.0″ encoding=”UTF-8″?>

<Context>

<Parameter name=”fedora.home” value=”/home/fedora” />

</Context>

fedora.xml (Attachment)

Φωτογραφίες HDR!

hdr-compare
Media taken from http://www.iamthan.com/2009/09/new-lx-3-firmware-is-simply-awesome/

Με πολύ απλά λόγια..

Η επιλογή HDR είναι software optimization κυρίως σε επαγγελματικές φωτογραφικές μηχανές (DSLR) ενώ πλέον αρχίζουμε να το βλέπουμε και σε φωτογραφικές της αγοράς (compact ή smartphone).

Το αποτέλεσμα που παίρνει τελικά ο χρήστης της φωτογραφικής είναι μια φωτογραφία με καλύτερη αντίθεση φωτεινών και σκοτεινών σημείων.

Ο λόγος δημιουργίας αυτού του software δημιουργήθηκε από το εξής πρόβλημα: όταν τραβάμε μια φωτογραφία με τοπίο χωρίς μεγάλες διακυμάνσεις φωτεινότητας η φωτογραφία δεν έχει απώλειες λεπτομέρειας, όμως όλοι έχουμε παρατηρήσει τι αποτέλεσμα θα έχει αν τραβήξουμε μια φωτογραφία όπου γενικά είναι σκοτεινή, αλλά σε ένα μέρος υπάρχει μια μεγάλη πηγή φωτεινότητας (ένα δωμάτιο με ανοιχτό παράθυρο). Η φωτογραφία  θα βγει πολύ φωτεινή ή πολύ σκοτεινή (ανάλογα με το exposure που έχουμε ρυθμίσει, ή αυτόματα έχει επιλέξει η μηχανή μας).

Το HDR έρχεται να διορθώσει αυτό το πρόβλημα βγάζοντας πολλές φωτογραφίες με διαφορετικό exposure στη καθεμία, μετά κάνει ένωση αυτών παράγοντας τελικά μία που θα έχει πιο τονισμένα τα σκοτεινά σημεία ώστε να φαίνονται οι λεπτομέρειες όπως και στα φωτεινά!

Περισσότερες λεπτομέρειες εδώ. Περισσότερες φωτογραφίες google search! 🙂