Tento návod vás provede procesem nastavení bezpečného HTTPS připojení na Apache Tomcat serveru s použitím PKCS12 keystore, který obsahuje certifikát, soukromý klíč a CA chain.
1. Příprava certifikátu a klíče
Nejprve musíme připravit certifikát a soukromý klíč. Pokud již máte certifikát a klíč, můžete tento krok přeskočit. Pokud ne, použijte následující kroky k vygenerování CSR (Certificate Signing Request) a získání certifikátu.
Pokud již máte soubor:
privkey.pem
(soukromý klíč),cert.pem
(certifikát),ca.pem
(CA chain),
pokračujte na další krok.
2. Sloučení certifikátu a CA chainu
Nejdříve sloučíme certifikát a CA chain do jednoho souboru:
cat cert.pem ca.pem > fullchain.pem
3. Převedení certifikátu a klíče na PKCS12
Použijeme nástroj OpenSSL pro převod certifikátu, klíče a CA chainu do formátu PKCS12, který Tomcat podporuje. Vytvoříme soubor tomcat-java.p12:
openssl pkcs12 -export \
-inkey privkey.pem \
-in cert.pem \
-certfile ca.pem \
-name tomcat \
-out tomcat-java.p12 \
-passout pass:heslo123 \
-legacy
- -export: export certifikátu a klíče do PKCS12 formátu.
- -name: specifikuje alias pro klíč (v tomto případě „tomcat“).
- -passout pass:heslo123: nastavuje heslo pro keystore (můžete změnit na vlastní hodnotu).
- -legacy: zajišťuje kompatibilitu s Java aplikacemi.
4. Kopírování souboru na server Tomcat
Přesuňte soubor tomcat-java.p12 do složky, kde ho bude Tomcat moci najít. Například:
mv tomcat-java.p12 /etc/tomcat9/
5. Konfigurace Tomcat serveru
Upravit konfigurační soubor server.xml
, který se nachází nejčastěji v adresáři /etc/tomcat9/server.xml. Přidejte nebo upravte následující blok pro SSL konfiguraci:
<Connector
port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="/etc/tomcat9/tomcat-java.p12"
keystorePass="heslo123"
keystoreType="PKCS12"
keyAlias="tomcat" />
- keystoreFile: cesta k vašemu souboru PKCS12.
- keystorePass: heslo, které jste použili při generování keystore.
- keystoreType: určuje formát keystore (v tomto případě
PKCS12
). - keyAlias: alias pro klíč v keystore (v tomto případě
tomcat
).
6. Restart Tomcat serveru
Po úpravě souboru server.xml restartujte Tomcat server, aby se změny projevily:
systemctl restart tomcat9
7. Ověření funkčnosti
Po restartu by měl Tomcat běžet s HTTPS na portu 443. Můžete ověřit správnost konfigurace pomocí příkazu openssl
pro kontrolu PKCS12 souboru:
openssl pkcs12 -info -in /etc/tomcat9/tomcat-java.p12 -nodes
Pokud vše probíhá správně, připojení na vaši aplikaci by mělo být zabezpečeno přes HTTPS.
Chyby, které tento postup vyřeší:
- Chyba: „The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path“
- Tato chyba se objevuje, když Tomcat nemůže najít knihovnu OpenSSL pro nativní SSL podporu. Tento postup ji nevyřeší, ale používáme Java implementaci SSL, která tuto chybu nevyžaduje.
- Chyba: „parseAlgParameters failed: ObjectIdentifier() — data isn’t an object ID“
- Tato chyba je způsobena nesprávným formátem keystore. Při použití PKCS12 formátu, jak je popsáno v tomto návodu, se tato chyba obvykle neobjeví.
- Chyba: „Failed to initialize component [Connector[HTTP/1.1-443]]“
- Tato chyba se vyskytuje, pokud Tomcat nemůže správně načíst SSL konfiguraci. Při použití správného PKCS12 souboru a správné konfigurace server.xml by se tato chyba měla vyřešit.
- Chyba: „java.lang.IllegalArgumentException: parseAlgParameters failed: ObjectIdentifier() — data isn’t an object ID“
- Tato chyba je způsobena nekompatibilním nebo poškozeným keystore souborem. Použití správného PKCS12 souboru s odpovídajícím certifikátem a klíčem by tuto chybu mělo odstranit.
Závěr
Tento návod vás provedl procesem nastavení SSL certifikátu pro Apache Tomcat pomocí PKCS12 keystore. Pokud budete mít jakékoli problémy nebo dotazy, neváhejte se na mě obrátit!