Máte certifikát z OpenSSL: ako ho importnete do Tomcatu, aby sa dal použiť pri SSL?
Mali by ste mať:
certifikát servera (
.crt), ktorý začína:-----BEGIN CERTIFICATE-----privátny kľúč servera (
.key), ktorý začína:-----BEGIN PRIVATE KEY-----reťazec (chain) certifikačných autorít, ktoré overujú vydaný certifikát servera. Súbor by mal obsahovať viacero blokov začínajúcich s
-----BEGIN CERTIFICATE-----.
Súbory nech sa volajú postupne:
hostname.crthostname.keyhostname.chain.pem
Postup
Pripojíme
.crtsúbor k súboru chain. (Je to potrebné kvôli ďalšiemu kroku.)cat hostname.crt hostname.chain.pem > hostname.all.chain.pemZ privátneho kľúča a reťazca certifikátov vytvoríme úložisko (keystore) privátneho kľúča a certifikátu (verejného kľúča) vo formáte PKCS#12:
openssl pkcs12 -export -inkey hostname.key -in hostname.all.chain.pem -out hostname.p12OpenSSL si požiada heslo, ktorým bude chránený keystore:
Loading 'screen' into random state - done Enter Export Password: Verifying - Enter Export Password:Keystore vo formáte PKCS#12 prevedieme na formát Java Keystore (JKS), ktorému dokáže porozumieť Tomcat. Použijeme na to nástroj
keytoolz JDK.keytool -importkeystore -srckeystore hostname.p12 -srcstoretype PKCS12 -destkeystore keystore.jkskeytoolsi vyžiada heslo, ktorým je chránený PKCS#12 keystore a požiada si nové heslo, ktorým ochráni keystore JKS.Enter destination keystore password: Enter source keystore password: Entry for alias 1 successfully imported. Import command completed: 1 entries successfully imported, 0 entries failed or cancelledDvojica privátneho kľúča a certifikátu v JKS keystore bola uložená pod aliasom
1. Premenovať ho môžeme opäť pomocoukeytool:keytool -changealias -alias 1 -keystore keystore.jksNástroj si vyžiada cieľový alias a heslo, ktorým bol chránený keystore:
Enter destination alias name: odin.ics.upjs.sk Enter keystore password:Výsledný keystore potom môžeme použiť v Tomcate v konfigurácii
<Connector>a pre SSL: stačí nastaviť cestu k súboru keystoru, alias a heslo.<Connector port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="${user.home}/.keystore" keystorePass="changeit" clientAuth="false" sslProtocol="TLS"/>