Stiskněte "Enter" pro přeskočení obsahu

Nastavení SSL na Apache Tomcat s použitím PKCS12 keystore

ToŠ 0

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!

Napsat komentář