Tomcat + HTTPS

Tomcat + HTTPS
« kdy: 03. 08. 2020, 20:40:19 »
Zdravim linuxové borce. Mám následující problém. Po instalaci Tomcat serveru (Ubuntu distro) mi běží služba na portu 8080. Což nechci a chci, aby mi běžela na HTTPS. Mám certifikáty (CA.crt, .key, .crt). Nevím už co dělám špatně, ale nedaří se mi to rozjet. Postupuji následujícím způsobem:
Pomocí příkazu jsem si prevedl oba certikáty (.key, .crt) do keystore

openssl pkcs12 -export -in <path/to/cert>.crt -inkey
<path/to/key>.key -out <keystore-name> -name <alias>

Pak jsem provedl pomocí příkazu import CA certu do keystore

 keytool -import -alias root -keystore <your_keystore_filename>
    -trustcacerts -file <filename_of_the_chain_certificate>

A nakonec upravil server.xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
      maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
      clientAuth="false" sslProtocol="TLS"
      keystoreFile="<path/to/keystore>" keystorePass="<keystore_pass_from_above>"
      keystoreAlias="<alias>" keystoreType="PKCS12" />

Pak restart serveru a nic se neděje :( Díky moc


Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Tomcat + HTTPS
« Odpověď #1 kdy: 03. 08. 2020, 21:05:31 »

Re:Tomcat + HTTPS
« Odpověď #2 kdy: 03. 08. 2020, 22:03:40 »
Jiný lehčí způsob není? Nedělám někde nějakou stupidní chybu?

Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Tomcat + HTTPS
« Odpověď #3 kdy: 04. 08. 2020, 06:37:19 »
Nastavit Tomcat přímo na HTTPS, ale to není doporučovaná varianta

Re:Tomcat + HTTPS
« Odpověď #4 kdy: 04. 08. 2020, 08:32:30 »
Pokud Tomcat po restartu neposlouchá na portu 8443, evidentně se ta vaše konfigurace neuplatnila. Pokud ale Tomcat nastartoval, asi v konfiguračním souboru není žádná chyba, takže nejspíš needitujete ten správný konfigurační soubor.

Nastavit Tomcat přímo na HTTPS, ale to není doporučovaná varianta
To platilo tak před dvaceti lety…


Re:Tomcat + HTTPS
« Odpověď #5 kdy: 04. 08. 2020, 08:41:16 »
Editoval jsem server.xml což je správný soubor. Když si vytvořím takové to generic uložiště certifikátů:

keytool -genkey -keysize 2048 -keyalg RSA -sigalg SHA256withRSA -alias tomcat -keystore era6.jks -keypass tajneHeslo -storepass tajneHeslo -dname "CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown"

tak mi to server naběhne na https. Pokud převedu certifikáty co jsem obdržel do PKCS12 + importnu tam CA. Tak nenaběhne :D Opravdu nevím co dělam už špatně googlim jak o život a zatím nic.

Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Tomcat + HTTPS
« Odpověď #6 kdy: 04. 08. 2020, 09:25:02 »

Re:Tomcat + HTTPS
« Odpověď #7 kdy: 04. 08. 2020, 09:36:37 »
org.apache.coyote.http11.Http11NioProtocol je java connector, proto je třeba do keystoreFile dát jks keystore vyrobený právě pomocí keytool, který do .jks umí zkonvertovat .p12

Viz https://tomcat.apache.org/tomcat-8.5-doc/ssl-howto.html

Nocméně doporučoval bych spíše apr connector
https://tomcat.apache.org/tomcat-8.5-doc/config/http.html#SSL_Support_-_Connector_-_NIO_and_NIO2
org.apache.coyote.http11.Http11AprProtocol
Ten sice vyžaduje zkompilované openssl knihovny atd.

Já jsem narazil na limity, kdy jsem chtěl v tomcatu virtuální ssl weby s autentizací klientským certifikátem, tak jsem skončil s Apache Server - mod ajp reversní proxy - tomcat. Prostě jinak to nefungovalo, což nebude Váš případ.

Re:Tomcat + HTTPS
« Odpověď #8 kdy: 04. 08. 2020, 11:43:31 »
https://confluence.atlassian.com/adminjiraserver/running-jira-applications-over-ssl-or-https-938847764.html

Sekce Troubleshooting něco nenapoví?

Já bych vám napověděl, že Jira je něco jiného než Tomcat.  ::)

Re:Tomcat + HTTPS
« Odpověď #9 kdy: 04. 08. 2020, 11:48:00 »
tak mi to server naběhne na https. Pokud převedu certifikáty co jsem obdržel do PKCS12 + importnu tam CA. Tak nenaběhne :D Opravdu nevím co dělam už špatně googlim jak o život a zatím nic.
To, že nenaběhne, je dobrá zpráva. Znamená to, že je někde chyba a že editujete ty správné soubory. Chyba by měla být vypsaná v logu.

Máte v tom úložišti certifikátů certifikáty správně pojmenované a máte tam správné heslo? Musí to být shodné s tím, co používá Tomcat. Osobně raději pro práci s Java KeyStore používám KeyStore Explorer, používání je intuitivnější než používání té řádkové utility.

Re:Tomcat + HTTPS
« Odpověď #10 kdy: 04. 08. 2020, 18:25:33 »
Po použití connectoru <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
a restartu serveru vidím tohle v logu :(

tomcat8[21657]: Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
tomcat8[21657]: Command line argument: -Dignore.endorsed.dirs=
tomcat8[21657]: Command line argument: -Dcatalina.base=/var/lib/tomcat8
tomcat8[21657]: Command line argument: -Dcatalina.home=/usr/share/tomcat8
tomcat8[21657]: Command line argument: -Djava.io.tmpdir=/tmp
tomcat8[21657]: Loaded APR based Apache Tomcat Native library [1.2.21] using APR version [1.6.5].
tomcat8[21657]: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
tomcat8[21657]: APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
tomcat8[21657]: OpenSSL successfully initialized [OpenSSL 1.1.1d  10 Sep 2019]
tomcat8[21657]: Initializing ProtocolHandler ["https-openssl-nio-8443"]

Re:Tomcat + HTTPS
« Odpověď #11 kdy: 04. 08. 2020, 22:24:53 »
Netrap sa a daj pred toho tomcata nginx v reverse proxy mode ako radil niekto vyssie. Strata vykonu limitne nulova, ale usetri to strasne vela nervov.

Re:Tomcat + HTTPS
« Odpověď #12 kdy: 04. 08. 2020, 23:33:52 »
Po použití connectoru <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
a restartu serveru vidím tohle v logu :(
Nerozumím tomu smutnému smajlíku. V tom logu žádná chyba není. Funguje to takhle nebo ne? Mimochodem, doufám, že zkoušíte přístup na port 8443, který tam máte nakonfigurovaný, a ne na standardní HTTPS port 443.

Re:Tomcat + HTTPS
« Odpověď #13 kdy: 05. 08. 2020, 11:37:26 »
To bude nejaka ptakovina, SSL na Tomcatu normalne funguje.

Nejpve si over, zda to neco vraci na: curl -k https://127.0.0.1:8443

Pokud ano, zkontroluj lokalni firewall.

Re:Tomcat + HTTPS
« Odpověď #14 kdy: 05. 08. 2020, 19:34:20 »
Když si vytvořím self-signed cert do keystore uložiště tak mi tomcat najede na portu 8443. Pokud si vytvořím viz první příspěvek ze svých certů (jeden .key a jeden .crt) jeden pkc12 soubor, ktery ihned importnu do noveho keystore a vzapeti tam importnu CA cert. Pak zadam cestu k tomu keystore do stejne konfigurace tak mi tomcat s tim mym certem nenajede.
Postupoval jsem podle této stránky: https://faqs.cascadecms.com/en/articles/2142280-enabling-ssl-via-tomcat-with-an-existing-certificate