bg-tutorials

Cum să instalezi un certificat SSL în Tomcat

În acest tutorial, vei învăța cum să instalezi un certificat SSL pe Apache Tomcat folosind utilitarul Java keytool, apoi să configurezi conectorul HTTPS în server.xml. Dacă nu ai generat încă CSR-ul, prima secțiune îți arată cum să faci asta.

Am realizat de asemenea un videoclip care te ghidează prin întregul proces. Poți urmări videoclipul, citi instrucțiunile sau ambele. Poți viziona videoclipul mai jos.

Generarea unui cod CSR pentru Tomcat

CSR înseamnă Certificate Signing Request (cerere de semnare a certificatului), un bloc de text ce conține detalii actuale despre domeniul și organizația ta. Fiecare cumpărător al unui certificat SSL comercial trebuie să trimită un CSR către Autoritatea de Certificare (furnizorul SSL) pentru a trece validarea și a primi certificatul. Dacă CSR-ul conține detalii incorecte, CA nu îl va semna.

Pe Tomcat, CSR-ul este creat cu keytool dintr-un keystore Java, iar același keystore conține și cheia privată pe care o vei reutiliza în timpul instalării. Ai două opțiuni:

Important: ține evidența fișierului keystore și a aliasului pe care le-ai folosit la generarea CSR-ului. Vei importa certificatul semnat înapoi în exact acel alias mai târziu, deoarece acolo se află cheia privată corespunzătoare.

După ce Autoritatea de Certificare validează cererea ta și îți trimite fișierele SSL, continuă cu instalarea de mai jos.

Instalarea unui certificat SSL în Tomcat

O instalare pe Tomcat are două etape: mai întâi imporți lanțul de certificate și certificatul semnat în keystore-ul care deja conține cheia ta privată, apoi configurezi conectorul HTTPS în server.xml pentru a folosi acel keystore.

Pasul 1: Pregătește fișierele certificatului SSL

Autoritatea de Certificare îți trimite fișierele prin e-mail la adresa pe care ai furnizat-o, de obicei sub forma unei arhive ZIP. Extrage-o. În funcție de CA, fișierele sosesc într-unul din următoarele două formate:

  • PKCS#7: un singur fișier .p7b (sau .cer) care conține deja certificatul tău împreună cu certificatele rădăcină și intermediare.
  • PEM: fișiere separate, de obicei un .crt pentru certificatul serverului, plus fișiere individuale root.crt și intermediate.crt.

Încarcă fișierele extrase pe server, în același director cu keystore-ul din care ai generat CSR-ul (denumit mai jos example.jks). Identifică formatul tău și urmează instrucțiunile corespunzătoare.

Pasul 2: Importă certificatul în keystore

Format PKCS#7. Deoarece un fișier .p7b conține deja lanțul complet, o singură comandă importă totul deodată, în aliasul existent al cheii tale private:

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.p7b

Înlocuiește ssldragon cu propriul tău alias și example cu numele fișierelor tale. Aliasul trebuie să fie cel care deja conține cheia ta privată (aliasul de la pasul CSR). Când vezi mesajul Certificate reply was installed in keystore, importul a reușit. Verifică conținutul keystore-ului cu:

keytool -list -v -keystore example.jks

Caută o intrare al cărei tip este PrivateKeyEntry cu o lungime a lanțului de certificate mai mare de 1. Aceasta confirmă că certificatul semnat este acum atașat cheii tale private.

Format PEM. Importă certificatele separat, în ordinea lanțului: mai întâi rădăcina, apoi orice certificate intermediare, iar certificatul domeniului tău la final. Importarea lanțului mai întâi permite keytool să construiască o cale de încredere completă înainte de a atașa răspunsul cheii tale. Importă certificatul rădăcină:

keytool -import -trustcacerts -alias root -keystore example.jks -file root.crt

Apoi importă certificatul intermediar:

keytool -import -trustcacerts -alias intermediate -keystore example.jks -file intermediate.crt

Dacă CA-ul tău furnizează mai multe certificate intermediare, importă fiecare sub propriul alias de încredere, urmând ordinea în care se semnează reciproc (de la rădăcină în jos spre certificatul domeniului tău). De exemplu, un certificat Sectigo Sectigo PositiveSSL vine cu mai mult de un intermediar, așa că importă-le în ordine înainte de certificatul domeniului.

În final, importă certificatul tău principal (cel emis pentru domeniul tău) în aliasul existent al cheii private, același alias pe care l-ai folosit la generarea CSR-ului:

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.crt

Aici, ssldragon trebuie să fie aliasul tău existent al cheii private. Deoarece acel alias are deja o cheie, keytool tratează acest import ca pe un răspuns de certificat și leagă certificatul semnat de cheie. Acesta este pasul care face ca HTTPS să funcționeze.

Capcană critică: nu importa certificatul semnat sub un alias nou. Dacă aliasul nu are o cheie privată existentă, keytool va stoca certificatul ca o intrare de încredere de sine stătătoare, fără nicio cheie atașată, iar TLS va eșua. Dacă nu ești sigur care alias conține cheia ta, rulează keytool -list -v -keystore example.jks și folosește aliasul al cărui tip este PrivateKeyEntry.

Pasul 3: Configurează conectorul HTTPS în server.xml

Cu certificatul în keystore-ul tău, îndreaptă conectorul HTTPS al Tomcat către acesta. Conectorul este definit în server.xml, situat în folderul conf al instalării Tomcat (de exemplu $CATALINA_HOME/conf/server.xml). Deschide fișierul într-un editor de text.

Pe versiunile actuale de Tomcat (9, 10 și 11), forma recomandată include un element SSLHostConfig imbricat, care la rândul său conține un element Certificate ce face referire la keystore-ul tău. Adaugă sau actualizează conectorul securizat astfel:

<Connector
    port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150"
    SSLEnabled="true"
    scheme="https"
    secure="true">
  <SSLHostConfig>
    <Certificate
        certificateKeystoreFile="/your_path/example.jks"
        certificateKeystorePassword="your_keystore_password"
        certificateKeystoreType="JKS"
        certificateKeyAlias="ssldragon"
        type="RSA" />
  </SSLHostConfig>
</Connector>
  • certificateKeystoreFile: calea completă către fișierul tău keystore.
  • certificateKeystorePassword: parola keystore-ului.
  • certificateKeystoreType: JKS pentru un keystore .jks, sau PKCS12 pentru un keystore .p12 / .pfx.
  • certificateKeyAlias: aliasul care conține cheia ta privată și certificatul semnat (aici, ssldragon). Acesta îi spune lui Tomcat ce intrare să folosească atunci când keystore-ul conține mai multe.

Notă: portul 443 este portul HTTPS standard folosit mai sus; exemplele proprii ale Tomcat au implicit 8443, așa că folosește-l pe cel pe care mediul tău îl așteaptă. Dacă aceasta este prima ta configurare HTTPS, conectorul securizat poate fi comentat în server.xml. Elimină marcajele de comentariu din jur pentru ca conectorul să fie activ și asigură-te că niciun alt conector nu este deja asociat aceluiași port.

Forma veche (Tomcat mai vechi). Ghidurile mai vechi plasează detaliile keystore-ului direct pe conector ca atribute keystoreFile și keystorePass. Acest stil a fost înlocuit de elementele SSLHostConfig și Certificate prezentate mai sus, care sunt forma de utilizat pe versiunile de Tomcat suportate.

Pasul 4: Salvează server.xml și repornește Tomcat

Salvează server.xml, apoi repornește Tomcat pentru ca acesta să reîncarce configurația. Pe Linux, folosește scripturile incluse:

$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh

Dacă Tomcat rulează ca serviciu, repornește-l în schimb prin managerul de servicii (de exemplu systemctl restart tomcat pe Linux, sau panoul Services pe Windows). Felicitări, certificatul tău SSL este acum instalat pe serverul Tomcat.

Testează instalarea SSL pe Tomcat

După instalarea certificatului, mici erori pot trece neobservate și pot afecta modul în care browserele tratează site-ul tău. Fă-ți un obicei din a verifica instalarea. Rulează SSL Checker-ul nostru pentru o scanare instantanee care dezvăluie probleme precum un certificat intermediar lipsă sau un lanț de neîncredere.

Întrebări frecvente

De ce certificatul meu SSL Tomcat nu funcționează după ce l-am importat?

Cauza obișnuită este importarea certificatului semnat sub un alias nou în loc de aliasul care deja conține cheia ta privată. keytool îl stochează atunci ca o intrare de certificat de încredere fără nicio cheie, astfel încât Tomcat nu poate finaliza un handshake TLS. Reimportă răspunsul semnat în aliasul existent al cheii private (cel de la CSR-ul tău). Confirmă că a funcționat rulând keytool -list -v -keystore example.jks și verificând că aliasul apare ca PrivateKeyEntry cu un lanț mai lung de un certificat.

Import mai întâi lanțul de certificate sau certificatul domeniului meu?

Importă mai întâi lanțul. Adaugă rădăcina și orice certificate intermediare ca intrări de încredere, în ordine, apoi importă certificatul domeniului tău în aliasul cheii private la final. Acest lucru permite keytool să construiască o cale de încredere completă înainte de a atașa răspunsul cheii tale. Cu un fișier PKCS#7 (.p7b), lanțul este deja inclus, astfel încât un singur import rezolvă totul.

Unde se află fișierul de configurare SSL Tomcat?

Conectorul HTTPS este definit în server.xml, în directorul conf al instalării Tomcat (de exemplu $CATALINA_HOME/conf/server.xml). Pe versiunile actuale de Tomcat, keystore-ul este referențiat printr-un element SSLHostConfig și Certificate imbricat, mai degrabă decât direct pe conector.

Pot folosi un keystore PKCS12 în loc de JKS pe Tomcat?

Da. Tomcat le suportă pe ambele. Setează certificateKeystoreType la PKCS12 pentru un keystore .p12 sau .pfx, sau JKS pentru un keystore .jks, și indică prin certificateKeystoreFile fișierul corespunzător. PKCS12 este formatul standard și portabil de keystore, deci este o alegere implicită bună pentru keystore-uri noi.

Ce port folosește Tomcat pentru HTTPS?

Configurația exemplu a Tomcat folosește portul 8443 pentru conectorul securizat. Pentru a servi HTTPS pe portul standard pe care browserele îl folosesc implicit, setează port al conectorului la 443 și asigură-te că niciun alt conector sau serviciu nu îl folosește deja.

Cum repornesc Tomcat după ce modific configurația SSL?

Rulează scripturile incluse $CATALINA_HOME/bin/shutdown.sh urmate de $CATALINA_HOME/bin/startup.sh, sau repornește serviciul Tomcat prin managerul de servicii (de exemplu systemctl restart tomcat pe Linux, sau panoul Services pe Windows). O repornire este necesară pentru ca modificările din server.xml să aibă efect.

Economisește 10% la certificatele SSL în momentul plasării comenzii!

Eliberare rapidă, criptare puternică, încredere în browser de 99,99%, suport dedicat și garanție de returnare a banilor în 25 de zile. Codul cuponului: SAVE10

A detailed image of a dragon in flight

Autor cu experiență, specializat în certificate SSL. Transformă subiectele complexe despre securitatea cibernetică în conținut clar și captivant. Contribuie la îmbunătățirea securității digite prin narațiuni cu impact.