Jak zaimplementować SSL w Apache Tomcat?

Przewodnik krok po kroku, jak skonfigurować certyfikat SSL/TLS na serwerze Tomcat.

Jednym z podstawowych zadań związanych z zabezpieczeniem Tomcata jest konfiguracja certyfikatu SSL, aby aplikacja internetowa była dostępna przez HTTPS.

Istnieje wiele sposobów, aby to osiągnąć.

  • Możesz zakończyć SSL w load balancerze
  • Implementuj SSL na poziomie CDN
  • Korzystaj z serwerów internetowych, takich jak Apache, Nginx itp. Z przodu i zaimplementuj tam SSL

Jeśli jednak nie używasz żadnego z powyższych lub używasz go jako frontonu lub musisz wdrożyć SSL bezpośrednio w Tomcat, pomocne będą poniższe.

W tym artykule zrobimy jak poniżej.

  • Generuj CSR (Żądanie podpisania certyfikatu)
  • Importuj certyfikat w pliku kluczy
  • Włącz SSL w Tomcat
  • Skonfiguruj protokół TLS
  • Zmień Tomcat, aby nasłuchiwał na porcie 443
  • Przetestuj Tomcata pod kątem luki SSL

Zaczynajmy…

Przygotowanie do certyfikatu SSL/TLS

Pierwszym krokiem byłoby wygenerowanie CSR i podpisanie go przez urząd certyfikacji. Do zarządzania certyfikatami użyjemy narzędzia keytool.

  • Zaloguj się do serwera Tomcat
  • Przejdź do ścieżki instalacji tomcat
  • Utwórz folder o nazwie ssl
  • Wykonaj polecenie, aby utworzyć magazyn kluczy
keytool -genkey -alias domainname -keyalg RSA -keysize 2048 -keystore filename.jks

W powyższych poleceniach są dwie zmienne, które możesz chcieć zmienić.

  • Alias ​​– lepiej, aby był znaczący, aby w przyszłości można było szybko rozpoznać. Wolę zachować ją jako nazwę domeny.
  • Nazwa pliku – znowu dobrze jest zachować nazwę domeny.
  • Były:

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

    Zwróć uwagę na pytanie dotyczące imienia i nazwiska. Myślę, że to trochę mylące. To nie jest Twoje imię, ale nazwa domeny, którą chcesz zabezpieczyć.

    Po podaniu wszystkich informacji utworzy plik kluczy w bieżącym katalogu roboczym.

    Następnym krokiem byłoby wygenerowanie nowego CSR z nowo utworzonym magazynem kluczy za pomocą poniższego polecenia.

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

    Spowoduje to utworzenie CSR, które musisz wysłać do urzędu certyfikacji, aby uzyskać jego podpisanie. Jeśli się bawisz, możesz rozważyć skorzystanie z BEZPŁATNEGO dostawcy certyfikatów, w przeciwnym razie wybierz opcję premium.

    Mam podpisany certyfikat i przystąpię do importowania do magazynu kluczy za pomocą poniższego polecenia.

    • Główny certyfikat importu jest nadawany przez dostawcę
    keytool -importcert -alias root -file root -keystore bloggerflare.jks
    • Importuj certyfikat pośredni
    keytool -importcert -alias intermediate -file intermediate -keystore bloggerflare.jks

    Uwaga: bez zaimportowania katalogu głównego i pośredniego nie będzie można zaimportować certyfikatu domeny do magazynu kluczy. Jeśli masz więcej niż jednego półproduktu, musisz je wszystkie zaimportować.

    • Importuj certyfikat domeny
    keytool -importcert -file bloggerflare.cer -keystore bloggerflare.jks -alias bloggerflare

    i otrzymasz potwierdzenie, że został zainstalowany.

    Odpowiedź certyfikatu została zainstalowana w magazynie kluczy

    Świetnie, więc magazyn kluczy certyfikatów jest już gotowy. Przejdźmy do następnego kroku.

    Jeśli jesteś nowy w SSL i chcesz dowiedzieć się więcej, zapisz się na ten kurs online – Operacje SSL/TLS.

    Włącz SSL w Tomcat

    Zakładając, że nadal jesteś zalogowany na serwerze Tomcat, przejdź do folderu conf

    • Zrób kopię zapasową pliku server.xml
    • Przejdź do sekcji
    SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
    • Nie zapomnij zmienić nazwy pliku kluczy i hasła na swoje
    • Uruchom ponownie tomcat i powinieneś zobaczyć, że Tomcat jest dostępny przez HTTPS

    Słodki!

    Standardowy port HTTPS

    Czemu?

    Cóż, jeśli spojrzysz na powyższy zrzut ekranu, mam dostęp do Tomcata przez 8080 z https, co nie jest standardowe i z kilku innych powodów.

    • Nie chcesz prosić użytkowników o użycie niestandardowego portu
    • Przeglądarka wyświetli ostrzeżenie, gdy certyfikat zostanie wydany na nazwę domeny bez portu

    Pomysł polega więc na tym, aby Tomcat nasłuchiwał na porcie 443, aby był dostępny nieco przez https:// bez numeru portu.

    Aby to zrobić, edytuj plik server.xml w swoim ulubionym edytorze

    • Przejdź do
    • Zmień port z 8080 na 443
    • To powinno wyglądać tak
    <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" />
    • Uruchom ponownie Tomcata i uzyskaj dostęp do swojej aplikacji przez https bez numeru portu

    Imponujące, to sukces!

    Test podatności SSL/TLS

    Na koniec przeprowadzimy test, aby upewnić się, że nie jest podatny na zagrożenia internetowe.

    Istnieje wiele narzędzi internetowych, które omówiłem tutaj, a tutaj użyję SSL Labs.

    I jest ZIELONY – ocena.

    Jednak zawsze dobrym pomysłem jest przewinięcie raportu i sprawdzenie, czy znajdziesz jakąś lukę i naprawisz ją.

    Więc to było wszystko na dzisiaj.

    Mam nadzieję, że pomoże ci to poznać procedurę zabezpieczania Tomcata certyfikatem SSL/TLS. Jeśli chcesz dowiedzieć się więcej, gorąco polecam to kurs.