Hur implementerar man SSL i Apache Tomcat?

By rik

En detaljerad instruktion för att konfigurera SSL/TLS-certifikat på din Tomcat-server.

En avgörande aspekt för att säkerställa skyddet av Tomcat är att implementera SSL-certifikat. Detta möjliggör säker åtkomst till webbapplikationen via HTTPS.

Det finns flera tillvägagångssätt för att åstadkomma detta:

  • SSL-terminering kan ske i en lastbalanserare.
  • SSL kan implementeras på CDN-nivå.
  • Webbservrar som Apache eller Nginx kan användas som mellanlager, där SSL konfigureras.

Om ingen av ovanstående metoder är tillämpliga, eller om du föredrar att distribuera SSL direkt i Tomcat, kommer den här guiden att vara till nytta.

I denna handledning kommer vi att gå igenom följande steg:

  • Skapa en CSR (Certificate Signing Request).
  • Importera certifikatet till en nyckel-lagringsfil.
  • Aktivera SSL i Tomcat.
  • Konfigurera TLS-protokoll.
  • Justera Tomcat för att lyssna på port 443.
  • Genomföra ett test för att identifiera eventuella SSL-sårbarheter.

Låt oss sätta igång…

Förberedelser inför SSL/TLS-certifikat

Det första steget är att generera en CSR och skicka den till en certifikatutfärdare för signering. Vi kommer att använda Java-verktyget `keytool` för att hantera certifikaten.

  • Logga in på Tomcat-servern.
  • Navigera till Tomcat-installationskatalogen.
  • Skapa en ny mapp med namnet ”ssl”.
  • Kör kommandot för att generera en nyckel-lagringsfil.
keytool -genkey -alias domainname -keyalg RSA -keysize 2048 -keystore filename.jks

I det här kommandot finns det två variabler som du kan behöva anpassa:

  • `Alias`: Det är rekommenderat att ge det ett beskrivande namn som gör det enkelt att identifiera nyckeln senare. Domännamnet är ett bra alternativ.
  • `filename`: Det är också bra att använda domännamnet här.

Exempel:

[[email protected] ssl]# keytool -genkey -alias bloggerflare -keyalg RSA -keysize 2048 -keystore bloggerflare.jks
Ange lösenord för nyckellagring:
Ange lösenordet igen:
Vad är ditt för- och efternamn?
[Okänd]: bloggerflare.com
Vad är namnet på din organisationsenhet?
[Okänd]: Blogging
Vad är namnet på din organisation?
[Okänd]: Geek Flare
Vad är namnet på din ort eller stad?
[Okänd]:
Vad är namnet på ditt län eller region?
[Okänd]:
Vad är landskoden (två bokstäver) för denna enhet?
[Okänd]:
Är CN=bloggerflare.com, OU=Blogging, O=Geek Flare, L=Okänd, ST=Okänd, C=Okänd korrekt?
[nej]: ja

Ange lösenord för nyckeln <bloggerflare>
(RETURN om samma som lösenord för nyckellagring):

[[email protected] ssl]#

Observera frågan om ”för- och efternamn”. Det är lite missvisande, eftersom det i själva verket är domännamnet som du ska säkra, inte ditt namn.

Efter att du har angett all information, skapas en nyckel-lagringsfil i den aktuella arbetskatalogen.

Nästa steg är att generera en CSR med hjälp av den nyligen skapade nyckel-lagringsfilen. Använd följande kommando:

keytool -certreq -alias bloggerflare -keyalg RSA -file bloggerflare.csr -keystore bloggerflare.jks

Den här kommandot skapar en CSR som du ska skicka till certifikatutfärdaren för signering. Om du experimenterar kan du använda en kostnadsfri certifikatleverantör, men för produktionsändamål rekommenderas en betaltjänst.

När du har fått certifikatet signerat, kan du importera det till nyckel-lagringen genom följande kommandon:

  • Importera rotcertifikat som tillhandahålls av leverantören:
keytool -importcert -alias root -file root -keystore bloggerflare.jks
  • Importera mellanliggande certifikat:
keytool -importcert -alias intermediate -file intermediate -keystore bloggerflare.jks

Viktigt: Utan att importera rot- och mellanliggande certifikat kommer du inte att kunna importera domäncertifikatet. Om du har fler än ett mellanliggande certifikat måste du importera alla.

  • Importera domäncertifikatet:
keytool -importcert -file bloggerflare.cer -keystore bloggerflare.jks -alias bloggerflare

Du får en bekräftelse om att det har installerats.

Certifikatsvaret installerades i nyckel-lagringen.

Nu är nyckel-lagringsfilen färdig, så vi kan gå vidare till nästa steg.

Om du är ny på SSL och vill lära dig mer rekommenderas denna onlinekurs: SSL/TLS Operations.

Aktivera SSL i Tomcat

Förutsatt att du fortfarande är inloggad på Tomcat-servern, gå till ”conf”-mappen.

  • Ta en säkerhetskopia av filen `server.xml`.
  • Gå till avsnittet `
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
  • Glöm inte att ändra nyckel-lagringsfilens namn och lösenord så att de matchar dina.
  • Starta om Tomcat, och din webbapplikation bör nu vara tillgänglig via HTTPS.

Fantastiskt!

Standard HTTPS-port

Varför är det viktigt?

Som vi såg i exemplet ovan, kan jag komma åt Tomcat via HTTPS på port 8080, vilket inte är standard. Det finns fler anledningar till varför det är viktigt:

  • Du vill inte att användarna ska behöva ange en anpassad port.
  • Webbläsaren kommer att ge en varning eftersom certifikatet utfärdas för domännamnet utan porten.

Tanken är att få Tomcat att lyssna på port 443 så att den är tillgänglig via `https://` utan portnumret.

För att åstadkomma detta, redigera filen `server.xml` med valfri textredigerare.

  • Sök efter `
  • Ändra porten från 8080 till 443.
  • Det bör se ut så här:
<Connector port="443" protocol="HTTP/1.1"
connectionTimeout="20000"
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
redirectPort="8443" />
  • Starta om Tomcat, och nu bör du kunna komma åt din applikation via HTTPS utan att behöva ange portnummer.

Det är fantastiskt, det fungerar!

Test av SSL/TLS-sårbarhet

Slutligen kommer vi att utföra ett test för att säkerställa att servern inte är sårbar för onlinehot.

Det finns många onlineverktyg för detta. Jag har skrivit om dem tidigare, och här kommer jag att använda SSL Labs.

  • Gå till SSL Labs och ange din URL för att påbörja testet.

Grönt ljus – det ger ett A-betyg.

Det är dock alltid en bra idé att granska hela rapporten för att upptäcka eventuella sårbarheter och åtgärda dem.

Det var allt för den här gången.

Jag hoppas att den här guiden hjälper dig att förstå hur du kan säkra din Tomcat-server med SSL/TLS-certifikat. Om du vill lära dig mer om det, rekommenderar jag den här kursen.