Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.


Info

Tento postup inštalácie je platný iba pre novšie verzie D2000.  Ak používate D2000 do verzie V12.0.61 vrátane prosím postupujte podľa návodu Inštalácia a konfigurácia pre staršie verzie D2000.

Obsah

SmartWeb platforma je implementovaná ako aplikácia pre Java EE aplikačný server Tomcat bežiaci na platforme Java. Tento aplikačný server je dodávaný aj v rámci inštalácie D2000 a beží na Jave dodávanej spolu s verziou D2000. V prvom kroku je teda potrebné rozhodnúť či chceme Smart Web inštalovať na Tomcat server dodávaný v rámci D2000 alebo na samostatne spravovaný Tomcat server nezávisle od D2000. Obe alternatívy majú svoje výhody a nevýhody, ktoré je možné zosumarizovať nasledovne:


VlastnosťTomcat v rámci D2000 Samostatný Tomcat Server
jednoduchosť nasadenia(plus) Tomcat nie je potrebné inštalovať a spravovať oddelene od D2000, pretože beží ako D2000 proces s príponou .WSC(mínus) Tomcat je potrebné inštalovať a spravovať nezávisle na D2000
flexibilita nasadenia v DMZ(mínus) nasadenie v DMZ nie je vhodné kvôli potrebe inštalovať a konfigurovať samostatnú inštanciu D2000 (plus) Ideálne pre samostatnú inštaláciu v DMZ
ad-hoc upgrade Tomcat Servera(mínus) upgrade Tomcatu je zviazaný s D2000(plus) Tomcat je možné upgradovať ad-hoc nezávisle na D2000

Nasledujúce kapitoly rozoberajú obe možnosti inštalácie.

Inštalácia Smart Web aplikácie na Tomcat v rámci D2000

Postup inštalácie je nasledovný:

  1. Nakonfigurovať a spustiť proces SELF.WSC nasledovne:
    1. prekopírovať adresár D2000_EXE/templates/config/proc/_.wsc do D2000_APP/<názov aplikácie>/config/proc/
    2. a následne premenovať _.wsc na self.wsc
    3. vytvoriť proces SELF.WSC s parametrom /X2
  2. Nakopírovať súbor D2000_EXE/web/smartweb.war do adresára D2000_APP/<názov aplikácie>/config/proc/self.wsc/base/webapps/
  3. Rozbaliť súbor D2000_EXE/web/tutorial-application.zip do adresára D2000_APP/<názov aplikácie>/config/proc/self.wsc
  4. Spustiť proces SELF.DCS
  5. Spustiť proces SELF.WCS
  6. Otvoriť tutorial aplikáciu v prehliadači na adrese http://localhost:8080/smartweb

Inštalácia Smart Web aplikácie na standalone Tomcat

Postup inštalácie je nasledovný:

  1. Stiahnuť a nainštalovať AdoptOpenJDK verzie 11
  2. Nastaviť systémovú environment premennú JAVA_HOME na root adresár kde bola JDK nainštalované.
  3. Pre použitie silných šifier v HTTPS protokole je potrebné stiahnuť Java Cryptography Extension (JCE) súbory a prekopírovať ich do lib/security adresára JDK. Ak nie je potrebné konfigurovať HTTPS protokol tento krok je možné vynechať
  4. Stiahnuť a nainštalovať Tomcat verzie 9 podla štandardneho postupu 
  5. Nakopírovať  súbor D2000_EXE/web/smartweb.war do webapps adresára Tomcatu
  6. Rozbaliť súbor D2000_EXE/web/tutorial-application.zip do parent adresára Tomcatu 
  7. Spustiť proces SELF.DCS
  8. Spustiť Tomcat server
  9. Otvoriť tutorial aplikáciu v prehliadači na adrese http://localhost:8080/smartweb

Zmena kontextového adresára URL linky

Pre zmenu kontextového adresára URL linky z http://localhost:8080/smartweb na napr. http://localhost:8080/myApp je potrebné spraviť nasledovné:

  1. Zastaviť Tomcat server.
  2. Premenovať súbor /webapps/smartweb.war 
  3. Spustiť Tomcat server.

Obsah

Inštalácia Wildfly AS

Postup pri inštalácii aplikačného servera Wildfly je je nasledovný:

  1. Stiahnuť a rozbaliť Wildfly 10.1 zo stránky wildfly.org.
  2. Nakonfigurovať súbor standalone/configuration/standalone.xml tak ako je uvedené v nasledujúcich podkapitolách.
  3. 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 a HTTP hlavičiek, zapnutie overovania cez klientské certifikáty, kompresia komunikácie atď.

Poznámka

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.

Odporúčaná konfigurácia pre optimálny beh a zabezpečenie servera

Pre optimálny beh Smart Web servera a základné zabezpečenie cez HTTP hlavičky odporúčame nasledovnú konfiguráciu:

Blok kódu
languagexml
titleOdporúčané zmeny v standalone.xml
<?xml version='1.0' encoding='UTF-8'?>
<server xmlns="urn:jboss:domain:4.2">
	...
	<profile>
		<subsystem xmlns="urn:jboss:domain:logging:3.0">
            ...
            <!-- Vypnutie zbytočných info hlášok o ukončení websocket spojenia -->
            <logger category="org.cometd.websocket.server.WebSocketTransport$WebSocketScheduler$1">
                <level name="WARN"/>
            </logger>
            ...
        </subsystem>
		...
 		<subsystem xmlns="urn:jboss:domain:undertow:3.1">
			<server name="default-server">
				<host name="default-host" alias="localhost">
                    <location name="/" handler="welcome-content"/>
                    <filter-ref name="gzipFilter" predicate="not min-content-size(450)"/>
                    <filter-ref name="Strict-Transport-Security-header"/>
                    <filter-ref name="Vary-header"/>
                    <filter-ref name="X-Frame-Options"/>
                    <filter-ref name="X-Content-Type-Options"/>
                    <filter-ref name="X-XSS-Protection"/>
                    <filter-ref name="Referrer-Policy"/>
                    <filter-ref name="Content-Security-Policy"/>
                </host>
            </server>
            ...
            <filters>
                <response-header name="Vary-header" header-name="Vary" header-value="Accept-Encoding"/>
                <response-header name="Strict-Transport-Security-header" header-name="Strict-Transport-Security" header-value="max-age=31536000; includeSubDomains"/>
                <!-- Nastavenia pre Cross-Origin Resource Sharing (nepoužívané/zakázané) -->
                <response-header name="Access-Control-Allow-Origin" header-name="Access-Control-Allow-Origin" header-value="*"/>
                <response-header name="Access-Control-Allow-Methods" header-name="Access-Control-Allow-Methods" header-value="GET, POST, OPTIONS, PUT"/>
                <response-header name="Access-Control-Allow-Headers" header-name="Access-Control-Allow-Headers" header-value="accept, authorization, content-type, x-requested-with"/>
                <response-header name="Access-Control-Allow-Credentials" header-name="Access-Control-Allow-Credentials" header-value="true"/>
                <response-header name="Access-Control-Max-Age" header-name="Access-Control-Max-Age" header-value="1"/>
                <!-- Zakázané vkladanie stránok do frame (starší spôsob) -->
                <response-header name="X-Frame-Options" header-name="X-Frame-Options" header-value="DENY"/>
                <!-- Vynútené použitie MIME typu nastaveného v HTTP hlavičke -->
                <response-header name="X-Content-Type-Options" header-name="X-Content-Type-Options" header-value="nosniff"/>
                <!-- Zakázané zobrazenie stránky, ak bol detekovaný cross-site scripting (XSS) útok -->
                <response-header name="X-XSS-Protection" header-name="X-XSS-Protection" header-value="1; mode=block"/>
                <!-- Neodosielanie referrer informácií -->
                <response-header name="Referrer-Policy" header-name="Referrer-Policy" header-value="no-referrer"/>
                <!-- Nastavenie bezpečnostnej politiky obsahu:
                     - zakázané vkladanie do frame (nový spôsob)
                     - predvolene povolený zdroj obsahu z hostiteľskej domény
                       - pre CSS štýly povolené aj zabezpečené https odkazy a inline
                       - pre súbory písiem povolené aj google písma
                       - pre skripty povolené inline aj evaluácia
                       - zakázané plugin objekty (flash a pod.)
                     - povolené pripájanie z ľubovolnej lokality
                -->
                <response-header name="Content-Security-Policy" header-name="Content-Security-Policy" header-value="frame-ancestors 'none'; default-src 'self'; style-src https: 'self' 'unsafe-inline'; font-src 'self' https://themes.googleusercontent.com https://fonts.gstatic.com; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none'; connect-src *"/>
                <gzip name="gzipFilter"/>
            </filters>
        </subsystem>            
    </profile>     		
	...
	<interfaces>
        ...
        <interface name="public">
            <!-- Nastavenie bind adresy na vsetky sietove interface, kvoli tomu aby bol Wildfly pristupny aj z vonku -->
            <inet-address value="${jboss.bind.address:0.0.0.0}"/>
        </interface>
    </interfaces>


	<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        ...
        <!-- Nastavenie portov pre HTTP a HTTPS na všeobecne používané hodnoty, pozor toto nemeniť pri inštalácii na Linuxe, viď kapitola o inštalácii na Linuxe nižšie -->
        <socket-binding name="http" port="${jboss.http.port:80}"/>
        <socket-binding name="https" port="${jboss.https.port:443}"/>
        ...
    </socket-binding-group>    
</server>

Voliteľná konfigurácia silného šifrovania pre HTTPS

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 kapitole Inštalácia JRE 1.8 a Git klienta.

Blok kódu
languagexml
titleZmeny v standalone.xml pre HTTPS
<?xml version='1.0' encoding='UTF-8'?>
<server xmlns="urn:jboss:domain:4.2">
    ...
	<system-properties>
        <!-- Minimálna dĺžka Diffie-Helman kľúč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, 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">
                ...               
                <!-- !!! 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>

</server>

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 inak tieto atribúty:

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"

...

V prípade že Wildfly AS je dostupný z vonku priamo cez ním otvorené porty a doménu je potrebná nasledovná konfigurácia:

Blok kódu
languagexml
<?xml version='1.0' encoding='UTF-8'?>
<server xmlns="urn:jboss:domain:4.2">
	...
	<profile>
	...
        <subsystem xmlns="urn:jboss:domain:undertow:3.1">
            ...
            <server name="default-server">
				<!-- Atribút redirect-socket nastaviť iba v prípade výhradnej komunikácie cez HTTPS -->
                <http-listener name="default" socket-binding="http" redirect-socket="https"/>
			</server>
            ...
		</subsystem>            
    </profile>
</server>      

V prípade že Wildfly AS je dostupný cez samostatný proxy server alebo IPTABLES rerouting je potrebná nasledovná konfigurácia:

Blok kódu
languagexml
<?xml version='1.0' encoding='UTF-8'?>
<server xmlns="urn:jboss:domain:4.2">
	...
	<profile>
	...
        <subsystem xmlns="urn:jboss:domain:undertow:3.1">
            ...
            <server name="default-server">
				...
				<host name="default-host" alias="localhost">
					...
						<!-- Atribút predicate treba nastaviť na HTTP port definovaný v poslednej časti standalone.xml-->
						<filter-ref name="http-to-https" predicate="equals(%p,8080)"/>
					...
				</host>
	            ...
            <filter-ref name="http-to-https" predicate="equals(%p,8080)"/>
			</server>
            ...
			<filters>
				<!-- Atribút target treba nastaviť na finálnu doménu a port, %U je placeholder pre zvyšnú časť otváranej url linky-->
				<rewrite name="http-to-https" redirect="true" target="https://myhostname:8443%U"/>
			</filters>
		</subsystem>            
    </profile>
</server>      

Inštalácia ako Windows Service

  1. V rámci inštalačného adresára Wildfly skopírovať
    1. obsah adresára docs\contrib\scripts\service do adresára bin\service okrem súboru service.bat
    2. súbor service.bat priamo do adresára bin
  2. Upraviť nasledovné na začiatku súboru bin\service.bat
    1. upraviť set DISPLAYNAME="Wildfly" na iné meno servicu ak taký už existuje
    2. upraviť set DESCRIPTION="Wildfly Application Server"" na text bez medzier inak service nebude možné spustiť
  3. V konzole v adresári bin zadať príkaz service.bat install
  4. Skontrolovať v aplikácii service.exe nainštalovanie nového service

...

Pre inštaláciu na Linuxe  treba postupovať podľa nasledovného návodu pre Ubuntu alebo Centos. Pre iné distribúcie treba postupovať analogicky. Všeobecný rozdiel medzi konfiguráciou Wildfly na Linuxe a Windows je ten že na Linuxe nemôže process aplikačného servera obsadiť priamo porty 80/443 (HTTP/HTTPS) kvoli security. Rieši sa to presmerovaním default portov 8080/8443 cez IPTABLES nasledovne:

...

languagebash

...