Konfigurace activemq
Nastavení activemq¶
Info
V případě, že jste nainstalovali PMC podle příručky Základní instalace PMC, je již activemq nakonfigurováno. Potřebujete upravit pouze heslo pro uživatele pos_broker a případně nakonfigurovat vlastní certifikát.
- Popis plné konfigurace k dispozici na stránkách apache - https://activemq.apache.org/xml-configuration.
-
Pro potřeby PMC jsou změny soubory viz dále z důvodu založení uživatele pro přístup k actiteMQ
-
/opt/activemq/conf/activemq.xml- aktualizovat sekcibrokeraplugins/opt/activemq/conf/activemq.xml<broker xmlns="http://activemq.apache.org/schema/core" brokerName="pos" dataDirectory="${activemq.data}"> <plugins> <simpleAuthenticationPlugin anonymousAccessAllowed="false"> <users> <!-- (1)! --> <authenticationUser username="pos_broker" password="password" groups="admins" /> </users> </simpleAuthenticationPlugin> <authorizationPlugin> <map> <authorizationMap> <authorizationEntries> <authorizationEntry queue="mqsdk.>" read="admins" write="admins" admin="admins" /> <authorizationEntry queue="etldb.>" read="admins" write="admins" admin="admins" /> <authorizationEntry queue="pos.>" read="admins" write="admins" admin="admins" /> <authorizationEntry topic=">" write="admins" read="admins" admin="admins" /> <authorizationEntry queue="blob.file.>" read="admins" write="admins" admin="admins" /> <authorizationEntry topic=">" write="admins" read="admins" admin="admins" /> </authorizationEntries> </authorizationMap> </map> </authorizationPlugin> <timeStampingBrokerPlugin ttlCeiling="600000" zeroExpirationOverride="600000"/> </plugins>- Nastavit bezpečné heslo pro uživatele pos_broker
-
/opt/activemq/conf/groups.properties- doplnit uživatele pos_broker do admin skupiny/opt/activemq/conf/groups.properties## --------------------------------------------------------------------------- ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. ## --------------------------------------------------------------------------- admins=admin,pos_broker -
/opt/activemq/conf/users.properties- doplnit uživatele pos_broker do admin skupiny/opt/activemq/conf/users.properties## --------------------------------------------------------------------------- ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. ## --------------------------------------------------------------------------- admin=admin pos_broker=admin
-
Nastavení SSL¶
pro práci s certifikáty se používá utilita keytool, která je součástí java JDK.
Vytvoření certifikátu/keystore/truststore¶
# (1)!
keytool -genkey -alias amq-server -keyalg RSA -keysize 2048 -validity 3650 -keystore amq-server.ks
# (2)! Export serverového certifikátu z keystore
keytool -export -alias amq-server -keystore amq-server.ks -file amq-server_cert -rfc
# (3)!
keytool -import -alias amq-server -keystore amq-client.ts -file amq-server_cert
- Vytvoření keystore pro server
- Export serverového certifikátu z keystore
- Import serverového certifikátu do truststore pro klienty
Nastavení serveru¶
- do adresáře conf programu activemq přidáme soubory amq-server.ks a amq-client.ts.
- upravíme konfiguraci v souboru activemq.xml
změnit transportConnectors
pod transportConnectors přidat
<sslContext>
<sslContext
keyStore="file:${activemq.base}/conf/amq-server.ks"
keyStorePassword="WPOKIW520cQXzAWFF5VWA"
trustStore="file:${activemq.base}/conf/amq-client.ts"
trustStorePassword="WPOKIW520cQXzAWFF5VWA" />
</sslContext>
Heslo musí odpovídat tomu, které jste zadali při vytváření keystore/truststore.
Tip
Certifikát nahraný do ActiveMQ je možné otestovat příkazem openssl např.
kde místopmc.parklcoud.cz doplníte název serveru (případně ip) a port nastavíte podle prostředí.
Tento příkaz vypíše celý Certificate chain.
Nastavení klienta¶
Jsou dvě možnosti jak do klienta nahrát certifikát serveru.
-
Přidat certifikát do systémového truststore
Tím, že přídáme serverový certifikát do systémového truststore už nemusíme konfigurovat nic jiného. Defaultní heslo pro systémový truststore je "changeit". To platí pro windows i linux. -
Vytvořit truststore s certifikátem serveru activemq a ten nastavit při spouštění procesu java.
Tento způsob obnáší více kroků a má tu nevýhodu, že java bude důvěřovat pouze certifikátům v námi vytvořeném truststore. Pokud bychom toto nastavili například pro PMC, nebude fungovat spojení s Keycloakem atp. Vhodné může být ale třeba pro datové pumpy, které se nikam jinám, než k MQ serveru nepřipojují. Výhoda tohoto postupu je, že k němu nejsou potřeba práva admina. Javu spustíme následovně:
Info
V případě, že jsme do truststore nahráli certifikát pod nějakým aliasem a nyní chceme pod stejným aliasem přidat jiný certifikát, příkaz skončí chybou. Potřebujeme v takovém případě nejdříve původní certifikát vymazat. To můžeme udělat následujícím příkazem.
Vytvoření keystore a truststore pomocí SCEP serveru pro GREEN prostředí¶
mkdir ~/.keystore
cd ~/.keystore
# (1)!
/var/lib/pmc/scepclient-linux-amd64 -private-key client.key \
-challenge *** \
-cn "amq-server_green_test" \
-organization "GREENCenter" \
-ou "GREENCenter" \
-country "CZ" \
-server-url http://127.0.0.1:8099/scep
# (2)!
mv client.pem amq-server.pem
mv client.key amq-server.key
chmod 600 amq-server.key
# (3)!
openssl pkcs12 -export -in ./amq-server.pem -inkey ./amq-server.key -out amq-server.p12
# (4)!
keytool -v -importkeystore -srckeystore amq-server.p12 -srcstoretype PKCS12 \
-destkeystore amq-server.ks -deststoretype pkcs12
# (5)!
keytool -import -alias amq-server -keystore amq-client.ts -file amq-server.pem
- Vytvoření certifikátu pomocí scep
- Přejmenování souborů a nastavení oprávnění
- Vytvoření PKCS12 bundle
- Vytvoření keystore s tímto jedním certifikátem
- Vytvoření truststore pro klienty
Pozor!
Truststore vygenerovaný v OpenJDK 11 není kompatibilní s tím co potřebuje java 8. Pokud klientská aplikace (například datová pumpa) poběží na javě 8, je třeba, aby používala truststore vygenerovaný na javě 8.
Tip
Pokud chceme, aby keystore obsahoval také certifikát certifikační autority, je nutné příkaz trochu upravit.
Nejdříve musíme spojit všechny certifikáty (certifikát activemq a všechny certifikační autority, nad ním)
cat ./ca/chain.pem ./amq-server.cert.pem > fullchain.pem
Vytvoření certifikátu p12 - CAfile ukazuje na soubor s certifikačními autoritami:openssl pkcs12 -export -in ./fullchain.pem -inkey amq-server.key.pem -out amq-server.p12 -name pmc.parkcloud.cz -CAfile ./ca/chain.pem -caname "GREEN Center s.r.o. Root Certification Authority"keytool -v -importkeystore -srckeystore amq-server.p12 -srcstoretype PKCS12 -destkeystore amq-server.ks -deststoretype pkcs12 -trustcacerts
Následně je třeba postupovat podle kroků nastavení serveru a nastavení klienta
zdroje:
https://activemq.apache.org/how-do-i-use-ssl
http://www.giuseppeurso.eu/en/activemq-and-the-ssl-transport/