1.) Kulcs állomány létrehozása
A jre\bin-ben
keytool -genkey -alias tomcat -keyalg RSA -keystore .keystore -dname "cn=Tomcat, ou=Intranet, o=CegNev, c=HU"
Kérdésre megadni, megerősíteni a password-öt.
-keystore a keletkező file helye\neve.
-dname a distinguished name (LDAP)
2.) A ".keystore" állományt bemásolni a Tomcat (~\Tomcat 6.0) fő mappájába
3.) Módosítani a "~\Tomcat 6.0\conf\server.xml"-t
Kivenni a comment jelölést és beállítani a paramétereket:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile=".keystore" keystorePass="******"
clientAuth="false" sslProtocol="TLS" />
A keystorePass= után a kulcsfile készítésekor megadott jelszó kell szerepeljen!
4.) A normál elérés az egész serveren való tiltásához commentbe rakni az alábbit:
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
5.) Amennyiben "csak" valamelyik web alkalmazást kell védeni annak a web.xml (pl.:~\Tomcat 6.0\webapps\examples\WEB-INF\web.xml") állományába kell az alábbi:
<security-constraint>
<web-resource-collection>
<web-resource-name>Restricted URLs</web-resource-name>
<url-pattern>/</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
A <url-pattern> kell felsorolni a védendő URL mintákat.
6.) Újraindítani a Tomcat szervert.
Forrás: http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
http://confluence.atlassian.com/display/DOC/Adding+SSL+for+Secure+Logins+and+Page+Security
http://java.sun.com/javase/6/docs/technotes/tools/solaris/keytool.html
2013.03.18.
További fejlemények
Tesztelési célból létrehoztam egy v7 Tomcatet (host win7). A fentiek szerint megcsináltam a shelf signed keystore.t a fentiek szerint. Ahogy szokták mondani, innen kezdődtek a bajok....
a Tomcat indításkor hibát dobott ugyan, de látszólag elindult. Https-el kapcsolódni nem lehetett. A log végén a SEVERE: Failed to start connector [Connector[AJP/1.3-8009]]
LifecycleException: An invalid Lifecycle transition was attempted ([before_star
t]) for component [Connector[AJP/1.3-8009]] in state [INITIALIZING] ....
hibaüzenetet kaptam.
Illetve a az adott indulás elején a
SEVERE: Error initializing endpoint
java.lang.Exception: No Certificate file specified or invalid file format
Üzenet dobta.
Hosszas goolizás...
Utalás arra hogy a server.xml elején a nativ APR-t nem kell megengedni, vagyis a
<!--APR library loader. Documentation at /docs/apr.html -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
Második sorát komentezni kell:
<!-- <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> -->
Ez látszólag nem old meg semmit. A hiba üzenetek továbbra is jönnek
Újra googlizás...
Utalás arra, a korábbi (egyébként javított hibára) hogy ilyen esetben a keystore és a tomcat alias password-je azonos (same) kell legyen.
Ez már a sokadik keystore gyártás. Láss csodát minden Ok!
Forrás:
http://readlist.com/lists/tomcat.apache.org/users/20/100741.html (eredetileg nem ez az oldal igazított el, most azt nem találom)
http://tomcat.10.n6.nabble.com/Possible-issue-with-Tomcat-7-0-27-SSL-keystore-configuration-td4983640.html
https://issues.apache.org/bugzilla/show_bug.cgi?id=38217
2013.08.18.
Az élet mindig produkál újat
Minap más által beszerzett tanúsítvánnyal kellet "megbízhatóvá" tenni egy linuxon futó Tomcat-ot.
Mindehhez kaptam host-chain.ctr, host.crt éa host.key állományokat.
Kezdetben az sem volt magától értetődő, hogy ezek közül melyiknek mi a szerepe.
A host.key a kulcs amihez a tanúsítványt kérték.
A host.crt az kulcshoz kapott tanúsítvány. A host-chain a tanúsító tanúsítási lánca. értsd "root certificate".
Mivel alapesetben, a tanúsítvány igénylés megelőző lépése a kulcs elkészítése, a kulcs a karikán (keystore) van. Ehhez kell a tanúsítványokat importálni. Ezért a keytool nem is tud ilyet.
Némi googlizás után találtam java programot, amivel el lehet készíteni a kulcsból és a hozzá tartozó tanúsítványból a keystore-t (www.agentbob.info/agentbob/79-AB.html).
Igaz ehhez az alkatrészeknek PEM formátum helyett DER formátumuaknak kell lenniük.
Szerencsére az openssl tud ilyet.
openssl pkcs8 -topk8 -nocrypt -in key.pem -inform PEM -out key.der -outform DER
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER
Ez után "már csak" a root certificate-t kellet a keytool-lal impotrálni.
Figyelem, linuxon belépve a [JAVA_HOME]/bin mappába, ott kiadva a keytoolt parancsot, a path-on levő indul el nem az aktuális mappabeli. Az eltérő verziók viszont eltérő formátumot használnak, pl.: az 1.5 és az 1.6.
Mindent összevetve úgy hat óra alatt végeztem is.
A bejegyzés trackback címe:
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.