Certificates
To expose access trough https
protocol, the different components use Java keystore.
This file helps to configure keystore/truststore for the different modules.
Keystore vs Truststore
In short keystore can be used to store a public/private key that can be used to :
- sign the
https
protocol - crypt/decrypt JWT or SAML token
The truststore contains CA (certificate authority) to trust https
requests.
Internal communication
As the different components exchange information between themselves, especially with keycloak, they have to trust the certificates of the others components. See the architecture diagram for details.
The different components that expose https
endpoint :
- HPA Portal
- Broadcom Webview
- Keycloak
- Broadcom EM Channel for agent communication
The components that need a truststore internally :
- HPA Portal to consume Keycloak API And optionally (not activated by default) :
- Broadcom Webview to consume Broadcom EM REST API
- HPA extractor to consume Broadcom EM REST API
Another fixed public/private key is used :
- Keycloak
hpa-hexagon
SAML and Webview Service Provider - Keycloak realm keys are stored in database. Keys can be exported through Keycloak GUI
- Broadcom Webview use the keystore : spprivatekey.jks with a default password :
password
Some internal communication are not secured by default, restrict to 127.0.0.1
local loop :
- Broadcom EM Channel (Broadcom binary proprietary protocol), clients :
- Webview
- APMSQL
- Broadcom EM REST API, clients :
- Webview
- APMSQL
- HPA extractor
- JDBC protocol
Security.config file
#!/bin/bash export HPA_BASE_HTTP=https export HPA_HOST_PORT_PUBLIC=$HPA_EXTERNAL_DNS:${HPA_NGINX_PORT} export HPA_URL_SERVER_PUBLIC=$HPA_BASE_HTTP://$HPA_HOST_PORT_PUBLIC${HPA_URL_CONTEXTPATH_WITH_LEADING_SLASH} export HPA_URL_SERVER_PRIVATE=$HPA_BASE_HTTP://$HPA_SERVER_LISTENIP:$HPA_SERVER_PORT export HPA_URL_EXTRACTOR=http://$HPA_EXTRACTOR_LISTENIP:$HPA_EXTRACTOR_PORT export HPA_URL_EM_WEB=http://$HPA_EM_WEB_HOST:$HPA_EM_WEB_PORT export HPA_URL_WEBVIEW_PUBLIC=$HPA_BASE_HTTP://$HPA_HOST_PORT_PUBLIC${HPA_URL_CONTEXTPATH_WITH_LEADING_SLASH}/introscope export HPA_URL_WEBVIEW_PRIVATE=$HPA_BASE_HTTP://$HPA_EM_WEBVIEW_LISTENIP:$HPA_EM_WEBVIEW_PORT export HPA_URL_KEYCLOAK_PUBLIC=$HPA_BASE_HTTP://$HPA_HOST_PORT_PUBLIC${HPA_URL_CONTEXTPATH_WITH_LEADING_SLASH}/keycloak export HPA_URL_KEYCLOAK_PRIVATE=$HPA_BASE_HTTP://$HPA_KEYCLOAK_LISTENIP:$HPA_KEYCLOAK_PORT # # NGINX # export HPA_NGINX_CERTIFICATE=$HPA_CERTIFICATES_DIR/nginx_fullchain.pem export HPA_NGINX_CERTIFICATE_KEY=$HPA_CERTIFICATES_DIR/nginx_privkey.pem export HPA_NGINX_CERTIFICATE_PASSWORD_FILE=$HPA_CERTIFICATES_DIR/nginx_privkey.pass # # HPA truststore # export HPA_TRUSTSTORE=$HPA_CERTIFICATES_DIR/hpa_truststore.jks export HPA_TRUSTSTORE_PWD=changeit export HPA_TRUSTSTORE_TYPE=JKS export HPA_TRUSTSTORE_OPTS="-Djavax.net.ssl.trustStore=$HPA_TRUSTSTORE -Djavax.net.ssl.trustStorePassword=$HPA_TRUSTSTORE_PWD -Djavax.net.ssl.trustStoreType=$HPA_TRUSTSTORE_TYPE" # # HPA keystore # export HPA_KEYSTORE=$HPA_CERTIFICATES_DIR/hpa_keystore.p12 export HPA_KEYSTORE_PWD=changeit export HPA_KEYSTORE_TYPE=PKCS12 # # Certificate are called, in pem format and named : # <alias>_certificate.pem # <alias>_private_key.pem # # KEYCLOAK # export HPA_KEYCLOAK_ALIAS=keycloak export HPA_REALM_KEYCLOAK=$HPA_CERTIFICATES_DIR/keycloak_realm_hpa.pem export HPA_REALM_KEYCLOAK_ALIAS=keycloack_hpa_realm # # SERVER # export HPA_SERVER_ALIAS=hpa_portal # # EXTRACTOR # export HPA_EXTRACTOR_ALIAS=hpa_extractor # # EM # export HPA_EM_WEB_ALIAS=introscope_em export HPA_CHANNEL_ALIAS=introscope_channel # # WEBVIEW # export HPA_WEBVIEW_ALIAS=introscope_webview # # Admin role # export HPA_ROLE_ADMIN="Admin"
If restricted firewall rules
Check against your firewall rules if default ports are authorized
HPA_EM_PORT
HPA_KEYCLOAK_PORT
HPA_EM_WEBVIEW_PORT
HPA_SERVER_PORT
These ports must be opened to external network : end-user or calypso environments, see the firewall rules.
If restriction on internal server port
The others values should not be modified except if some of these ports are already used on the target HPA server.