MicroStrategy ONE

为 PostgreSQL 和存储服务配置 SSL

可以将 Microstrategy Storage 服务和 PostgreSQL 数据库之间的通信配置为使用 SSL 进行加密和身份验证。查看PostgreSQL 文档了解更多信息。

PostgreSQL 服务器端配置

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

如果您已为 Platform Analytics 或 Collaboration Service 配置了 PostgreSQL 服务器端,请跳至客户端设置通过使用生成的 server.keyroot.crt

  1. 以管理员身份运行 OpenSSL 应用程序以生成私钥。生成私钥时必须提供密码。

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

    复制
    genrsa -out server.key 1024
  2. 创建服务器证书。

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

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

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

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

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

    复制
    copy server.crt root.crt
  5. 将下面显示的行添加到 postgres.conf

    复制
    listen_addresses = '*' # what IP address(es) to listen on;
  6. 取消注释并修改以下代码。

    复制
    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   mstr_library   DB_USERNAME   CLIENT_IP/32   cert clientcert=1
  8. 保存两个文件中的更改。

  9. 选择开始 > 服务并重新启动 PostgreSQL 或 MicroStrategy Repository。

客户端设置

完成PostgreSQL服务器端配置后,可以开始客户端配置和设置。这将为存储服务生成证书和密钥。

您必须为 mstr_library 用户和 mstr_library_application 用户。

  1. 创建私钥和证书 mstr_library 用户:

    复制
    genrsa -out mstr_library.key 1024
    req -new -key mstr_library.key -out mstr_library.csr -subj "/CN=mstr_library"
    x509 -req -in mstr_library.csr -CA root.crt -CAkey server.key -out mstr_library.crt -CAcreateserial

    如果收到错误,可能需要注释掉 tsa_policy1openssl.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 格式。

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

    复制
    pkcs8 -topk8 -inform PEM -outform DER -in mstr_library.key -out mstr_library.pk8 -nocrypt
  3. 与步骤 1 和 2 类似,创建私钥和证书 mstr_library_application 用户:

    复制
    genrsa -out mstr_library_application.key 1024
    req -new -key mstr_library_application.key -out mstr_library_application.csr -subj "/CN=mstr_library_application"
    x509 -req -in mstr_library_application.csr -CA root.crt -CAkey server.key -out mstr_library_application.crt -CAcreateserial
    pkcs8 -topk8 -inform PEM -outform DER -in mstr_library_application.key -out mstr_library_application.pk8 -nocrypt
  4. 复制在库服务器上创建的文件并更新 configOverride.properties 使用证书和密钥的绝对路径。

    选择 configOverride.properties 文件可以在以下位置找到:

    Windows: <DEPLOY_LOCATION>\webapps\MicroStrategyLibrary\WEB-INF\classes\config\ConfigOverride.properties

    Linux: <DEPLOY_LOCATION>/webapps/MicroStrategyLibrary/WEB-INF/classes/config/configOverride.properties

    复制
    #postgresql database connection config
    datasource.url=jdbc:postgresql://YOUR_HOST:5432/mstr_library
    datasource.tlsEnabled=true
    datasource.sslMode=require
    datasource.sslRootCert=/LOCATION_OF_FILE/root.crt
    #for Windows: datasource.sslRootCert=Z:\LOCATION_OF_FILE\root.crt

    datasource.username=mstr_library_application
    datasource.password=<any string>
    datasource.sslCert=/LOCATION_OF_FILE/mstr_library_application.crt
    datasource.sslKey=/LOCATION_OF_FILE/mstr_library_application.pk8

    datasource.admin.username=mstr_library
    datasource.admin.password=<any string>
    datasource.admin.sslCert=/LOCATION_OF_FILE/mstr_library.crt
    datasource.admin.sslKey=/LOCATION_OF_FILE/mstr_library.pk8