Como configurar hosts virtuais para a nuvem

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Um cliente do Cloud com uma conta paga pode criar um host virtual em uma organização.

Quem pode criar e modificar hosts virtuais na nuvem

A criação e a modificação de hosts virtuais estão disponíveis apenas para contas pagas no Edge Cloud. O usuário que cria o host virtual precisa ter a função de administrador da organização ou uma função personalizada com permissões para modificar um host virtual. Usuários em outras funções não têm autorização para criar hosts virtuais.

Por exemplo, os clientes pagos podem:

  • Ativar o TLS unidirecional e bidirecional
  • Especificar o keystore/truststore usado pelo host virtual

As contas sem custo financeiro e de teste não podem criar nem modificar hosts virtuais e estão limitadas aos hosts virtuais criados para elas no momento do registro do Edge. Para mais informações sobre os planos de preços do Edge, consulte https://apigee.com/api-management/#/pricing.

Requisitos para configurar um host virtual para a nuvem

A tabela a seguir resume os requisitos para criar um host virtual:

Categorias Requisito Descrição
Tipo de conta Pago As contas sem custo financeiro e de teste não podem criar nem modificar hosts virtuais.
Função do usuário administrador da organização Somente um admin. da organização pode criar um host virtual ou um usuário em uma função personalizada com permissões para modificar um host virtual.
Número de hosts virtuais Máximo de 20

Você está limitado a um máximo de 20 hosts virtuais por organização/ambiente na nuvem.

Observação: não há limite para o número de hosts virtuais na nuvem privada.

A maioria das organizações/ambientes usa dois hosts virtuais: um para acesso HTTP e outro para HTTPS. Talvez você precise de mais hosts virtuais se sua organização/ambiente permitir o acesso usando nomes de domínio diferentes.

URL de base Inclui o protocolo Ao definir a URL de base para o host virtual, na interface ou com a API, especifique o protocolo (por exemplo, "http://" ou "https://") como parte da URL.
Porta 443

Só é possível criar um host virtual na porta 443.

É possível criar vários hosts virtuais na porta 443, desde que eles tenham aliases de host exclusivos e todos ofereçam suporte a TLS.

TLS Obrigatório

Só é possível criar um host virtual compatível com TLS por HTTPS. Você precisa já ter criado um keystore e, opcionalmente, um truststore com seu certificado e chave TLS.

Você precisa ter um certificado assinado por uma entidade confiável, como Symantec ou VeriSign. Não é possível usar um certificado autoassinado.

Se você precisar de acesso HTTP, entre em contato com o suporte do Apigee Edge.

Protocolo TLS TLS 1.2

O Edge no Cloud é compatível apenas com a versão 1.2 do TLS.

Alias do host Exclusivo na organização e no ambiente O alias de host não existe para outra combinação de organização/ambiente.
Nome de domínio De propriedade do cliente

Você precisa ser o proprietário do nome de domínio especificado no host virtual. O Edge verifica se o nome de domínio, conforme definido pelo alias do host, corresponde aos metadados no certificado TLS.

Especificamente, o Edge verifica as seguintes informações no certificado:

  • CN: nome comum
  • SAN: nome alternativo do assunto

Caracteres curinga são permitidos no SAN ou CN, por exemplo, *.myco.net.

O Edge também valida se o certificado não expirou.

Suporte a SNI do app cliente Todos os apps cliente que acessam o host virtual precisam ser compatíveis com SNI.

O suporte a SNI é obrigatório para todos os apps.

Criar um host virtual usando um navegador

A maioria dos exemplos nesta seção usa a API Edge para criar ou modificar hosts virtuais, mas é possível criar um host virtual na interface do Edge.

Para criar um host virtual usando a interface do Edge:

  1. Faça login em apigee.com/edge.
  2. Selecione Administrador > Hosts virtuais.
  3. Selecione o ambiente, como prod ou test.
  4. Selecione + Host virtual para criar um host virtual ou selecione o nome de um host virtual existente para editar.
  5. Consulte a tabela acima para informações detalhadas sobre como preencher os campos do host virtual.

Definir um host virtual para o TLS unidirecional

Um objeto XML que define o host virtual. Por exemplo, o objeto XML a seguir define um host virtual para TLS unidirecional:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

Nesta definição, você:

  • Especifique o nome como myTLSVHost. Use o nome para fazer referência ao host virtual em um proxy de API ou em uma chamada de API.
  • Especifique o alias de host como api.myCompany.com. Esse é o domínio público usado para acessar suas APIs, conforme definido por uma definição de DNS e um registro CNAME.
  • Especifique o número da porta como 443. Se omitido, por padrão a porta será definida como 443.
  • Ative o TLS conforme necessário.

    O elemento <Enable> é definido como "true" para ativar o TLS unidirecional, e os elementos <KeyStore> especificam o keystore e o alias da chave usados pela conexão TLS.

    Para ativar o TLS bidirecional, defina <ClientAuthEnabled> como "true" e especifique um truststore usando o elemento <TrustStore>. O truststore contém o emissor do certificado do cliente e a cadeia de CA do certificado, que é obrigatória.

    Observação:como o Edge originalmente oferecia suporte a SSL, a tag usada para configurar o TLS é chamada de <SSLInfo>.

Há outras propriedades que podem ser definidas no host virtual. Para uma referência de todas as propriedades, consulte Referência de propriedades do host virtual.

Decidir como especificar o nome do keystore e do truststore no host virtual

Ao configurar um host virtual para aceitar TLS, você especifica um keystore usando uma referência. Uma referência é uma variável que contém o nome do keystore ou truststore, em vez de especificar o nome do keystore ou truststore diretamente, conforme mostrado abaixo:

    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>

A vantagem de usar uma referência é poder mudar o valor dela para alterar o keystore usado pelo host virtual, geralmente porque o certificado no keystore atual expira em breve. Não é necessário reiniciar o roteador de borda para mudar o valor da referência. Consulte Como trabalhar com referências para mais informações sobre como criar e modificar referências.

Só é possível usar uma referência ao keystore e truststore. Não é possível usar uma referência ao alias. Ao alterar a referência para um keystore, verifique se o nome do alias do certificado é o mesmo do keystore antigo.

Restrições ao usar referências a keystores e truststore

Você precisa considerar a seguinte restrição ao usar referências a keystores e truststores:

  • Só é possível usar as referências a keystore e truststore em hosts virtuais se você oferecer suporte ao SNI e encerrar o SSL nos roteadores da Apigee.
  • Se você tiver um balanceador de carga na frente dos roteadores da Apigee e encerrar o TLS no balanceador, não será possível usar as referências do keystore e truststore em hosts virtuais.

Definir um host virtual para TLS bidirecional

Para ativar o TLS bidirecional, defina o elemento <ClientAuthEnabled> como true e especifique um truststore usando uma referência com o elemento <TrustStore>. O truststore contém o emissor do certificado do cliente e a cadeia de CA do certificado, que é obrigatória. O cliente também precisa estar configurado corretamente para TLS bidirecional.

Para criar um host virtual para TLS bidirecional, crie um objeto XML que defina o host virtual:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
        <TrustStore>ref://myTestTruststoreRef</TrustStore>
    </SSLInfo>
</VirtualHost>

Nesta definição, você:

  • Ative o TLS bidirecional definindo <ClientAuthEnabled> como "true".
  • Especifique a referência ao truststore usando o elemento <TrustStore>. O truststore contém o emissor do certificado do cliente e a cadeia de CA do certificado, que é obrigatória.

Definir um host virtual que usa o certificado e a chave de avaliação sem custo financeiro da Apigee

Se você tiver uma conta paga do Edge para Cloud e ainda não tiver um certificado e uma chave TLS, crie um host virtual que use o certificado e a chave de avaliação sem custo financeiro da Apigee. Isso significa que você pode criar o host virtual sem primeiro criar um keystore.

O certificado de teste sem custo financeiro da Apigee é definido para um domínio de *.apigee.net. Portanto, o <HostAlias> do host virtual também precisa estar no formato *.apigee.net.

Se você estiver executando o TLS bidirecional, ainda precisará definir o elemento <ClientAuthEnabled> como true e especificar um truststore usando uma referência com o elemento <TrustStore> conforme descrito acima em Definir um host virtual para TLS bidirecional.

Um objeto XML que define o host virtual usando o certificado e a chave do teste sem custos financeiros da Apigee <KeyStore> e <KeyAlias> elementos e os substitui por <UseBuiltInFreeTrialCert>, conforme mostrado abaixo:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>myapi.apigee.net</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
    </SSLInfo>
    <UseBuiltInFreeTrialCert>true</UseBuiltInFreeTrialCert>
</VirtualHost>

O valor padrão do elemento <UseBuiltInFreeTrialCert> é "false".

Para o TLS bidirecional, defina o host virtual como:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>myapi.apigee.net</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <TrustStore>ref://myTestTruststoreRef</TrustStore>
    </SSLInfo>
    <UseBuiltInFreeTrialCert>true</UseBuiltInFreeTrialCert>
</VirtualHost>

Na interface do Edge, selecione a opção Usar certificado de teste sem custo financeiro integrado ao criar o host virtual para usar o certificado e a chave sem custo financeiro da Apigee:

Selecione &quot;Usar certificado de teste sem custo financeiro integrado&quot;

Como criar um host virtual

Use o procedimento a seguir para criar o host virtual:

  1. Crie uma entrada DNS e um registro CNAME para seu domínio público, api.myCompany.com neste exemplo, que aponta para [org]-[environment].apigee.net.
  2. Crie e configure um keystore, chamado myTestKeystore neste exemplo, usando o procedimento descrito aqui: Criar keystores e truststores usando a interface do Edge. Para este exemplo, verifique se o keystore usa o nome de alias myKeyAlias para o certificado e a chave privada.
  3. Faça upload do certificado e da chave para o keystore. Verifique se o nome de domínio especificado pelo certificado corresponde ao alias de host que você quer usar para o host virtual.
  4. Crie uma referência ao keystore usando a API ou a interface do Edge. A referência especifica o nome do keystore e o tipo de referência como KeyStore. Consulte Como trabalhar com referências para saber mais sobre como criar e modificar referências.

  5. Crie o host virtual usando a API Criar um host virtual. Especifique a referência do keystore e o alias da chave corretos. Para usar a API, faça a seguinte chamada de API POST para criar o keystore chamado myTLSVHost:
    curl -X POST -H "Content-Type:application/xml" \
      https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/virtualhosts \
      -d '<VirtualHost name="myTLSVHost">
        <HostAliases>
          <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Port>443</Port>
        <SSLInfo>
          <Enabled>true</Enabled>
          <ClientAuthEnabled>false</ClientAuthEnabled>
          <KeyStore>ref://myTestKeystoreRef</KeyStore>
          <KeyAlias>myKeyAlias</KeyAlias>
        </SSLInfo>
      </VirtualHost>' \
      -u orgAdminEmail:password

    Se você estiver executando o TLS bidirecional com o cliente, defina <ClientAuthEnabled> como "true" e especifique o truststore usando o elemento <TrustStore>. O cliente precisa estar configurado corretamente para o TLS bidirecional. Isso significa que o Edge tem um truststore que contém o emissor do certificado e a cadeia de certificados do cliente. Crie o truststore usando o procedimento descrito aqui: Como criar keystores e truststore usando a interface do Edge.

  6. Se você tiver proxies de API, adicione o host virtual ao elemento <HTTPConnection> no ProxyEndpoint. O host virtual é adicionado automaticamente a todos os novos proxies de API. Consulte Configurar um proxy de API para usar um host virtual.

Depois de atualizar um proxy de API para usar o host virtual e criar a entrada DNS e o registro CNAME para o alias do host, você pode acessar o proxy de API conforme mostrado abaixo:

https://api.myCompany.com/v1/{project-base-path}/{resource-path}

Exemplo:

https://api.myCompany.com/v1/weather/forecastrss?w=12797282

Como modificar um host virtual

Há duas tarefas principais que os clientes pagos do Cloud realizam para modificar um host virtual:

  1. Modificar o valor de uma referência a um keystore ou truststore.

    Observação: depois de definir um <KeyStore> ou <TrustStore> para usar uma referência, é possível mudar o valor dela a qualquer momento. No entanto, se você quiser mudar <KeyStore> ou <TrustStore> para usar uma referência diferente ou mudar <KeyAlias> para usar um alias diferente, entre em contato com o suporte do Apigee Edge.
  2. Modificar as propriedades TLS do host virtual.

Como modificar o valor de uma referência

É possível modificar o valor de uma referência para mudar o keystore ou o truststore usado por um host virtual.

Antes de modificar o valor da referência:

  1. Crie um keystore e faça upload de um certificado e uma chave, conforme descrito em Como criar keystores e truststores usando a interface do Edge. No novo keystore, use o mesmo nome para o alias da chave usado no keystore atual.
  2. Se necessário, crie um novo truststore e faça upload de um certificado conforme descrito em Como criar keystores e truststores usando a interface do Edge.
  3. Modifique a referência conforme descrito em Como trabalhar com referências.

Modificar as propriedades TLS do host virtual

Os clientes pagos podem usar a API Atualizar um host virtual para atualizar um host virtual. Com essa API, é possível definir todas as propriedades do host virtual descritas em Referência de propriedades do host virtual.

Quando você modifica o host virtual, o Edge realiza uma validação semelhante à criação de um host virtual. Ou seja, em uma modificação, o Edge valida se:

  • O domínio especificado pelo alias de host não é usado em outra organização e ambiente.
  • Você é proprietário do nome de domínio. Especificamente, o Edge verifica se as seguintes informações no certificado correspondem ao alias do host:
    • CN: nome comum
    • SAN: nome alternativo do assunto
    • O Edge valida se o certificado não expirou.

Para modificar um host virtual usando a API Edge, faça o seguinte:

  1. Atualize o host virtual usando a API Atualizar um host virtual. Ao usar a API, especifique a definição completa do host virtual no corpo da solicitação, não apenas os elementos que você quer mudar. Neste exemplo, você define o valor da propriedade proxy_read_timeout:

    curl -X PUT -H "Content-Type:application/xml" \
      https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/virtualhosts/{vhost_name} \
      -d '<VirtualHost name="myTLSVHost">
        <HostAliases>
          <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Port>443</Port>
        <SSLInfo>
          <Enabled>true</Enabled>
          <ClientAuthEnabled>false</ClientAuthEnabled>
          <KeyStore>ref://myTestKeystoreRef</KeyStore>
          <KeyAlias>myKeyAlias</KeyAlias>
        </SSLInfo>
        <Properties>
           <Property name="proxy_read_timeout">50</Property>
             </Properties>
      </VirtualHost>' \
      -u orgAdminEmail:password

Modificar um host virtual para usar referências ao keystore e ao truststore

Todos os novos hosts virtuais do Edge no Cloud usam referência ao keystore e ao truststore. Com as referências, é possível mudar o keystore e o truststore sem entrar em contato com o suporte do Apigee Edge.

Os hosts virtuais mais antigos do Apigee Edge não podem ser configurados para usar referências a keystores e truststores. Nesse caso, é possível atualizar o host virtual para usar uma referência.

Atualizar um host virtual para usar uma referência

Use o procedimento a seguir para atualizar o host virtual:

  1. Se necessário, crie um novo keystore e faça upload de um certificado conforme descrito em Como criar keystores e truststores usando a interface do Edge. Se você já tiver um keystore, poderá configurar uma referência para apontar para ele.
  2. Crie uma nova referência ao keystore.
  3. Se necessário, crie um novo truststore e faça upload de um certificado. Se você já tiver um keystore de confiança, configure uma referência para apontar para ele.
  4. Crie uma nova referência ao truststore.
  5. Atualize o host virtual para definir o keystore, o alias, o truststore e outras propriedades do TLS. O payload da chamada é:
    curl -X PUT -H "Content-Type:application/xml" \
      https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/virtualhosts/{vhost_name} \
      -d '<VirtualHost  name="myTLSVHost">
            <HostAliases>
              <HostAlias>api.myCompany.com</HostAlias>
            </HostAliases>
            <Port>443</Port>
            <OCSPStapling>off</OCSPStapling>
            <SSLInfo>
              <Enabled>true</Enabled>
              <ClientAuthEnabled>true</ClientAuthEnabled>
              <KeyStore>ref://myKeyStore2Way</KeyStore>
              <KeyAlias>keyAlias</KeyAlias>
              <TrustStore>ref://myTrustStore2Way</TrustStore>
              <IgnoreValidationErrors>false</IgnoreValidationErrors>
            </SSLInfo>
          </VirtualHost>' \
        -u orgAdminEmail:pWord
  6. Entre em contato com o suporte da Apigee para reiniciar os roteadores de borda e concluir o processo.