Hur implementerar man SSL i Apache Tomcat?

En steg-för-steg-guide för att ställa in SSL/TLS-certifikat i Tomcat-servern.

En av de viktigaste uppgifterna för att säkra Tomcat är att konfigurera SSL-certifikat, så att webbapplikationen är tillgänglig via HTTPS.

Det finns många sätt att uppnå detta.

  • Du kan avsluta SSL i en lastbalanserare
  • Implementera SSL på CDN-nivå
  • Använd webbservrar som Apache, Nginx, etc. framför och implementera SSL där

Men om du inte använder något av ovanstående eller använder detta som ett gränssnitt eller behöver distribuera SSL direkt i Tomcat, kommer följande att hjälpa dig.

I den här artikeln kommer vi att göra som nedan.

  • Generera CSR (begäran om certifikatsignering)
  • Importera certifikat i en nyckellagringsfil
  • Aktivera SSL i Tomcat
  • Konfigurera TLS-protokoll
  • Ändra Tomcat för att lyssna på 443-porten
  • Testa Tomcat för SSL-sårbarhet

Låt oss börja…

Förbereder för SSL/TLS-certifikat

Det första steget skulle vara att generera en CSR och få den undertecknad av certifikatutfärdare. Vi kommer att använda nyckelverktygsverktyget för att hantera certifikaten.

  • Logga in på Tomcat-servern
  • Gå till installationsvägen för Tomcat
  • Skapa en mapp som heter ssl
  • Kör kommandot för att skapa ett nyckellager
keytool -genkey -alias domainname -keyalg RSA -keysize 2048 -keystore filename.jks

Det finns två variabler i ovanstående kommandon som du kanske vill ändra.

  • Alias ​​– bättre att hålla det meningsfullt så att du snabbt kan känna igen det i framtiden. Jag föredrar att behålla det som ett domännamn.
  • Filnamn – igen, det är bra att behålla domännamnet.
  • Ex:

    [[email protected] ssl]# keytool -genkey -alias bloggerflare -keyalg RSA -keysize 2048 -keystore bloggerflare.jks
    Enter keystore password:
    Re-enter new password:
    What is your first and last name?
    [Unknown]: bloggerflare.com
    What is the name of your organizational unit?
    [Unknown]: Blogging
    What is the name of your organization?
    [Unknown]: Geek Flare
    What is the name of your City or Locality?
    [Unknown]:
    What is the name of your State or Province?
    [Unknown]:
    What is the two-letter country code for this unit?
    [Unknown]:
    Is CN=bloggerflare.com, OU=Blogging, O=Geek Flare, L=Unknown, ST=Unknown, C=Unknown correct?
    [no]: yes
    
    Enter key password for <bloggerflare>
    (RETURN if same as keystore password):
    
    [[email protected] ssl]#

    Var uppmärksam på för- och efternamnsfrågan. Det här är lite missvisande tycker jag. Det är inte ditt namn utan domännamnet som du vill säkra.

    När du har tillhandahållit all information kommer den att skapa en nyckellagringsfil i en befintlig arbetskatalog.

    Nästa skulle vara att generera en ny CSR med det nyskapade nyckellagret med kommandot nedan.

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

    Detta kommer att skapa en CSR som du måste skicka till certifikatutfärdaren för att få den signerad. Om du spelar runt, kan du överväga att använda en GRATIS certifikatleverantör, annars satsa på en premium.

    Jag fick certifikatet signerat och kommer att fortsätta att importera till nyckellager med kommandot nedan.

    • Importrotcertifikat ges av leverantören
    keytool -importcert -alias root -file root -keystore bloggerflare.jks
    • Importera mellancertifikat
    keytool -importcert -alias intermediate -file intermediate -keystore bloggerflare.jks

    Obs! Utan att importera root & intermediate kommer du inte att kunna importera domäncertifikat till nyckellager. Om du har mer än en mellanprodukt måste du importera alla.

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

    och du kommer att få en bekräftelse på att den har installerats.

    Certifikatsvar installerades i nyckellager

    Bra, så certifikatnyckellager är klart nu. Låt oss gå vidare till nästa steg.

    Om du är ny på SSL och intresserad av att veta mer, anmäl dig till denna onlinekurs – SSL/TLS Operations.

    Aktivera SSL i Tomcat

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

    • Ta en säkerhetskopia av server.xml-filen
    • Gå till avsnittet
    SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
    • Glöm inte att ändra nyckelarkivets filnamn och lösenord med ditt
    • Starta om tomcat och du bör se att Tomcat är tillgänglig via HTTPS

    Ljuv!

    Standard HTTPS-port

    Varför?

    Tja, om du tittar på skärmdumpen ovan, kommer jag åt Tomcat över 8080 med https vilket inte är standard och några fler anledningar.

    • Du vill inte be användarna att använda anpassad port
    • Webbläsaren kommer att varna då certifikatet utfärdas på domännamnet utan porten

    Så idén är att få Tomcat att lyssna på 443-porten så att den är tillgänglig strax över https:// utan portnumret.

    För att göra det, redigera server.xml med din favoritredigerare

    • Gå till
    • Ändra port från 8080 till 443
    • Det ska 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 få tillgång till din applikation med https utan något portnummer

    Imponerande, det är en succé!

    SSL/TLS sårbarhetstest

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

    Det finns många onlineverktyg som jag diskuterade här, och här kommer jag att använda SSL Labs.

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

    Och den är GRÖN – A rating.

    Men det är alltid en bra idé att scrolla ner i rapporten och se om du hittar någon sårbarhet och fixa den.

    Så det var allt för idag.

    Jag hoppas att detta hjälper dig att känna till proceduren för att säkra Tomcat med SSL/TLS-certifikat. Om du är intresserad av att lära dig mer så rekommenderar jag starkt detta kurs.