SMS Gateway 用の SSL および TLS 暗号化の構成

SSL および TLS 暗号化を使用して、SMS Gateway、Voice Gateway、SMS プロバイダー、Watson Assistant 間の接続を保護できます。 暗号化接続では、トラステッド認証局 (CA) のセットを定義します。これらは、接続に関与するパーティーの ID を検査するために使用されます。 SMS Gateway のために SSL および TLS 暗号化を構成するには、鍵ストア・ファイルおよびトラストストア・ファイルを生成し、それらのファイルを Docker データ・ボリュームにマウントし、構成で参照する必要があります。

鍵ストアは、SMS プロバイダーからのインバウンド接続を保護します。 鍵ストア・ファイルを生成するには、SMS プロバイダーが受け入れる CA 証明書 (通常、.pem、.crt、.cer、または .cert ファイル) が必要です。 SMS プロバイダーでは通常、自己署名証明書がサポートされないため、SMS プロバイダーで信頼されている既知の認証局から証明書を購入する必要があります。 詳しくは、ご使用の SMS プロバイダーのセキュリティーに関する資料を参照してください。

トラストストアは、Watson Assistant および SMS プロバイダーへのアウトバウンド接続を保護します。 トラストストア・ファイルを生成するには、Watson Assistant および SMS プロバイダーからの CA 証明書が必要です。 OpenSSL などのツールを使用して、Watson Assistant の証明書を抽出できます。

別個の鍵ストア・ファイルとトラストストア・ファイルを作成することも、単一のファイル内にすべての証明書を追加することもできます。

重要: 高可用性環境で XSLD キャッシュ・サーバーに対して TLS を構成した場合、SMS プロバイダーおよび Watson Assistant サービスの証明書を同じ鍵ストア・ファイルおよびトラストストア・ファイルに追加します。

鍵ストアおよびトラストストアの作成

  1. コマンド・ラインで、SMS Gateway デプロイメント・ディレクトリーに移動します。
  2. SMS プロバイダーからの CA 証明書を含む鍵ストア・ファイルを生成します。

    1. Java™ keytool コマンドを使用して、署名者証明書をトラストストアに追加します。
      keytool -import -noprompt -trustcacerts -alias myAlias \
      -file mysigner.cert -keystore trust.jks -storepass
      
    2. トラストストア内の証明書をリストし、署名者証明書が追加されたことを確認します。
      keytool -list -v -keystore trust.jks
      
  3. Watson Assistant および SMS プロバイダーからの CA 証明書が含まれるトラストストア・ファイルを生成します。

    トラストストア証明書の場合、サーバーから署名者証明書を抽出する必要が生じる場合があります。

    1. 必要に応じて、サーバーから署名者証明書を抽出します。 証明書を抽出するには、OpenSSL などのツールを使用できます。
      openssl s_client -connect <host-address:port> \
      </dev/null|sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'>mysigner.cert
      
    2. Java™ keytool コマンドを使用して、署名者証明書をトラストストアに追加します。 次の例は、JKS トラストストア・ファイルを生成します。
      keytool -importcert \
      -file <CA certificate to trust> \
      -alias <alias for the certificate> \
      -keystore <name of the trustore> \
      -storepass <password for the truststore> \
      -storetype jks
      
  4. 以下のセクションの説明に従い、デプロイメント構成に鍵ストア・ファイルおよびトラストストア・ファイルを追加します。

Docker でのストア・ファイルの構成

  1. SMS Gateway 構成で、Docker ボリューム上にファイルをマウントします。 ボリュームについて詳しくは、Docker 資料を参照してください。

    以下の例では、$PWD は現行作業ディレクトリーに解決され、コンテナーの /sslConf/ パスにマウントされます。

    volumes:
     - $PWD:/sslConf/
    
  2. トラストストアと鍵ストアの両方について、ファイルの場所、ファイル・タイプ、および対応するパスフレーズを以下の環境変数に指定します。

    1 つのファイルに鍵ストアとトラストストアを生成した場合は、両方の環境変数セットで同じファイルを指定します。

     environment:
     ...
     - SSL_TRUST_STORE_FILE=/sslConf/myTrustJKSFile.jks
     - SSL_TRUST_FILE_TYPE=JKS
     - SSL_TRUST_PASSPHRASE=myPassphrase
    
     - SSL_KEY_STORE_FILE=/sslConf/myKeyJKSFile.jks
     - SSL_KEY_FILE_TYPE=JKS
     - SSL_KEY_PASSPHRASE=myPassphrase
    
  3. 変更を有効にするために SMS Gateway を再デプロイします。

IBM Cloud Private でのストア・ファイルの構成

  1. --from-file オプションを使用してストア・ファイルのパスを指定して、それらのファイルから Kubernetes 秘密を作成します。

    個別の鍵ストア・ファイルおよびトラストストア・ファイルを作成した場合、ファイルごとに固有の名前の秘密を生成します。

    例:

    kubectl create secret generic secret-certs --from-file=myStoreFile.jks
    kubectl create secret generic secret-trustcerts --from-file=myTrustJKSFile.jks
    
  2. deploy.yaml デプロイメント構成ファイルを開き、Kubernetes 秘密およびストア・ファイルを指定します。

    • volumes: で、-name: secret-certs セクションをアンコメントし、-key および path フィールドにストア・ファイルの名前を指定します。

      個別の鍵ストア・ファイルおよびトラストストア・ファイルがある場合、-name: secret-certs セクションをコピーし、既存のセクションに貼り付けます。 秘密名と追加ストア・ファイルのファイル・パスを指定します。

      例: 単一ファイルの場合:

      volumes:
       - name: secret-certs
         secret:
           secretName: secret-certs
           items:
            - key: myStoreFile.jks
              path: myStoreFile.jks
      
    • vgw-sms-gateway コンテナーで、以下の環境変数をアンコメントし、ストア・ファイルのパスフレーズ、名前、およびファイル・タイプを指定します。

      1 つのファイルに鍵ストアとトラストストアを生成した場合は、両方の環境変数セットで同じファイルを指定します。

      - name: SSL_KEY_PASSPHRASE
        value: changeit
      - name: SSL_KEY_STORE_FILE
        value: "/resources/security/myStoreFile.jks"
      - name: SSL_KEY_FILE_TYPE
        value: JKS
      - name: SSL_TRUST_PASSPHRASE
        value: changeit
      - name: SSL_TRUST_STORE_FILE
        value: "/resources/security/myStoreFile.jks"
      - name: SSL_TRUST_FILE_TYPE
        value: JKS
      
    • volumeMounts: で、-name: secret-certs セクションをアンコメントします。

      個別の鍵ストア・ファイルおよびトラストストア・ファイルがある場合、-name: secret-certs セクションをコピーし、既存のセクションに貼り付けます。 秘密名と追加ストア・ファイルのファイル・パスを指定します。

      例: 単一ファイルの場合:

      volumeMounts:
      - name: secret-certs
        mountPath: "/resources/security/"
      
  3. 変更を有効にするために SMS Gateway を再デプロイします。