Základní instalace¶
Popis¶
Základní instalace PMC v dockeru.
Předpoklady¶
Pro úspěšnou instalaci je třeba mít přístup do repozitáře https://gitlab.greencenter.site/software/scrumware/pmc-docker a login do docker registry na https://nexus.greencenter.site
Dále je nutné mít k dispozici tyto balíky:
- docker-compose
- openssl
- curl
- jq
- netcat
- apache2
- git
Pokud používáte self-signed certifikát pro http server, tak musí být uložen v adresáři crt a musí mít příponu .crt. Viz dále.
Pokud chcete pro activemq využít jiný, než testovací certifikát, musí být do tohoto adresáře přidán taky. Zároveň musí být v adresáři activemq/conf/. Viz konfigurace activemq.
Použití¶
Info
Popis předpokládá, že instalace probíhá na Ubuntu. Pokud instalace probíhá na jiné distribuci, mohou se příkazy mírně lišit.
Script je rozdělen na dvě části (prepare.sh a init.sh). Ty musí být spuštěny ve správném pořadí. Níže je v bodech popsán postup instalace.
- Nainstalovat předpokládané balíky
- Naklonovat repozitář do adresáře
/opt - Nakopírovat certifikát a klíč pro web server do
ca/http/cert.pemaca/http/key.pemnebo spustit scriptca/http/create_cert.sh(pouze pro testovací účely) - Nakopírovat certifikát z
ca/http/cert.pemdocrt/cert.crt - Pokud chcete použít vlastní certifikát pro activemq, tak je třeba to udělat podle dokumentace a certifikát msusí být nakopírován do
crt/mq.crt. Pokud stačí testovací certifikát, tak je třeba zkopírovatca/mq/amq-server_certdocrt/mq.crt. - Pokud je žádoucí vytvořit vlastní CA pro scep službu, nakopírujte privátní klíč do
scep/depot/ca.key1 a certifikát doscep/depot/ca.pem. Heslo k privátnímu klíči uložte do souboruscep/secret/capas. Pokud toto neučiníte, poběží služba scep s testovací CA. - Upravte konfigurační soubory podle prostředí. Především
.init.env,.env,pmc/application-local.propertiesapmc-fe/.env. Některé soubory jsou doplněny komentáři, které je vhodné si před prováděním úprav přečíst. - Spusťte script prepare.sh (tento script připraví certifikační autoritu a soubor CRL, což je nutné k běhu http serveru).
-
Spusťte http server -
sudo systemctl start apache2. Příklad konfigurace apache2 by mohl vypadat takto. (za předpokladu, že nebyly upraveny konfigurační soubory a repozitář byl naklonován do adresáře/opt). Pokud používáte apache2, je nutné povolit potřebné moduly následujícím příkazemsudo a2enmod headers proxy_http proxy_http2 ssl rewrite/etc/apache2/sites-available/pmc.local.conf<VirtualHost *:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html/ ServerName pmc.test.local SSLEngine on SSLProxyEngine on SSLProxyVerify none SSLProxyCheckPeerCN Off SSLProxyCheckPeerName Off SSLProxyCHeckPeerExpire On # (1)! RequestHeader set X-Forwarded-Port "443" RequestHeader merge SSL_CLIENT_S_DN "%{SSL_CLIENT_S_DN}s" RequestHeader merge SSL_CLIENT_I_DN "%{SSL_CLIENT_I_DN}s" RequestHeader merge SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}s" RequestHeader merge SSL_CLIENT_V_START "%{SSL_CLIENT_V_START}s" RequestHeader merge SSL_CLIENT_V_END "%{SSL_CLIENT_V_END}s" RequestHeader merge SSL_CLIENT_M_VERSION "%{SSL_CLIENT_M_VERSION}s" RequestHeader merge SSL_CLIENT_M_SERIAL "%{SSL_CLIENT_M_SERIAL}s" RequestHeader merge SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}s" RequestHeader merge X_SSL_CLIENT_M_SERIAL "%{SSL_CLIENT_M_SERIAL}s" RequestHeader set X_FORWARDED_PROTO "https" env=HTTPS RequestHeader merge SslSubject "%{SSL_CLIENT_S_DN}s" RequestHeader merge X-SSL-CLIENT-S-DN-O "%{SSL_CLIENT_S_DN_O}s" Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" ProxyRequests Off # (2)! AllowEncodedSlashes NoDecode # (3)! SSLCACertificateFile /opt/pmc-docker/scep/depot/ca.pem SSLCARevocationFile /opt/pmc-docker/scep/depot/crl/revocation.crl SSLCARevocationPath /opt/pmc-docker/scep/depot/crl/ SSLCARevocationCheck chain no_crl_for_cert_ok SSLOCSPEnable Off # (4)! SSLVerifyClient optional SSLVerifyDepth 10 SSLOptions +ExportCertData +StdEnvVars # (5)! SSLCertificateFile /opt/pmc-docker/ca/http/cert.pem SSLCertificateKeyFile /opt/pmc-docker/ca/http/key.pem # (6)! # (7)! ProxyPass /auth https://127.0.0.1:8082/auth ProxyPassReverse /auth https://127.0.0.1:8082/auth # (8)! ProxyPass /api http://127.0.0.1:8012/api ProxyPassReverse /api http://127.0.0.1:8012/api # (9)! ProxyPass /scep http://127.0.0.1:8012/scep ProxyPassReverse /scep http://127.0.0.1:8012/scep # (10)! ProxyPass /pmc http://127.0.0.1:8088/pmc ProxyPassReverse /pmc http://127.0.0.1:8088/pmc </VirtualHost>- Hlavičky se propisují kvůli PMC POS - aby mělo PMC Informaci o certifikátu, který byl v requestu použit
- zda brát znaky
%2Fv URL jako/případně%5Cjako\Viz AllowEncodedSlashes - Cesty k certifikační autoritě. Důležité pro PMC POS.
- Nastavuje možnost ověření klientským certifikátem. Důležite pro PMC POS.
- Cesta k certifikátu pro https
- Nastavení reverse proxy
- /auth musí vést na https port keycloaku (musí sedět s konfigurací v souboru docker-compose.yml)
- /api musí vést na api port PMC (musí sedět s konfigurací v souboru docker-compose.yml)
- /scep musí vést na api port PMC (musí sedět s konfigurací v souboru docker-compose.yml)
- /pmc musí vést na port PMC-FE (musí sedět s konfigurací v souboru docker-compose.yml)
-
Spusťte script init.sh
- Po úspěšné instalaci odstraňte adresář
tmpa souboryinit.sh,prepare.sha.init.env.
Úprava domény¶
V defaultní konfiguraci běží pmc na doméně pmc.test.local. Pokud chceme tuto doménu změnit, je třeba upravit následující soubory.
Pozor
Toto je třeba udělat před instalací PMC. V opačném případě je změna domény složitější.
- pmc-fe/.env
- PUBLIC_URL
- REACT_APP_KEYCLOAK
- REACT_APP_API
- .env
- KEYCLOAK_HOSTNAME
- KEYCLOAK_FRONTEND_URL
- pmc/application-local.properties
- keycloak.auth-server-url
- try-this.auth-server-url-short
- tmp/realm-export.json:706
- docker-compose.yml:83
Popis souborů¶
docker-compose.yml¶
Definice kontejnerů - viz docker-compose.yml.
prepare.sh¶
Script, který připraví certifikační autoritu a soubor crl. Musí být spuštěn před hlavním init scriptem. Po úspěšné instalaci vymazat.
init.sh¶
Instalační script. Po úspěšné instalaci vymazat.
.init.env¶
Konfigurace pro instalační script. Po úspěšné instalaci vymazat.
.env¶
Konfigurace dockeriu
pmc-fe/¶
Konfigurace pmc-fe.
pmc/¶
Konfigurace pmc-be - viz Konfigurační soubor PMC BE.
etl-pmc/¶
Konfigurace etl-pmc
scep/depot/¶
Všechny certifikáty vytvořené scep serverem, crl soubory, veřejný a privátní klíč certifikační autority, konfigurace openssl.
Upozornění
Pokud pro scep používáte vlastní certifikační autoritu, tak musí být veřejný klíč uložen do souboru scep/depot/ca.pem a privátní klíč do souboru scep/depot/ca.key. Heslo k privátnímu klíči musí být v souboru scep/secret/capas.
scep/secret/¶
Heslo k privátnímu klíči CA a challenge pro scep (soubor challenge je vytvořen automaticky podle konfigurace be pmc-be při běhu scriptu init.sh)
activemq/¶
Konfigurace Activemq.
activemq/conf/amq-client.ts, amq-server.ks¶
Certifikát a privátní klíč k activemq serveru - vytvořeno podle konfigurace activemq.
Upozornění
Certifikát musí být uložen do adresáře crt/, aby si ho kontejnery přidaly mezi důveryhodné.
crt/¶
Všechny certifikáty, které mají být důveryhodné pro docker kontejnery. Musejí mít příponu .crt.
ca/mq/¶
Testovací certifikát pro activemq.
Certifikát musí být umístěn také v adresáři ./crt a musí mít příponu .crt.
ca/http/¶
Obsahuje script pro vytvoření testovacího certifikátu pro http server.
tmp/¶
Dočasné soubory. Vymazat po dokončení instalačního procesu.
Příklad použití pro testovací prostředí¶
sudo apt install docker-compose docker.io openssl curl jq netcat apache2 git # (1)!
sudo usermod -aG docker $USER # (2)!
cd /opt
sudo git clone "https://gitlab.greencenter.site/software/scrumware/pmc-docker" # (3)!
sudo chown -R $USER:$USER /opt/pmc-docker # (4)!
cd /opt/pmc-docker
cd ca/http
./create_cert.sh # (5)!
cd ../..
cp ./ca/http/cert.pem ./crt/cert.crt # (6)!
cp ./ca/mq/amq-server_cert ./crt/mq.crt
docker login docker.greencenter.site # (7)!
docker-compose pull # (8)!
./prepare.sh # (9)!
sudo vim /etc/apache2/sites-available/pmc.local.conf # (10)!
sudo a2enmod headers proxy_http proxy_http2 ssl rewrite # (11)!
sudo a2ensite pmc.local # (12)!
sudo systemctl restart apache2 # (13)!
./init.sh # (14)!
- Instalace předpokládaných balíků.
- Přidání uživatele do skupiny docker, aby nebylo potřeba spouštet docker příkazy se sudo. Po tomto příkazu bude nutné se přihlásit a odhlásit.
- Naklonování repozitáře.
- Nastavení uživatele jako vlastníka.
- Vytvoření testovacího certifikátu.
- Nakopírování certifikátů do adresáře
crt. - Přihlášení do container registry.
- Stažení images.
- Spuštění scriptu prepare.sh.
- Konfigurace apache. Obsah souboru je v sekci Použití.
- Povolení site.
- Povolení modulů.
- Restart apache.
- Spuštění hlavního scriptu.
-
Klíč musí mít v hlavičce DEK-Info. Např.:
Pokud hlavička vypadá takto tak scep server nenastartuje a bude hlásit chybu "unmatched type or headers". ↩