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 サービスの証明書を同じ鍵ストア・ファイルおよびトラストストア・ファイルに追加します。
鍵ストアおよびトラストストアの作成
- コマンド・ラインで、SMS Gateway デプロイメント・ディレクトリーに移動します。
-
SMS プロバイダーからの CA 証明書を含む鍵ストア・ファイルを生成します。
- Java™
keytoolコマンドを使用して、署名者証明書をトラストストアに追加します。keytool -import -noprompt -trustcacerts -alias myAlias \ -file mysigner.cert -keystore trust.jks -storepass - トラストストア内の証明書をリストし、署名者証明書が追加されたことを確認します。
keytool -list -v -keystore trust.jks
- Java™
-
Watson Assistant および SMS プロバイダーからの CA 証明書が含まれるトラストストア・ファイルを生成します。
トラストストア証明書の場合、サーバーから署名者証明書を抽出する必要が生じる場合があります。
- 必要に応じて、サーバーから署名者証明書を抽出します。 証明書を抽出するには、OpenSSL などのツールを使用できます。
openssl s_client -connect <host-address:port> \ </dev/null|sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'>mysigner.cert - 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
- 必要に応じて、サーバーから署名者証明書を抽出します。 証明書を抽出するには、OpenSSL などのツールを使用できます。
- 以下のセクションの説明に従い、デプロイメント構成に鍵ストア・ファイルおよびトラストストア・ファイルを追加します。
Docker でのストア・ファイルの構成
-
SMS Gateway 構成で、Docker ボリューム上にファイルをマウントします。 ボリュームについて詳しくは、Docker 資料を参照してください。
以下の例では、
$PWDは現行作業ディレクトリーに解決され、コンテナーの/sslConf/パスにマウントされます。volumes: - $PWD:/sslConf/ -
トラストストアと鍵ストアの両方について、ファイルの場所、ファイル・タイプ、および対応するパスフレーズを以下の環境変数に指定します。
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 - 変更を有効にするために SMS Gateway を再デプロイします。
IBM Cloud Private でのストア・ファイルの構成
-
--from-fileオプションを使用してストア・ファイルのパスを指定して、それらのファイルから Kubernetes 秘密を作成します。個別の鍵ストア・ファイルおよびトラストストア・ファイルを作成した場合、ファイルごとに固有の名前の秘密を生成します。
例:
kubectl create secret generic secret-certs --from-file=myStoreFile.jks kubectl create secret generic secret-trustcerts --from-file=myTrustJKSFile.jks -
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/"
-
- 変更を有効にするために SMS Gateway を再デプロイします。