Strategy ONE

为 PostgreSQL 和 Platform Analytics Consumer 配置 SSL

可以将平台分析消费者和 PostgreSQL 数据库之间的通信配置为使用 SSL 进行加密和身份验证。有关详细信息,请参阅PostgreSQL 文档

PostgreSQL 服务器端配置

你必须OpenSSL安装了 1.1.0 或更高版本。

  1. 运行 OpenSSL 以管理员身份申请生成私钥。生成私钥时必须提供密码:

    openssl 并不包含在每一行的开头,因为命令是使用 OpenSSL 应用程序执行的。如果证书和密钥是在 Unix 系统上生成的,则可能需要包括 openssl 在每一行之前。

    复制
    genrsa -des3 -out server.key 1024
    rsa -in server.key -out server.key
  2. 创建服务器证书:

    可能需要重新启动 OpenSSL 应用程序才能成功创建服务器证书。

    -subj 是避免提示信息的快捷方式。

    -x509 生成自签名证书而不是证书请求。

    复制
    req -new -key server.key -days 3650 -out server.crt -x509 -subj "/CN=IP or HOSTNAME"
  3. 打开命令提示符或文件资源管理器并导航到服务器证书所在的位置。

  4. 复制新创建的服务器证书以创建证书颁发机构:

    复制
    copy server.crt root.crt
  5. 将以下内容添加到 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
  6. pg_hba.conf 文件,添加或修改以下内容:

    您可能需要注释掉主机条目。

    hostssl 为 DB_USERNAME 强制实施 SSL。

    clientcert=1 强制客户端身份验证(双向身份验证)。

    复制
    hostssl   platform_analytics_wh   DB_USERNAME   
    CLIENT_IP/32   cert clientcert=1
  7. 保存对两个文件所做的更改。

  8. 打开开始 > 服务并重新启动 PostgreSQL 或 MicroStrategy Repository。

客户端设置

  1. 创建私钥和证书:

    复制
    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 
  2. 使用以下命令将私钥转换为 DER 格式:

    Platform Analytics 使用的 JDBC PostgreSQL 驱动程序要求密钥文件采用 DER 格式,而不是 PEM 格式。

    复制
    pkcs8 -topk8 -inform PEM -in postgresql.key -outform 
    DER -nocrypt -out postgresql.key.der
  3. 根据用于 PostgreSQL 的 ODBC 驱动程序,可能需要密钥存储。要创建密钥存储区:

    复制
    pkcs12 -export -in postgresql.crt -inkey 
    postgresql.key -out postgresql.p12
  4. 将创建的文件复制到客户端计算机并更新 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 服务器端配置

  1. 使用 OpenSSL 生成私钥。生成私钥时必须提供密码:

    复制
    openssl genrsa -des3 -out server.key 1024
  2. 删除密码:

    复制
    openssl rsa -in server.key -out server.key
  3. 授予对密钥文件的访问权限。

    权限 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
  4. 创建服务器证书和证书颁发机构:

    -subj 是避免提示信息的快捷方式。

    -x509 生成自签名证书而不是证书请求。

    复制
    openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj "/CN=IP OR HOSTNAME"
    cp server.crt root.crt
  5. 对所有创建的证书执行以下操作:

    复制
    chown PSQL_OWNER:PSQL_OWNER server.crt
    chmod 0600 server.crt

    chown PSQL_OWNER:PSQL_OWNER root.crt
    chmod 0600 root.crt
  6. 将以下内容添加到 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
  7. pg_hba.conf 文件,添加或修改以下内容:

    您可能需要注释掉主机条目。

    hostssl 为 DB_USERNAME 强制实施 SSL。

    clientcert=1 强制客户端身份验证(双向身份验证)。

    复制
    hostssl   platform_analytics_wh   DB_USERNAME   CLIENT_IP/32   cert clientcert=1
  8. 重新启动 PostgreSQL 或 MicroStrategy Repository。

    如果 PostgreSQL 安装在 MicroStrategy 之外,请使用以下命令:

    复制
    systemctl restart postgresql-11

    如果将 MicroStrategy Repository 用于 Platform Analytics,请使用以下命令:

    此命令不能作为 root

    复制
    cd /opt/MicroStrategy/PlatformAnalytics/bin 
    ./mstr_pg_ctl restart

客户端设置

  1. 创建私钥和证书:

    复制
    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
  2. 使用以下命令将私钥转换为 DER 格式:

    Platform Analytics 使用的 JDBC PostgreSQL 驱动程序要求密钥文件采用 DER 格式,而不是 PEM 格式。

    复制
    openss1 pkcs8 -topk8 -inform PEM -in postgresql.key -outform DER -nocrypt -out postgresql.key.der
  3. 根据用于 PostgreSQL 的 ODBC 驱动程序,可能需要密钥存储。要创建密钥存储区:

    复制
    openss1 pkcs12 -export -in postgresql.crt -inkey postgresql.key -out postgresql.p12
  4. 将创建的文件复制到客户端计算机并更新 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