Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

W przypadku, gdy hasło zawiera znak "&", hasło należy wpisać w cudzysłowie. zapisać "&", na przykład:
"Wdrozenie&" zapisać jako "Wdrozenie&".

Info
Po wydaniu polecenia zapisz sobie hasło i  wygenerowany alias dla nowego keystore (jak na powyższym zrzucie). Przyda się podczas konfiguracji Tomcata. 

...

Info
Zwróć uwagę na porty. Jeśli system nasłuchuje na porcie 80 to zmień port szyfrowanego połączenia na 443 a także atrybut redirectPort dla wszystkich connectorów. Koniecznym może się okazać również otwarcie portu 443 w zaporze.

Konfiguracja SSL w przypadku dostarczenia certyfikatu w formie pliku .pfx

W tym przypadku nie musimy importować kluczy z .pfx, wystarczy wskazać lokalizacje, typ oraz hasło certyfikatu w ustawieniach %CATALINA_HOME%\conf\server.xml, następnie należy odblokować i edytować connector następującymi wartościami:

 

Code Block
languagexml
themeConfluence
titleserxer.xml
linenumberstrue
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
	port="8443"
	maxThreads="200"
	scheme="https"
	secure="true"
	SSLEnabled="true"
	keystoreFile="/home/plusworkflow/plusworkflow-prod/server/conf/certyfikat.pfx"
	keystorePass="hasło_do_pfx"
	keystoreType="PKCS12"
	clientAuth="false"
	relaxedPathChars="[]|"
	relaxedQueryChars="[]|{}^\`&quot;&lt;&gt;"
	URIEncoding="UTF-8"
	sslProtocol="TLS"
	maxHttpHeaderSize="65536"
	maxPostSize="40194304"/>

Jeżeli pojawi się problem ze znakami np. "the valid characters are defined in rfc 7230 and rfc 3986" - należy dodać ten wpis w konfiguracji connectora

Code Block
	relaxedPathChars="[]|"
	
	relaxedQueryChars="[]|{}^\`&quot;&lt;&gt;"

Konfiguracja SSL dla wersji 4.2

Code Block
  <Connector port="443"
	protocol="org.apache.coyote.http11.Http11NioProtocol"
	maxThreads="200"
	scheme="https"
	secure="true"
	SSLEnabled="true"
	clientAuth="false"
	URIEncoding="UTF-8"
	sslProtocol="TLS"
	connectionTimeout="20000"
	maxHttpHeaderSize="65536"
	maxPostSize="40194304"
	relaxedPathChars="[]|"
	relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"
	encodedSolidusHandling="decode">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate
	certificateKeystoreFile="conf/workflowweb.pfx"
	certificateKeystorePassword="password"
	type="RSA"/>
</SSLHostConfig>
</Connector>

 

Ustawienie automatycznego przekierowania na szyfrowany port. 

 

Wyedytuj plik %CATALINA_HOME%\webapps\ROOT\index.html. Atrybut content powinien zawierać odpowiedni link do systemu (protokół https)



Zrestartuj serwer system i przetestuj czy jesteś automatycznie przekierowywany do wskazanego w pliku index.html URL'a JEŻELI

w katalogu ROOT nie znajduje się index.html należy go utworzyć

Code Block
titleindex.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta HTTP-EQUIV="REFRESH" content="0; url=http://localhost/PlusWorkflow/default.do">
</head>
<body>
</body>
</html>

Dodatkowo należy pamiętać, aby w pliku web.xml odkomentować <welcome-file-list>

 

Konfiguracja SSL na Linuxie lub w przypadku dostarczenia certyfikatów w postaci klucza prywatnego (private.key) oraz pliku crt (czasem występującego w formacie .pem)

...

Automatyczne przekierowanie żądań http na https

 

Od wersji 4.2:

Wpis z web.xml można zastąpić użyciem parametru systemowego REDIRECT_FROM_HTTP_TO_HTTPS. Użycie parametru nadal wymaga zmian w server.xml w celu zdefiniowania Connectora (jest wyżej) dla https i przekierowania na wybrany port.

Poniżej wersji 4.2:

Aby dodać automatyczne przekierowanie żądań http na httpsnależy w pliku web.xml dodać sekcję <security-constraint>

Code Block
................
</jsp-config>   <resource-ref>     <description>PlusWorkflow Default Connection Resource</description>
    <res-ref-name>PlusWorkflowResource</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>
  
    <!-- Require HTTPS for everything except /img (favicon) and /css. -->
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>HTTPSOnly</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>HTTPSOrHTTP</web-resource-name>
            <url-pattern>*.ico</url-pattern>
            <url-pattern>/img/*</url-pattern>
            <url-pattern>/css/*</url-pattern>
			            <url-pattern>/services/ReleaseService/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>NONE</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
   
  <welcome-file-list>
    <welcome-file>default.do</welcome-file>
  </welcome-file-list>
.........................

 

 

 

...

Automatyczne ustawianie flagi SameSite w sesji

Od wersji Chrome 85, przeglądarka przestała domyślnie ustawiać SameSite = none. Powoduje to usuwanie sesji po przekierowaniu użytkownika z serwera zewnętrznego do systemu PlusWorkflow. Przykładowo jeżeli posiadamy wtyczkę do integracji z Mercateo - wysyłając dane zakupów ze sklepu do systemu, sesja zostanie usunięta przez przeglądarkę. Co skończy się wylogowaniem użytkownika. UWAGA: Ustawianie flagi przy parametrze SameSite musi być wykonywane podczas bezpiecznego połączenia SSL. W przeciwnym przypadku ciasteczko sesyjne nie zostanie akceptowane przez przeglądarkę.


Aby to zrobić wystarczy dodać w do pliku conf/context.xml tak <CookieProcessor> z odpowiednim parametrem.

Parametry:

  • strict, lax - Używamy, gdy system PlusWorkflow nie potrzebuje logowania z sharepointów oraz integracji stricte z innymi systemami takimi jak Mercateo. Gdzie wymagane jest przejście na inną stronę i wysłanie danych ze strony do systemu. Z punktu widzenia bezpieczeństwa - najbezpieczniejsze opcje.
  • none - Używamy w przeciwnym przypadku. Ciasteczko z tym parametrem działa pomiędzy stronami (cross-site).
Code Block
languagexml
themeConfluence
titlecontext.xml
linenumberstrue
<Context>
     <CookieProcessor sameSiteCookies="none" />
</Context>

 

Uruchomienie usługi tomcat'a na linuxie porcie 443 (to samo dotyczy portu 80)

Standardowo systemy Linux mają zablokowaną możliwość uruchamiania usług na użytkownikach nie-root'woych na portach poniżej 1024. System PlusWorkflow działa na użytkowniku plusworkflow więc aby uruchomić usługę na portach 443 lub 80 należy wykonac następujące polecenia:

W poniższych poleceniach z wskazaną ścieżką do Javy należy się najpierw upewnić jaka jest dokładna lokalizacja javy np. czy w ścieżce jest "/jre/jre"

Code Block
sudo setcap cap_net_bind_service+ep /path/to/bin/java

lub podając konkretną ścieżkę:

sudo setcap cap_net_bind_service+ep /home/plusworkflow/plusworkflow-prod/jre/bin/java

lub 

sudo setcap cap_net_bind_service+ep /home/plusworkflow/plusworkflow-prod/jre/jre/bin/java

 

Często bywa tak, że po wykonaniu powyższego nie ma możliwości uruchomienia javy i leci błąd:

...

Code Block
# echo "/home/plusworkflow/plusworkflow-prod/jre/lib/amd64/jli" > /etc/ld.so.conf.d/java-libjli.conf
# ldconfig -v

Dla wersji 4.2

Code Block
echo "/home/plusworkflow/test/jre/lib" | sudo tee /etc/ld.so.conf.d/java-libjli.so
sudo ldconfig

ALBO


patchelf --set-rpath /home/plusworkflow/dev/jre/lib /home/plusworkflow/dev/jre/bin/java

sudo setcap 'cap_net_bind_service=+ep' /home/plusworkflow/dev/jre/bin/java

 

aby cofnąć powyższe polecenie można wykonać:

Code Block

sudo setcap cap_net_bind_service-ep /home/plusworkflow/plusworkflow-prod/jre/bin/java

...