Strategy ONE
为 PostgreSQL 和 Platform Analytics Consumer 配置 SSL
可以将平台分析消费者和 PostgreSQL 数据库之间的通信配置为使用 SSL 进行加密和身份验证。有关详细信息,请参阅PostgreSQL 文档。
- Windows
- Linux
PostgreSQL 服务器端配置
你必须OpenSSL安装了 1.1.0 或更高版本。
-
运行
OpenSSL 以管理员身份申请生成私钥。生成私钥时必须提供密码:openssl 并不包含在每一行的开头,因为命令是使用 OpenSSL 应用程序执行的。如果证书和密钥是在 Unix 系统上生成的,则可能需要包括 openssl 在每一行之前。
复制genrsa -des3 -out server.key 1024
rsa -in server.key -out server.key -
创建服务器证书:
可能需要重新启动 OpenSSL 应用程序才能成功创建服务器证书。
-subj 是避免提示信息的快捷方式。
-x509 生成自签名证书而不是证书请求。
复制req -new -key server.key -days 3650 -out server.crt -x509 -subj "/CN=IP or HOSTNAME"
-
打开命令提示符或文件资源管理器并导航到服务器证书所在的位置。
-
复制新创建的服务器证书以创建证书颁发机构:
复制copy server.crt root.crt
-
将以下内容添加到 postgres.conf 文件:
复制listen_addresses = '*' # what IP address(es) to listen on;
取消注释并更改以下内容:
复制ssl = on
ssl_ca_file = '\\LOCATION_OF_FILE\\root.crt'
ssl_cert_file = '\\LOCATION_OF_FILE\\server.crt'
ssl_key_file = '\\LOCATION_OF_FILE\\server.key'
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
ssl_prefer_server_ciphers = on -
在 pg_hba.conf 文件,添加或修改以下内容:
您可能需要注释掉主机条目。
hostssl 为 DB_USERNAME 强制实施 SSL。
clientcert=1 强制客户端身份验证(双向身份验证)。
复制hostssl platform_analytics_wh DB_USERNAME
CLIENT_IP/32 cert clientcert=1 -
保存对两个文件所做的更改。
- 打开开始 > 服务并重新启动 PostgreSQL 或 MicroStrategy Repository。
客户端设置
-
创建私钥和证书:
复制genrsa -des3 -out postgresql.key 1024
rsa -in postgresql.key -out postgresql.key
req -new -key postgresql.key -out postgresql.csr -subj "/CN=DB_USERNAME"
x509 -req -in postgresql.csr -CA root.crt -CAkey server.key -out postgresql.crt -CAcreateserial如果收到错误,可能需要注释掉 tsa_policy1 在 openssl.cnf 文件。保存并以管理员身份重新启动 openssl。
复制# Policies used by the TSA examples.
#tsa_policy1 = 1.2.3.4.1
tsa_policy2 = 1.2.3.4.5.6
tsa_policy3 = 1.2.3.4.5.7 -
使用以下命令将私钥转换为 DER 格式:
Platform Analytics 使用的 JDBC PostgreSQL 驱动程序要求密钥文件采用 DER 格式,而不是 PEM 格式。
复制pkcs8 -topk8 -inform PEM -in postgresql.key -outform
DER -nocrypt -out postgresql.key.der -
根据用于 PostgreSQL 的 ODBC 驱动程序,可能需要密钥存储。要创建密钥存储区:
复制pkcs12 -export -in postgresql.crt -inkey
postgresql.key -out postgresql.p12 -
将创建的文件复制到客户端计算机并更新 PAConsumerConfig.yaml 包含以下证书和密钥路径的文件。
客户端密钥采用 DER 格式 格式。
复制pgWarehouseDbConnection:
pgWhHost: YOUR_HOST
pgWhUser: DB_USERNAME
pgWhPasswd: YOUR_PASSWORD
pgWhPort: 5432
pgWhDb: platform_analytics_wh
pgWhSSLcert: \LOCATION_OF_FILE\postgresql.crt
pgWhSSLkey: \LOCATION_OF_FILE\postgresql.key.der
pgWhSSLrootcert: \LOCATION_OF_FILE\root.crt
pgWhSSLmode: verify-ca
PostgreSQL 服务器端配置
-
使用 OpenSSL 生成私钥。生成私钥时必须提供密码:
复制openssl genrsa -des3 -out server.key 1024
-
删除密码:
复制openssl rsa -in server.key -out server.key
-
授予对密钥文件的访问权限。
权限 server.key 必须禁用对世界或团体的任何访问。通过设置 chmod 允许 0600。或者,该文件可以由 root 并具有组读取权限,即 chmod 0640 权限。此安装程序适用于由操作系统管理证书和密钥文件的安装。然后,应该使运行 PostgreSQL 服务器的用户成为有权访问这些证书和密钥文件的组的成员。
将文件权限和所有者更改为运行 PostgreSQL 的系统用户:
复制chown PSQL_OWNER:PSQL_OWNER server.key
chmod 0600 server.key如果拥有 root:
复制chown root:root server.key
chmod 06040 server.key -
创建服务器证书和证书颁发机构:
-subj 是避免提示信息的快捷方式。
-x509 生成自签名证书而不是证书请求。
复制openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj "/CN=IP OR HOSTNAME"
cp server.crt root.crt -
对所有创建的证书执行以下操作:
复制chown PSQL_OWNER:PSQL_OWNER server.crt
chmod 0600 server.crt
chown PSQL_OWNER:PSQL_OWNER root.crt
chmod 0600 root.crt -
将以下内容添加到 postgres.conf 文件:
复制listen_addresses = '*' # what IP address(es) to listen on;
取消注释并更改以下内容:
复制ssl = on
ssl_ca_file = '/LOCATION_OF_FILE/root.crt'
ssl_cert_file = '/LOCATION_OF_FILE/server.crt'
ssl_key_file = '/LOCATION_OF_FILE/server.key'
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
ssl_prefer_server_ciphers = on -
在 pg_hba.conf 文件,添加或修改以下内容:
您可能需要注释掉主机条目。
hostssl 为 DB_USERNAME 强制实施 SSL。
clientcert=1 强制客户端身份验证(双向身份验证)。
复制hostssl platform_analytics_wh DB_USERNAME CLIENT_IP/32 cert clientcert=1
-
重新启动 PostgreSQL 或 MicroStrategy Repository。
如果 PostgreSQL 安装在 MicroStrategy 之外,请使用以下命令:
复制systemctl restart postgresql-11
如果将 MicroStrategy Repository 用于 Platform Analytics,请使用以下命令:
此命令不能作为 root。
复制cd /opt/MicroStrategy/PlatformAnalytics/bin
./mstr_pg_ctl restart
客户端设置
-
创建私钥和证书:
复制openssl genrsa -des3 -out postgresql.key 1024
openssl rsa -in postgresql.key -out postgresql.key
openssl req -new -key postgresql.key -out postgresql.csr -subj "/CN=DB_USERNAME"
openssl x509 -req -in postgresql.csr -CA root.crt -CAkey server.key -out postgresql.crt -CAcreateserial -
使用以下命令将私钥转换为 DER 格式:
Platform Analytics 使用的 JDBC PostgreSQL 驱动程序要求密钥文件采用 DER 格式,而不是 PEM 格式。
复制openss1 pkcs8 -topk8 -inform PEM -in postgresql.key -outform DER -nocrypt -out postgresql.key.der
-
根据用于 PostgreSQL 的 ODBC 驱动程序,可能需要密钥存储。要创建密钥存储区:
复制openss1 pkcs12 -export -in postgresql.crt -inkey postgresql.key -out postgresql.p12
-
将创建的文件复制到客户端计算机并更新 PAConsumerConfig.yaml 包含以下证书和密钥路径的文件。
客户端密钥采用 DER 格式 格式。
复制pgWarehouseDbConnection:
pgWhHost: YOUR_HOST
pgWhUser: DB_USERNAME
pgWhPasswd: YOUR_PASSWORD
pgWhPort: 5432
pgWhDb: platform_analytics_wh
pgWhSSLcert: /LOCATION_OF_FILE/postgresql.crt
pgWhSSLkey: /LOCATION_OF_FILE/postgresql.key.der
pgWhSSLrootcert: /LOCATION_OF_FILE/root.crt
pgWhSSLmode: verify-ca