Obsah
Konfigurace aplikací
Aplikace
Jira: https://jira.tool4dev.com
confluence: https://confluence.tool4dev.com - server dostupný jen lokálně
bitbucket: https://bitbucket.tool4dev.com - server dostupný jen lokálně - test vzdáleně přes OTP
bamboo: https://bamboo.tool4dev.com - server je vypnutý
Pozn: Na reverzním proxy jsou uvedeny chybně adresy pro confluence a bitbucket, proto nejsou servery dostupné z inetu.
Po výpadku a opětovném nahození app. serverů nezafungoval reverzní proxy na Apache.
Fungovalo jen přesměrování na firewallu a veškerý provoz končil na jira.hpl.cz.
Bylo nutné znovu načíst iptables a restartovat apache(nejsem si jistý pořadím).
Apache - obecná konfigurace pro všechny app. servery
apt-get install apache2 apt-get install libapache2-mod-jk
a2enmod proxy a2enmod proxy_http a2enmod proxy_ajp a2enmod rewrite a2enmod deflate a2enmod headers a2enmod proxy_balancer a2enmod proxy_connect a2enmod proxy_html a2enmod proxy_ajp a2enmod rewrite a2enmod mod_jk a2enmod mod_jk a2enmod ssl
Konfigurační soubor server.xml
S vyjímkou Bitbucket je uložen v podsložce conf v HOME složce
/opt/atlassian/bamboo/current/conf server.xml
Původní sekce Connecto je zneplatněná, místo ní je přidán následující kód:
- server.xml
<Connector port="8090" redirectPort="8443" enableLookups="false" protocol="AJP/1.3" URIEncoding="UTF-8" maxThreads="100" minSpareThreads="10" connectionTimeout="60000" pollTime="4000" pollerSize="8192" disableUploadTimeout="true" acceptCount="100" secure="true" useBodyEncodingForURI="true" proxyName="confluence.hpl.cz" scheme="https" proxyPort="443" />
Upgrade
https://confluence.atlassian.com/adminjiraserver073/upgrading-jira-applications-using-a-rapid-upgrade-method-861253101.html
https://www.atlassian.com/software/jira/update
Jira upgrade z verze 7.1 na 7.3.5
Po upgrade Jira z verze 7.1 na 7.3.5 nebylo funkční připojení k web serveru přes https. Porovnáním s funkčním serverem nebylo aktivní spojení na portu 8009.
V rámci upgrade nebyly přeneseny násladující soubory:
server.conf
a
cacerts
Při použití původního souboru server.conf nebyla Jira funkční(neposlouchala na portu 8009).
Po postupné editaci(pokus - omyl) server.conf byla Jira zprovozněna.
Soubor cacerts nyní již obsahuje root certifikáty pro cert. autoritu LetsEncrypt, takže nebylo nutné opět tyto cert nahrávat.
Jira upgrade z verze 7.3.6 na 7.4.0
- Vypnutí serveru Jira a vytvoření zfs clone
zfs clone poolz1/VM/JIRA@2018-08-31_18.08.01–1d poolz1/VM/JIRA_clonena fyyickém server HPLX06 - Stažení aktuální(požadované) verze Jira
wget https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-7.4.0-x32.bin - Záloha složky conf -
/opt/atlassian/jira/conf/např. do home - soubor server.xml bude nutné nahrát do nové instalace - Změna oprávnění
chmod a+x atlassian-jira-software-7.4.0-x32.bin - Upgrade
./atlassian-jira-software-7.4.0-x32.bin
Postupujte podle pokynů(pokud se při upgrade použije zfs clone, není potřeba provádět zálohu Jira) - Po provedení upgrade Jira nakopírujte zpět soubor
server.xmlze zálohy(ideálně překopírovat nový soubor jakoserver.xml.origa ze zálohy nakopírovat původníserver.xml) - Spustit Jira příkazem
/etc/init.d/jira start - Otestovat funkčnost
- Po odsouhlasení Jardy provést
zfs promote
zfs promote poolz1/VM/JIRA_clonedále pak přejmenovat souborový systém
zfs rename poolz1/VM/JIRA_clone poolz1/VM/JIRA
Jira upgrade z verze 7.4.0 na 7.6.0 - obecný postup
Postup je stejný jako u předešlého upgrade. Poslední upgrade byl proveden z verze 7.3.6 na 7.4.0 a pak po dvo verzích az na 7.12.0
Bamboo
Postup: https://confluence.atlassian.com/bamboo/bamboo-upgrade-guide-720411366.html
Umístění důležitých složek a souborů: https://confluence.atlassian.com/bamboo/locating-important-directories-and-files-289277247.html
Upgrade z verze: 5.11.1.1
<bamboo-install> directory: /opt/atlassian/bamboo/current
<bamboo-home> directory: /var/atlassian/application-data/bamboo
Upgrade byl testován na kopii produkčního stroje
dd if=/dev/zvol/poolz1/VM/BAMBOO of=/dev/zvol/poolz1/VM/BAMBOO01
Kopie zařízení BAMBOO01 byla přimountována(pomocí příkazu kpartx). Následně změněna statická IP adresa(soubor interfaces)
kpartx -av /dev/zvol/poolz1/VM/BAMBOO01
mount /dev/mapper/BAMBOO01p1 /mnt/bamboo/
umount /mnt/bamboo
kpartx -dv /dev/zvol/poolz1/VM/BAMBOO01
Certifikáty LE pro novou doménu
/root/.acme.sh/acme.sh --issue -d jira.hpl.cz -d jira.griffteam.com -d jira.griffteam.cz -d jira.tool4dev.com -d www.tool4dev.com -w /home/letsencrypt/webroot/ --force /root/.acme.sh/acme.sh --issue -d bamboo.hpl.cz -d bamboo.tool4dev.com -w /home/letsencrypt/webroot/ --force /root/.acme.sh/acme.sh --issue -d bitbucket.hpl.cz -d bitbucket.tool4dev.com -d git.tool4dev.com -w /home/letsencrypt/webroot/ --force /root/.acme.sh/acme.sh --issue -d confluence.hpl.cz -d confluence.tool4dev.com -w /home/letsencrypt/webroot/ --force
Obnova certifikátů
/root/.acme.sh/acme.sh --renew -d jira.hpl.cz -d jira.griffteam.com -d jira.griffteam.cz -d jira.tool4dev.com -d www.tool4dev.com -w /home/letsencrypt/webroot/ --force /root/.acme.sh/acme.sh --renew -d bamboo.hpl.cz -d bamboo.tool4dev.com -w /home/letsencrypt/webroot/ --force
Skript pro obnovu a synchronizaci certifikátů
#! /bin/sh /root/.acme.sh/acme.sh --renew -d bamboo.hpl.cz -d bamboo.tool4dev.com -w /home/letsencrypt/webroot/ --force rsync -avz -e "ssh -i /root/.ssh/id_rsa" /root/.acme.sh/bamboo.hpl.cz/bamboo.hpl.cz.cer snemec@mail.hpl.cz:/home/snemec/Certs /etc/init.d/apache2 restart ssh snemec@mail.hpl.cz 'sudo /etc/init.d/apache2 restart'
Virtuální servery
Certifikáty
Popis fungování ověření na základě certifikátů od LE.
Certifikáty se používají pro konfiguraci přístupu k web rozhraní serverů přes protokol https.
Dále se používají k získání vztahu důvěry mezi jednotlivými servery. Hlavně mezi Bitbucket a JIRA.
Kde JIRA je ověřovatel.
S webovým rozhranním nebyl problém, ale docházelo k problémům s ověřením mezi servery, konkrétně mez Bitbucket a JIRA.
Problém byl když došlo k vydání certifikátů jinou mezilehlou (intermediate) certifikační autoritou(LE R10 - R13), pro konkrétní servery.
Pak docházelo k nesouladu mezi servery, protože např. pro Bitbucket vyl cert. vydán R11, ale pro JIRA byl vydán R13. To nemá vliv na https přístup, ale mělo to vliv na komunikaci mezi servery, protože CA certifikát pro konkrétní CA(R10 - R13) se ukládá do JAVA truststoru.
Po konzultaci s AI(Provozuji starší java aplikaci, do které musím ručně registrovat CA klíč. Rotace mezi R10 - R13 mi způsobuje problémy. Lze to řešit např. jedním CA souborem, který bude obsahovat všechny CA klíče?) jsem um9stil do JAVA truststoru ISRG Root X1 certifikát. Tomuto certifikátu by měly důvěřovat všechny mezilehlé (intermediate) certifikační autority(LE R10 - R13). Cert. jsem umístil 20.10.2025
Jira
Restart serveru
/etc/init.d/jira start|stop
Test, že Jira poslochá na odpovídajících portech
netstat -anp|grep java|more
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 6815/java tcp6 0 0 :::8009 :::* LISTEN 6815/java tcp6 0 0 :::8080 :::* LISTEN 6815/java tcp6 0 0 :::8443 :::* LISTEN 6815/java tcp6 32 0 192.168.10.58:59362 104.192.142.44:443 CLOSE_WAIT 6815/java tcp6 1 0 192.168.10.58:34039 192.168.10.61:443 CLOSE_WAIT 6815/java tcp6 0 0 127.0.0.1:41047 127.0.1.1:3306 ESTABLISHED 6815/java tcp6 1 0 192.168.10.58:45184 192.168.10.60:443 CLOSE_WAIT 6815/java tcp6 1 0 192.168.10.58:33990 192.168.10.61:443 CLOSE_WAIT 6815/java tcp6 32 0 192.168.10.58:59366 104.192.142.44:443 CLOSE_WAIT 6815/java tcp6 0 0 127.0.0.1:40986 127.0.1.1:3306 ESTABLISHED 6815/java tcp6 0 0 127.0.0.1:40953 127.0.1.1:3306 ESTABLISHED 6815/java
Vystavení certifikátu od cert. autority Let's Encrypt pomocí skriptu acme.sh
https://github.com/Neilpang/acme.sh
Při vydávání certifikátu je použitý mód web root. Na straně web serveru musí být na portu 80 dostupný adresář s právy zápisu.
Původně byl Jira server dostupný jen na portu 443. V konfiguraci apache byl nastaven redirect z portu 80 na port 443
Veškeré dotazy na portu 80 jsou přesměrovány na port 443, kromě http://jira.hpl.cz/.well-known/
- 000-default.conf
Alias /.well-known/ /home/letsencrypt/webroot/.well-known/ <Directory /home/letsencrypt/webroot/> AllowOverride None Require all granted Satisfy Any </Directory> <VirtualHost *:80> RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{REQUEST_URI} !^/.well-known/ RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] #RewriteLog /var/log/rewrite.log #RewriteLogLevel 3 #RedirectPermanent / "https://jira.hpl.cz/" </VirtualHost>
- default-ssl.conf
IfModule mod_ssl.c> <VirtualHost *:443> #<Proxy *> # Order deny,allow # Allow from all #</Proxy> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined SSLEngine on SSLProxyEngine on ProxyPreserveHost on ProxyPass / ajp://localhost:8009/ ProxyPassReverse / ajp://localhost:8009/ SSLProxyCheckPeerCN off SSLCertificateFile /etc/ssl/certs/jira.hpl.cz.cer SSLCertificateKeyFile /etc/ssl/private/jira.hpl.cz.key SSLCACertificateFile /etc/ssl/certs/ca.cer #SSLCertificateFile /etc/ssl/certs/jira.hpl.cz.cer #SSLCACertificateFile /etc/ssl/certs/Intermediate_CA_chain.cer #SSLCertificateKeyFile /etc/ssl/private/jira.hpl.cz.key SSLProtocol +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 </VirtualHost> </IfModule>
Jira - konfigurace reverzního proxy
- 000-default.conf
<VirtualHost *:80> ServerName jira.hpl.cz ServerAlias jira.griffteam.com jira.griffteam.cz ProxyPreserveHost On ProxyRequests off ProxyPass / http://192.168.10.58/ ProxyPassReverse / http://192.168.10.58/ </VirtualHost>
- default-ssl.conf
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName jira.hpl.cz ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined SSLEngine on SSLProxyEngine on ProxyPreserveHost on ProxyPass / https://192.168.10.58/ ProxyPassReverse / https://192.168.10.58/ SSLProxyCheckPeerCN off SSLCertificateFile /etc/ssl/certs/jira.hpl.cz.cer SSLCACertificateFile /etc/ssl/certs/ca.cer SSLCertificateKeyFile /etc/ssl/private/jira.hpl.cz.key SSLProtocol +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 </VirtualHost> </IfModule>
Jira - ověření na základě LE certifikátů
09.07.2024 - problém s přihlášenímm na Confluence a Bitbucket(Bamboo je trvale vypnutý).
Problém se podařilo vyřešit obnovením uložiště na Jira - viz popis níže a registrací ca.cer na Bitbucket a Confluence.
Na Confluence a Bitbucket musí být importován stejný ca.cer jako na Jira(konkrétně R11)
Po změně root LE Certifikátů přestalo fungovat přihlášení k Bitbucket, Confluence i Bambo.
Bylo potřeba znovu nahrát nový CA root certifikát na všechny servery.
Po instalaci certifikátů od Let's Encrypt byl sever dostupný přes webové rozhranní, ale přestal komunikovat s ostatními servery(bamboo, confluence, bitbucket). Application Links byl offline.
Na serveru Jira bylo nutné vložit certifikát cert. autority do souboru cacerts.
Při manipulaci s certifikáty je nutné zadat heslo k uložišti, pro cacerts i jks uložiště je použité defaultní heslo changeit
Import root certifikátu cert autority do uložiště cacerts
/opt/atlassian/jira/jre/bin/keytool -import -alias letsencrypt -keystore /opt/atlassian/jira/jre/lib/security/cacerts -file /root/.acme.sh/jira.hpl.cz/ca.cer
Pokud již existuje alias existuje alias letsencrypt - (keytool error: java.lang.Exception: Certificate not imported, alias <letsencrypt> already exists)
Je potřeba ho smazat a provést import znovu.
/opt/atlassian/jira/jre/bin/keytool -delete -alias letsencrypt -keystore /opt/atlassian/jira/jre/lib/security/cacerts
Import pfx certifikátu do jks uložiště
Dále je potřeba vytvořit pxf soubor a naimportovat ho do JKS uložiště.
Vytvoření pfx souboru
Ve složce kde se generují nové certifikáty - /root/.acme.sh/jira.hpl.cz/ jsem vytvořil složku pfx.
Do této složky jsem nakopíroval soubory:
-rw-r--r-- 1 root root 1586 Dec 7 00:05 ca.cer -rw-r--r-- 1 root root 1939 Dec 7 00:05 jira.hpl.cz.cer -rw-r--r-- 1 root root 1675 Jan 11 2017 jira.hpl.cz.key
Pro vygenerovaný pfx soubor je potřeba zadat heslo pro export - je jedno jaké heslo se použije. Slouží jen pro import od uložiště.
cd /root/.acme.sh/jira.hpl.cz/pfx openssl pkcs12 -export -out jiraletscert.pfx -inkey jira.hpl.cz.key -in jira.hpl.cz.cer -certfile ca.cer
Import pfx do jks uložiště
Při importu do jks uložiště je potřeba zadat destination keystore password - použil jsem changeit
Dále je potřeba zadat Enter source keystore password: - heslo použité při generaci pfx souboru.
cd /root/.acme.sh/jira.hpl.cz/pfx /opt/atlassian/jira/jre/bin/keytool -importkeystore -srckeystore jiraletscert.pfx -srcstoretype pkcs12 -destkeystore jira.jks -deststoretype JKS
Import certifikátu cert autority do jks uložiště
cd /root/.acme.sh/jira.hpl.cz/pfx /opt/atlassian/jira/jre/bin/keytool -import -alias rootCA -keystore jira.jks -trustcacerts -file ca.cer cp -a jira.jks /var/atlassian/application-data/jira/
Ověření - výpis uložených certifikátů v jks uložišti.
/opt/atlassian/jira/jre/bin/keytool -list -keystore /var/atlassian/application-data/jira/jira.jks Enter keystore password:
Výpis by pak měl vypadat následovně:
Keystore type: JKS Keystore provider: SUN Your keystore contains 2 entries rootca, Jan 14, 2017, trustedCertEntry, Certificate fingerprint (SHA1): E6:A3:B4:5B:06:2D:50:9B:33:82:28:2D:19:6E:FE:97:D5:95:6C:CB 1, Jan 14, 2017, PrivateKeyEntry, Certificate fingerprint (SHA1): 81:11:2D:04:47:0B:7B:78:63:85:FC:8D:7A:83:39:FC:18:10:52:EE
Ve výpisu by měla být jedna položka trustedCertEntry a jedna položka PrivateKeyEntry
Oba výpisy musí mít stejné datum.
Na ostatních serverech(Bamboo, Bitbucket, Confluence) vložit ca.cer do souboru cacerts, postup je podobný jako pro Jiru.
#Bitbucket /opt/atlassian/bitbucket/4.4.1/jre/bin/keytool -delete -alias letsencrypt -keystore /opt/atlassian/bitbucket/4.4.1/jre/lib/security/cacerts /opt/atlassian/bitbucket/4.4.1/jre/bin/keytool -import -alias letsencrypt -keystore /opt/atlassian/bitbucket/4.4.1/jre/lib/security/cacerts -file /root/.acme.sh/bitbucket.hpl.cz/ca.cer #Confluence /opt/atlassian/confluence/jre/bin/keytool -delete -alias letsencrypt -keystore /opt/atlassian/confluence/jre/lib/security/cacerts /opt/atlassian/confluence/jre/bin/keytool -import -alias letsencrypt -keystore /opt/atlassian/confluence/jre/lib/security/cacerts -file /root/.acme.sh/confluence.hpl.cz/ca.cer
Po vložení certifikátů restartovat aplikace.
Na Bamboo jsou je jks uložiště certifikátů v jiné cestě.
/usr/lib/jvm/java-8-oracle/jre/bin/keytool -import -alias letsencrypt02 -keystore /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts -file /root/.acme.sh/bamboo.hpl.cz/ca.cer
Ověření dostupnosti lze provést pomocí skriptu SSLPoke
Důležité je provést kontrolu připojení z Bitbucket na Jira!
https://www.netiq.com/communities/cool-solutions/cool_tools/cacerts-dummies/
https://www.netiq.com/communities/cool-solutions/wp-content/uploads/sites/2/2012/02/installcert-sslpoke.zip
Stahnout zip, rozbalit, SSLPoke.class nahrat do bin(/opt/atlassian/jira/jre/bin)
bitbucket:/opt/atlassian/bitbucket/4.4.1/jre/bin# ./java SSLPoke jira.hpl.cz 443 Successfully connected root@jira:/opt/atlassian/jira/jre/bin# ./java SSLPoke jira.hpl.cz 443 Successfully connected
Dostupnost(Application Links) lze kontrolovat jak lokálně na Jira serveru, tak mezi servery.
Confluence
https://confluence.tool4dev.com
root@confluence:~# /etc/init.d/confluence
Usage: /etc/init.d/confluence {start|stop|restart}
Bitbucket
https://bitbucket.tool4dev.com
Home složka: /var/atlassian/application-data/bitbucket
Konfigurační soubor: /var/atlassian/application-data/bitbucket/shared/server.xml
Spouštěcí skripty:
bitbucket:~# /etc/init.d/atlbitbucket
Usage: /etc/init.d/atlbitbucket {start|stop|status}
Bamboo
Home složka: /opt/atlassian/bamboo/current/
Konfigurační soubor: /opt/atlassian/bamboo/current/conf/server.xml
Spouštěcí skripty: Pozor app Bamboo se nenastartuje po restartu serveru. Je potřeba jí spustit ručně.
cd /opt/atlassian/bamboo/current/bin
./start-bamboo.sh
List trusted cert. auth
/usr/lib/jvm/java-8-oracle/jre/bin/keytool -list -keystore /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts |grep -B1 lets

