Inštalácia JRE 1.8 a Git klienta
Smart Web platforma je implementovaná v Java EE a preto potrebuje na svoj beh aj nainštalovane a nakonfigurované Java Runtime Environment verzie 8.
Postup inštalácie je nasledovný:
- Stiahnuť a nainštalovať najnovšie JRE 1.8 z oracle.com.
- Nastaviť systémovú environment premennú JAVA_HOME na root adresár kde bola JRE nainštalovaná.
- Pre použitie silných šifier v HTTPS protokole je potrebne stiahnuť Java Cryptography Extension (JCE) súbory a prekopírovať ich do lib/security adresára JRE. Ak nie je potrebné konfigurovať HTTPS protokol tento krok je možné vynechať.
- V prípade využívania runtime vývoja a ladenia aplikácie je potrebné nainštalovať aj Git z git-scm.com. A pridať cestu k cmd adresáru (napr. C:\Program Files\Git\cmd) do environment premennej PATH.
Pre SmartWeb je plánovaná v blízkej budúcnosti aj podpora verzii JRE 9. Pozor: Java 9 ale nebude dlhodobo podporovaná zo strany spoločnosti Oracle a dlhohodobu podporu získa až verzia Java 18.9.
Inštalácia a nastavenie Wildfly AS
Postup pri inštalácii aplikačného servera Wildfly je je nasledovný:
- Stiahnuť a rozbaliť Wildfly 10.1 zo stránky wildfly.org.
- Nakonfigurovať súbor standalone/configuration/standalone.xml tak ako je uvedené v nasledujúcich podkapitolách.
- Nainštalovať Wildfly ako service. V nasledujúcich podkapitolách sú opísané postupy ako pre platformu Windows tak aj Linux.
Základná konfigurácia standalone.xml
Súbor standalone.xml je hlavný konfiguračný súbor aplikačného servera Wildfly a nachádza sa v adresári /standalone/configuration
. Smart Web server ma implementovanú funkciu automatickej konfigurácie pri deploymente aplikácie aplikačným serverom Wildfly. Z tohto dôvodu pre beh Smart Web aplikácie ako takej nie je potrebné súbor standalone.xml editovať. Editácia je nevyhnutná iba v prípade úpravy konfigurácie samotného aplikačného servera - napr. zmena portov, konfigurácia zabezpečenia komunikácie HTTPS, zapnutie overovania cez klientské certifikáty atď.
Pozor, editáciu konfiguračného súboru standalone.xml vykonávame zásadne pri vypnutom aplikačnom serveri, z dôvodu že počas jeho behu si ju on sám spravuje a môže prepísať zmeny uložené cez editor.
Voliteľná konfigurácia silného šifrovania pre HTTPS v standalone.xml
Nasledujúce zmeny v standalone.xml konfigurujú zapnutie silných šifier pre HTTPS protokol. Podmienkou je inštalácia Java Cryptography Extensions popísaná v 3.tom bode predchádzajúcej kapitoly Inštalácia JRE 1.8 a Git klienta.
<?xml version='1.0' encoding='UTF-8'?> <server xmlns="urn:jboss:domain:4.2"> <extensions> ... </extensions> <system-properties> <!-- Minimálna dĺžka Diffie-Helman kľuča --> <property name="jdk.tls.ephemeralDHKeySize" value="2048"/> </system-properties> <management> <security-realms> ... <!-- Security realn undertowTLSRealm je potrebné nastaviť iba v prípade konfigurácie HTTPS, alebo zároveň aj pre overovanie cez klientské certifikáty --> <security-realm name="undertowTLSRealm"> <server-identities> <ssl protocol="TLS"> <!-- Cesta/heslo ku keystore kde je uložený SSL certifikát pre HTTPS s definovaným aliasom, napr. nb1mgre1.ipesoft-int.sk --> <keystore path="server.jks" relative-to="jboss.server.config.dir" keystore-password="secret" alias="nb1mgre1.ipesoft-int.sk" key-password="secret"/> </ssl> </server-identities> <!-- Časť "authentication" je potrebné nastaviť iba pre overovanie cez klientské certifikáty --> <authentication> <truststore path="client-certificates.jks" relative-to="jboss.server.config.dir" keystore-password="secret"/> </authentication> </security-realm> </security-realms> ... </management> <profile> ... <subsystem xmlns="urn:jboss:domain:undertow:3.1"> ... <server name="default-server"> ... <!-- Element https-listener meniť iba v prípade konfigurácie HTTPS --> <!-- !!! Atribút verify-client je potrebné nastaviť na hodnotu REQUESTED v prípade ak je potrebná autentifikácia cez klientské certifikáty, inak ho netreba meniť --> <https-listener name="https" socket-binding="https" security-realm="undertowTLSRealm" verify-client="NOT_REQUESTED" enabled-protocols="TLSv1.2,TLSv1.1" enabled-cipher-suites="TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256" enable-http2="true"/> </subsystem> </profile>
Uvedené zmeny konfigurácie majú nastavený zoznam povolených protokolov a šifier tak, aby bol bezpečný, podporené sú len novšie prehliadače - IE11 a Android >= 4.4.3, Safari >= 7. V prípade potreby podpory ešte starších prehliadačov treba nastavit tieto atribúty nasledovne:
enabled-protocols="TLSv1.2,TLSv1.1,TLSv1"
enabled-cipher-suites="TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_DHE_DSS_WITH_AES_256_GCM_SHA384,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA"