Како имплементирати ССЛ у Апацхе Томцат?

Uputstvo korak po korak za konfigurisanje SSL/TLS sertifikata na Tomcat serveru.

Jedan od ključnih zadataka u obezbeđivanju Tomcat servera jeste postavljanje SSL sertifikata, čime se omogućava pristup web aplikaciji putem HTTPS protokola.

Postoji nekoliko načina da se ovo realizuje.

  • Možete vršiti SSL terminaciju na load balanceru
  • Implementirati SSL na nivou CDN-a
  • Koristiti web servere poput Apache, Nginx, itd., kao posrednike i tamo implementirati SSL

Međutim, ako ne koristite nijednu od navedenih opcija, ili ako ovo koristite kao front-end, ili morate direktno primeniti SSL u Tomcatu, sledeće uputstvo će vam biti od pomoći.

U ovom članku ćemo proći kroz sledeće korake:

  • Generisanje CSR-a (zahtev za potpisivanje sertifikata)
  • Uvoz sertifikata u datoteku keystorea
  • Omogućavanje SSL-a u Tomcatu
  • Konfigurisanje TLS protokola
  • Podešavanje Tomcata da sluša na portu 443
  • Testiranje Tomcata na SSL ranjivosti

Krenimo…

Priprema za SSL/TLS sertifikat

Prvi korak je generisanje CSR-a i njegovo potpisivanje od strane ovlašćenog tela. Koristićemo keytool uslužni program za upravljanje sertifikatima.

  • Prijavite se na Tomcat server
  • Dođite do instalacionog direktorijuma Tomcata
  • Napravite folder pod nazivom ssl
  • Izvršite komandu za kreiranje keystorea
keytool -genkey -alias domainname -keyalg RSA -keysize 2048 -keystore filename.jks

U gornjim komandama postoje dve promenljive koje možete promeniti:

  • Alias – poželjno je da bude smislen kako biste ga lako prepoznali u budućnosti. Preporučujem da koristite ime domena.
  • Ime datoteke – takođe je dobro koristiti ime domena.
  • Na primer:

    [[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]#

    Obratite pažnju na pitanje o imenu i prezimenu. To je pomalo varljivo. Ne unosite vaše lično ime, već ime domena koji želite da obezbedite.

    Nakon što unesete sve potrebne informacije, kreiraće se datoteka keystorea u trenutnom radnom direktorijumu.

    Sledeći korak je generisanje novog CSR-a pomoću novokreiranog keystorea, koristeći sledeću komandu:

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

    Ovo će generisati CSR koji treba da pošaljete certifikacionom telu na potpisivanje. Ako testirate, razmislite o korišćenju BESPLATNOG provajdera sertifikata, inače odaberite premium opciju.

    Nakon što sam dobio potpisani sertifikat, nastaviću sa uvozom u keystore koristeći sledeće komande:

    • Uvoz root sertifikata koji vam je dao provajder
    keytool -importcert -alias root -file root -keystore bloggerflare.jks
    • Uvoz intermediate (srednjeg) sertifikata
    keytool -importcert -alias intermediate -file intermediate -keystore bloggerflare.jks

    Napomena: Bez uvoza root i intermediate sertifikata, nećete moći da uvezete sertifikat domena u keystore. Ako imate više od jednog intermediate sertifikata, morate ih sve uvesti.

    • Uvoz sertifikata domena
    keytool -importcert -file bloggerflare.cer -keystore bloggerflare.jks -alias bloggerflare

    Dobićete potvrdu da je sertifikat instaliran.

    Odgovor sertifikata je instaliran u keystore.

    Odlično, keystore sa sertifikatima je sada spreman. Pređimo na sledeći korak.

    Ako ste novi u SSL-u i želite da saznate više, upišite se na ovaj online kurs – SSL/TLS operacije.

    Omogućavanje SSL-a u Tomcatu

    Pod pretpostavkom da ste još uvek prijavljeni na Tomcat server, idite u conf folder.

    • Napravite rezervnu kopiju datoteke server.xml
    • Pronađite sekciju
    SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
    • Ne zaboravite da promenite ime datoteke i lozinku keystorea svojim podacima
    • Restartujte Tomcat i trebalo bi da vidite da je Tomcat dostupan preko HTTPS-a

    Odlično!

    Standardni HTTPS port

    Zašto?

    Pa, ako pogledate gornji snimak ekrana, pristupam Tomcatu preko porta 8080 sa https, što nije standardno, a postoji i nekoliko drugih razloga:

    • Ne želite da tražite od korisnika da koriste nestandardni port
    • Pretraživač će prikazati upozorenje jer je sertifikat izdat za ime domena bez porta

    Dakle, cilj je da Tomcat sluša na portu 443 kako bi mu se moglo pristupiti putem https:// bez navođenja broja porta.

    Da biste to uradili, uredite server.xml datoteku pomoću svog omiljenog uređivača teksta:

    • Pronađite
    • Promenite port sa 8080 na 443
    • Trebalo bi da izgleda ovako:
    <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" />
    • Restartujte Tomcat i pristupite svojoj aplikaciji pomoću https bez navođenja broja porta

    Impresivno, uspeli ste!

    SSL/TLS Test Ranjivosti

    Na kraju, izvršićemo test kako bismo se uverili da nije ranjiv na pretnje na mreži.

    Postoji mnogo online alata o kojima sam govorio ranije, a ovde ću koristiti SSL Labs.

    • Idite na SSL Labs i unesite URL da biste započeli test

    I ocena je ZELENA.

    Međutim, uvek je dobra ideja da pogledate detalje izveštaja i proverite da li postoje neke ranjivosti koje treba ispraviti.

    To bi bilo sve za danas.

    Nadam se da će vam ovo pomoći da razumete postupak obezbeđivanja Tomcata pomoću SSL/TLS sertifikata. Ako ste zainteresovani da saznate više, toplo bih preporučio ovaj kurs.