Configurando criptografia SSL e TLS para SMS Gateway

É possível assegurar conexões entre o SMS Gateway, o Voice Gateway, o provedor SMS e o Watson Assistant usando a criptografia SSL e TLS. Para conexões criptografadas, defina um conjunto de autoridades de certificação confiáveis (CAs), usado para verificar as identidades das partes envolvidas na conexão. A configuração de criptografia SSL e TLS para o SMS Gateway requer que você gere arquivos keystore e de armazenamento confiável, que você monta em um volume de dados e de referência Docker na configuração.

O keystore assegura conexões de entrada do provedor SMS. Para gerar o arquivo keystore, você precisa de um certificado de CA que seu provedor SMS aceita, geralmente um arquivo .pem, .crt, .cer ou .cert. Como os provedores SMS geralmente não suportam certificados autoassinados, você deve adquirir um certificado de uma autoridade de certificação reconhecida, considerada confiável pelo provedor SMS. Para obter mais informações, consulte a documentação de segurança para seu provedor SMS.

O armazenamento confiável assegura as conexões de saída com o Watson Assistant e o provedor SMS. Para gerar o arquivo de armazenamento confiável, você precisa dos certificados de autoridade de certificação do Watson Assistant e de seu provedor SMS. É possível extrair o certificado para o Watson Assistant usando uma ferramenta como OpenSSL.

Você pode criar diferentes arquivos keystore e de armazenamento confiável ou incluir todos os certificados em um único arquivo.

Importante: se você configurou TLS para o servidor de armazenamento em cache XSLD em um ambiente altamente disponível, inclua os certificados para o provedor SMS e o serviço Watson Assistant nos mesmos arquivos keystore e de armazenamento confiável.

Criando o keystore e o armazenamento confiável

  1. Na linha de comandos, mude para o diretório de implementação SMS Gateway.
  2. Gere o arquivo keystore que contém o certificado de CA do provedor SMS.

    1. Inclua o certificado de assinante no armazenamento confiável usando o comando Java™ keytool.
      keytool -import -noprompt -trustcacerts -alias myAlias \
      -file mysigner.cert -keystore trust.jks -storepass
      
    2. Liste os certificados no armazenamento confiável para verificar se o certificado de assinante foi incluído.
      keytool -list -v -keystore trust.jks
      
  3. Gere um arquivo de armazenamento confiável que contenha os certificados de autoridade de certificação do Watson Assistant e do provedor SMS.

    Para certificados de armazenamento confiável, você pode precisar extrair o certificado de assinante do servidor.

    1. Se necessário, extraia o certificado de assinante do servidor. Para extrair o certificado, é possível usar uma ferramenta como OpenSSL.
      openssl s_client -connect <host-address:port> \
      </dev/null|sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'>mysigner.cert
      
    2. Inclua o certificado de assinante no armazenamento confiável usando o comando Java™ keytool. O exemplo a seguir gera um arquivo de armazenamento confiável 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. Inclua os arquivos keystore e de armazenamento confiável em sua configuração de implementação conforme descrito nas seções a seguir.

Configurando arquivos de armazenamento no Docker

  1. Em Configuração do SMS Gateway, monte os arquivos em um volume Docker. Para obter mais informações sobre volumes, consulte a Documentação do Docker.

    No exemplo a seguir, $PWD é resolvido para o diretório atualmente em funcionamento e o monta para o caminho /sslConf/ no contêiner.

    volumes:
     - $PWD:/sslConf/
    
  2. Para armazenamento confiável e keystore, especifique o local do arquivo, tipo de arquivo e seu passphrase correspondente nas seguintes variáveis de ambiente.

    Se você gerou o keystore e o armazenamento confiável em um único arquivo, especifique o mesmo arquivo em ambos os conjuntos de variáveis de ambiente.

     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. Implemente novamente o SMS Gateway para que suas mudanças entrem em vigor.

Configurando arquivos de armazenamento no IBM Cloud Private

  1. Crie um segredo do Kubernetes a partir dos arquivos de armazenamento usando a opção --from-file para especificar o caminho para o arquivo.

    Se você criou diferentes arquivos keystore e de armazenamento confiável, gere um segredo nomeado exclusivamente para cada arquivo.

    Por exemplo:

    kubectl create secret generic secret-certs --from-file=myStoreFile.jks
    kubectl create secret generic secret-trustcerts --from-file=myTrustJKSFile.jks
    
  2. Abra o arquivo de configuração de implementação deploy.yaml e especifique o segredo do Kubernetes e os arquivos de armazenamento.

    • Em volumes:, remova o comentário da seção -name: secret-certs e especifique o nome do arquivo de armazenamento nos campos -key e path.

      Se você separou arquivos de keystore e de armazenamento confiável, copie a seção -name: secret-certs e a cole na seção existente. Especifique o nome secreto e o caminho do arquivo de armazenamento adicional.

      Por exemplo, para um único arquivo: ```yaml volumes:

      • name: secret-certs secret: secretName: secret-certs items:
        • key: myStoreFile.jks path: myStoreFile.jks ```
    • No contêiner vgw-sms-gateway, remova o comentário das seguintes variáveis de ambiente e especifique o passphrase, o nome e o tipo de arquivo do arquivo de armazenamento.

      Se você gerou o keystore e o armazenamento confiável em um único arquivo, especifique o mesmo arquivo em ambos os conjuntos de variáveis de ambiente.

      - 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
      
    • Em volumeMounts:, remova o comentário da seção -name: secret-certs.

      Se você separou arquivos de keystore e de armazenamento confiável, copie a seção -name: secret-certs e a cole na seção existente. Especifique o nome secreto e o caminho do arquivo de armazenamento adicional.

      Por exemplo, para um único arquivo:

      volumeMounts:
      - name: secret-certs
        mountPath: "/resources/security/"
      
  3. Implemente novamente o SMS Gateway para que suas mudanças entrem em vigor.