Portál AbcLinuxu, 2. května 2025 11:50
V prvom rade potrebujeme vytvoriť serverový certifikát. Tomcat si najlepšie rozumie s certifikátmi a kľúčmi vytvorenými pomocou javového nástroja keytool
. Úložisko a kľúče spolu s ďalšími informáciami vytvoríme príkazom:
keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -validity 730 -keystore /opt/qip/tomcat/conf/tomcatkeystore Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: moj-tomcat-server.firma.sk What is the name of your organizational unit? [Unknown]: Sieťové služby What is the name of your organization? [Unknown]: Firma What is the name of your City or Locality? [Unknown]: Mesto What is the name of your State or Province? [Unknown]: Štát What is the two-letter country code for this unit? [Unknown]: SK Is CN=moj-tomcat-server.firma.sk, OU=Sieťové služby, O=Firma, L=Mesto, ST=Štát, C=SK correct? [no]: yes Enter key password for <tomcat> (RETURN if same as keystore password):
Toto by možno stačilo na základné zabezpečenie spojenia certifikátom podpísaným samým sebou. Lenže taký certifikát spôsobuje najrôznejšie varovania a výnimky v prehliadači. Preto treba certifikát podpísať dôveryhodnou autoritou, v tomto prípade podnikovou certifikačnou autoritou. V druhom kroku vytvoríme žiadosť o certifikát:
keytool -certreq -keyalg RSA -alias tomcat -keystore /opt/qip/tomcat/conf/tomcatkeystore -file moj-tomcat-server.csrSúbor pošleme certifikačnej autorite na podpis. Spôsob podpisovania certifikátu je mimo rozsah tohto zápisku. Keď dostaneme späť podpísaný certifikát v súbore
moj-tomcat-server.cer
vo formáte base64, vložíme ho do úložiska príkazom:
keytool -import -alias tomcat -keystore /opt/qip/tomcat/conf/tomcatkeystore -file moj-tomcat-server.cerV ďalšom kroku upravíme súbor
tomcat/conf/server.xml
tak, aby počúval na portoch 80 a 443 približne takto:
. . . </GlobalNamingResources> <!-- Define the Tomcat Stand-Alone Service --> <Service name="Catalina"> <!-- Non-SSL Connector - Start --> <Connector port="80" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" /> <!-- Non-SSL Connector - End --> <!-- SSL Connector - Start --> <Connector port="443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreType="JKS" keystoreFile="/opt/qip/tomcat/conf/tomcatkeystore" keystorePass="verysecurepassword"/> <!-- SSL Connector - End -->> . . . </Service>A na záver treba zabezpečiť aby klient ktorý sa pripája na port 80 bol presmerovaný na port 443 cez zabezpečené spojenie. To sa docieli upravením súboru
tomcat/conf/web.xml
približne takto:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> . . . <security-constraint> <web-resource-collection> <web-resource-name>Entire Application</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> >/user-data-constraint> </security-constraint> </web-app>Užívateľ sa pripojí na
http://moj-tomcat-server.firma.sk
, je automaticky presmerovaný na https://moj-tomcat-server.firma.sk
. Certifikát poskytnutý serverom je podpísaný dôveryhodnou autoritou, je automaticky overený v prehliadači a celá komukácia je zašifrovaná. Audítor môže byť spokojný.
Tiskni
Sdílej:
keytool -import -alias tomcat -keystore /opt/qip/tomcat/conf/tomcatkeystore -trustcacerts -file firemnárootca.cer
keytool -import -alias tomcat -keystore /opt/qip/tomcat/conf/tomcatkeystore -trustcacerts -file firemnásubca.cer
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.