Przewodnik krok po kroku dotyczący prawidłowego włączania protokołu HTTPS lub SSL na serwerze Apache Tomcat — port 8443
Opublikowany: 2021-04-03Od prawie 12 lat zacząłem używać Apache Tomcat. Wierzę, że kiedy zrobiłem mój pierwszy projekt w ramach klasy, był to Tomcat w wersji 1.x
Teraz jest już w wersji 8.0
. Przeważnie miałem kontakt z Tomcat Server w mojej codziennej pracy, po prostu nie mogę bez niego żyć.
Na Crunchify opublikowaliśmy już prawie 40 artykułów na temat Apache Tomcat
. W większości tutoriali uruchamiałem serwer na porcie 8080, który jest domyślnym portem skonfigurowanym w pliku server.xml
.
W tym samouczku szczegółowo omówimy wszystkie kroki dotyczące how to enable HTTPS/SSL on Apache Tomcat Server
.
Zacznijmy:
Krok 1. Utwórz magazyn kluczy
keytool
: wygenerujemy bezpieczny klucz za pomocą polecenia keytool
– które jest narzędziem do zarządzania kluczami i certyfikatami.
Komenda:
1 2 3 4 |
bash - 3.2 $ pwd / Users / Shared bash - 3.2 $ keytool - genkey - alias crunchify - keyalg RSA - keystore / Users / Shared / crunchify . keystore |
Plik zostanie utworzony w folderze /Users/Shared
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
bash - 3.2 $ keytool - genkey - alias crunchify - keyalg RSA - keystore / Users / Shared / crunchify . keystore Enter keystore password : Re - enter new password : What is your first and last name ? [ Unknown ] : App Shah What is the name of your organizational unit ? [ Unknown ] : Crunchify , LLC What is the name of your organization ? [ Unknown ] : Crunchify What is the name of your City or Locality ? [ Unknown ] : New York City What is the name of your State or Province ? [ Unknown ] : NY What is the two - letter country code for this unit ? [ Unknown ] : US Is CN = App Shah , OU = "Crunchify, LLC" , O = Crunchify , L = New York City , ST = NY , C = US correct ? [ no ] : yes Generating 2 , 048 bit RSA key pair and self - signed certificate ( SHA256withRSA ) with a validity of 90 days for : CN = App Shah , OU = "Crunchify, LLC" , O = Crunchify , L = New York City , ST = NY , C = US |
Używam systemu Mac OS X, więc zamień odpowiednio ścieżkę, jeśli korzystasz z systemu Windows. Użyłem hasła 123456
.
Krok 2. Utwórz żądanie podpisania certyfikatu z podpisem własnym
1 2 |
bash - 3.2 $ keytool - certreq - keyalg RSA - alias crunchify - file crunchify . csr - keystore crunchify . keystore Enter keystore password : |
Wpisz hasło: 123456
Krok 3. Sprawdźmy najpierw, czy tomcat działa na porcie 8080 przez HTTP.
Start
serwer tomcat za pomocą polecenia: <tomcat_home>/bin/ startup.sh
.
Upewnij się, że jesteś we właściwej lokalizacji ścieżki tomcat.
1 2 3 4 5 6 7 8 9 10 11 |
bash - 3.2 # pwd / Users / Shared / apache - tomcat - 9.0.30 / bin bash - 3.2 $ . / startup . sh Using CATALINA_BASE : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_HOME : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_TMPDIR : / Users / Shared / apache - tomcat - 9.0.30 / temp Using JRE_HOME : / Library / Java / JavaVirtualMachines / jdk - 13.0.1.jdk / Contents / Home Using CLASSPATH : / Users / Shared / apache - tomcat - 9.0.30 / bin / bootstrap . jar : / Users / Shared / apache - tomcat - 9.0.30 / bin / tomcat - juli . jar Tomcat started . |
Hit URL: http://localhost:8080
, aby upewnić się, że serwer jest uruchomiony i działa.
Krok 4. Teraz sprawdź instancję tomcat na porcie 8443 przez HTTPS.
- Teraz sprawdź port 8443 (URL HTTPS/SSL).
- Hit URL:
https://localhost:8443
- Powinieneś zobaczyć komunikat o błędzie. Strona nie powinna się w ogóle ładować.
Krok-5. Zaktualizuj plik /conf/server.xml
Ponieważ powyżej wygenerowaliśmy żądanie podpisania magazynu kluczy i certyfikatu, musimy powiedzieć tomcatowi, aby go użył.
- Otwórz plik
server.xml
, który znajduje się w<tomcat_home>/conf/
i zmodyfikuj ustawienia. - W naszym przypadku jest to folder
/Users/Shared/apache-tomcat-9.0.30/conf
.
Dodaj poniższą sekcję bezpośrednio do pliku server.xml:

1 2 3 4 5 |
< Connector port = "8443" protocol = "HTTP/1.1" SSLEnabled = "true" maxThreads = "150" scheme = "https" secure = "true" keystoreFile = "/Users/Shared/crunchify.keystore" keystorePass = "123456" clientAuth = "false" sslProtocol = "TLS" sslVerifyClient = "optional" sslEnabledProtocols = "TLSv1.2,TLSv1.1,SSLv2Hello" / > |
- Tutaj hasło to
123456
, którego użyłem wStep-1
. - Protokół: HTTP/1.1
Zapisz plik. Następnie zatrzymamy się i uruchomimy serwer Tomcat.
Krok-6. Zatrzymaj i uruchom Apache Tomcat.
- bash-3.2$ /Users/Shared/apache-tomcat-9.0.30/bin/shutdown.sh
- bash-3.2$ /Users/Shared/apache-tomcat-9.0.30/bin/startup.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
bash - 3.2 $ / Users / Shared / apache - tomcat - 9.0.30 / bin / shutdown . sh Using CATALINA_BASE : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_HOME : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_TMPDIR : / Users / Shared / apache - tomcat - 9.0.30 / temp Using JRE_HOME : / Library / Java / JavaVirtualMachines / jdk - 13.0.1.jdk / Contents / Home Using CLASSPATH : / Users / Shared / apache - tomcat - 9.0.30 / bin / bootstrap . jar : / Users / Shared / apache - tomcat - 9.0.30 / bin / tomcat - juli . jar NOTE : Picked up JDK_JAVA_OPTIONS : -- add - opens = java . base / java . lang = ALL - UNNAMED -- add - opens = java . base / java . io = ALL - UNNAMED -- add - opens = java . rmi / sun . rmi . transport = ALL - UNNAMED bash - 3.2 $ / Users / Shared / apache - tomcat - 9.0.30 / bin / startup . sh Using CATALINA_BASE : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_HOME : / Users / Shared / apache - tomcat - 9.0.30 Using CATALINA_TMPDIR : / Users / Shared / apache - tomcat - 9.0.30 / temp Using JRE_HOME : / Library / Java / JavaVirtualMachines / jdk - 13.0.1.jdk / Contents / Home Using CLASSPATH : / Users / Shared / apache - tomcat - 9.0.30 / bin / bootstrap . jar : / Users / Shared / apache - tomcat - 9.0.30 / bin / tomcat - juli . jar Tomcat started . |
Krok-7. Sprawdź adres URL i certyfikat HTTPS: https://localhost:8443
Teraz ponownie naciśnij bezpieczny adres URL HTTPS, aby sprawdzić, czy strona została załadowana pomyślnie.
Chrom:
- Domyślnie
Chrome Blocks all insecure HTTPS
. - Włącz
Chrome flag
aby wczytać nieprawidłowe certyfikaty dla zasobów ładowanych z localhost
- Przejdź do Chrome
- Otwórz kartę
- wpisz:
chrome://flags/#allow-insecure-localhost
- Włącz flagę z menu rozwijanego
- Uruchom ponownie Chrome
Safari i Mozilla Firefox:
-
Accept invalid certificate error
i odwiedź witrynę.
Powinieneś zobaczyć stronę Apache Tomcat ładującą się przez HTTPS na porcie 8443
Wszystko gotowe. Czy zauważyłeś red padlock
? Nie martw się. Nie kupiliśmy certyfikatu SSL od Verisign lub Comodo.
W środowisku produkcyjnym możesz nie widzieć tego czerwonego krzyża.
Kliknij certyfikat w przeglądarce, a nasz domyślny samopodpisany certyfikat powinien być
valid for 90
dni.
Punkt bonusowy:
Jak sprawdzić cert content
za pomocą polecenia keytool
?
1 |
bash - 3.2 # keytool -list -keystore /Users/<username>/crunchify.keystore |
Wynik:
1 2 3 4 5 6 7 8 9 10 11 12 |
bash - 3.2 $ keytool - list - keystore / Users / Shared / crunchify . keystore Enter keystore password : Keystore type : PKCS12 Keystore provider : SUN Your keystore contains 1 entry crunchify , Apr 24 , 2020 , PrivateKeyEntry , Certificate fingerprint ( SHA - 256 ) : 9D : 26 : 77 : E0 : E8 : 79 : 5B : 46 : 57 : 64 : 04 : 95 : B8 : 22 : 9C : E2 : 9F : A4 : 82 : CB : 01 : B5 : 80 : 62 : 75 : 90 : 48 : 27 : 5F : 60 : CB : C8 bash - 3.2 $ |