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).
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
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:
<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" />
https://confluence.atlassian.com/adminjiraserver073/upgrading-jira-applications-using-a-rapid-upgrade-method-861253101.html
https://www.atlassian.com/software/jira/update
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.
zfs clone poolz1/VM/JIRA@2018-08-31_18.08.01–1d poolz1/VM/JIRA_clone na fyyickém server HPLX06wget https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-7.4.0-x32.bin
/opt/atlassian/jira/conf/ např. do home - soubor server.xml bude nutné nahrát do nové instalacechmod a+x atlassian-jira-software-7.4.0-x32.bin./atlassian-jira-software-7.4.0-x32.binserver.xml ze zálohy(ideálně překopírovat nový soubor jako server.xml.orig a ze zálohy nakopírovat původní server.xml)/etc/init.d/jira startzfs promotezfs promote poolz1/VM/JIRA_clone dále pak přejmenovat souborový systémzfs rename poolz1/VM/JIRA_clone poolz1/VM/JIRA 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
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
/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
/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
#! /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'
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
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/
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>
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>
<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>
<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>
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
/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
Dále je potřeba vytvořit pxf soubor a naimportovat ho do JKS uložiště.
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
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
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.
https://confluence.tool4dev.com
root@confluence:~# /etc/init.d/confluence
Usage: /etc/init.d/confluence {start|stop|restart}
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}
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