Criar e configurar domínios gerenciados do cliente
As configurações de domínio permitem especificar um nome de domínio totalmente qualificado (FQDN) para conectar-se ao AWS IoT Core. Há muitos benefícios em usar domínios gerenciados pelo cliente (também conhecidos como domínios personalizados): você pode expor seu próprio domínio ou o domínio da sua empresa aos clientes para fins de marca; você pode facilmente alterar seu próprio domínio para apontar para um novo agente; você pode oferecer suporte a múltipla locação para atender clientes com domínios diferentes dentro da mesma Conta da AWS; e você pode gerenciar os detalhes dos seus próprios certificados de servidor, como a autoridade de certificação-raiz (CA) usada para assinar o certificado, o algoritmo de assinatura, a profundidade da cadeia de certificados e o ciclo de vida do certificado.
O fluxo de trabalho para definir uma configuração de domínio com um domínio personalizado consiste nos três estágios a seguir.
Registrar certificados de servidor no AWS Certificate Manager
Antes de criar uma configuração de domínio com um domínio personalizado, é necessário registrar a cadeia de certificados do servidor no AWS Certificate Manager (ACM). É possível usar os seguintes três tipos de certificados de servidor.
nota
O AWS IoT Core considera um certificado como assinado por uma CA pública se estiver incluído em pacote de CAs confiáveis do Mozilla
Requisitos de certificado
Consulte Pré-requisitos para importar certificados para obter os requisitos de importação de certificados para o ACM. Além desses requisitos, o AWS IoT Core adiciona os seguintes requisitos.
O certificado de entidade final deve incluir a extensão Extended Key Usage x509 v3 com um valor de serverAuth (Autenticação de servidor Web TLS). Se você solicitar o certificado do ACM, essa extensão será adicionada automaticamente.
A profundidade máxima da cadeia de certificados é de 5 certificados.
O tamanho máximo da cadeia de certificados é de 16 KB.
Os algoritmos criptográficos e os tamanhos de chave compatíveis incluem RSA de 2048 bits (RSA_2048) e ECDSA de 256 bits (EC_Prime256v1).
Usar um certificado para vários domínios
Se você planeja usar um certificado para abranger vários subdomínios, use um domínio curinga no campo nome comum (CN) ou Nomes alternativos do assunto (SAN). Por exemplo, use *.iot.example.com
para abranger dev.iot.example.com, qa.iot.example.com e prod.iot.example.com. Cada FQDN exige sua própria configuração de domínio, mas mais de uma configuração de domínio pode usar o mesmo valor curinga. O CN ou o SAN devem abranger o FQDN que você deseja usar como domínio personalizado. Se houver SANs, o CN será ignorado e um SAN deverá cobrir o FQDN que você deseja usar como domínio personalizado. Essa abrangência pode ser uma correspondência exata ou uma correspondência curinga. Depois que um certificado curinga é validado e registrado em uma conta, outras contas na região são impedidas de criar domínios personalizados que se sobreponham ao certificado.
As seções a seguir descrevem como obter cada tipo de certificado. Cada recurso de certificado requer um nome do recurso da Amazon (ARN) registrado no ACM usado ao criar a configuração do domínio.
Certificados públicos gerados pelo ACM
É possível gerar um certificado público para o domínio personalizado usando a API RequestCertificate. Ao gerar um certificado dessa maneira, o ACM valida a sua propriedade do domínio personalizado. Para obter mais informações, consulte Solicitar um certificado público no Guia do usuário do AWS Certificate Manager.
Certificados externos assinados por uma CA pública
Se você já tiver um certificado de servidor assinado por uma CA pública (uma CA incluída no pacote de CAs confiáveis do Mozilla), será possível importar a cadeia de certificados diretamente no ACM usando a API ImportCertificate. Para saber mais sobre essa tarefa, sobre os pré-requisitos e sobre as exigências de formato do certificado, consulte Importar certificados.
Certificados externos assinados por uma CA privada
Se você já tiver um certificado de servidor assinado por uma CA privada ou autoassinado, será possível usar o certificado para criar a configuração de domínio, mas também será necessário criar um certificado público adicional no ACM para validar a propriedade do seu domínio. Para fazer isso, registre a cadeia de certificados de servidor no ACM usando a API ImportCertificate. Para saber mais sobre essa tarefa, sobre os pré-requisitos e sobre as exigências de formato do certificado, consulte Importar certificados.
Criar um certificado de validação
Depois de importar o certificado para o ACM, gere um certificado público para o domínio personalizado usando a API RequestCertificate. Ao gerar um certificado dessa maneira, o ACM valida a sua propriedade do domínio personalizado. Para obter mais informações, consulte Solicitar um certificado público. Ao criar a configuração de domínio, utilize esse certificado público como certificado de validação.
Criar uma configuração de domínio
Crie um endpoint configurável em um domínio personalizado usando a API CreateDomainConfiguration. Uma configuração de domínio para um domínio personalizado consiste no seguinte:
-
domainConfigurationName
Um nome definido pelo usuário que identifica a configuração de domínio. Os nomes da configuração de domínio que começam com
IoT:
são reservados para endpoints padrão e não podem ser usados. Além disso, esse valor deve ser exclusivo da sua Região da AWS. -
domainName
O FQDN que seus dispositivos usam para se conectar ao AWS IoT Core. O AWS IoT Core usa a extensão de TLS Server Name Indication (SNI) para aplicar configurações de domínio. Os dispositivos devem usar essa extensão ao conectar e transmitir um nome de servidor idêntico ao nome de domínio especificado na configuração de domínio.
-
serverCertificateArns
O ARN da cadeia de certificados do servidor que você registrou na ACM. Atualmente, o AWS IoT Core permite apenas um certificado de servidor.
-
validationCertificateArn
O ARN do certificado público gerado no ACM para validar a propriedade do domínio personalizado. Esse argumento não será necessário se você usar um certificado de servidor gerado pelo ACM ou assinado publicamente.
-
defaultAuthorizerName (optional)
O nome do autorizador personalizado que deve ser usado no endpoint.
-
allowAuthorizerOverride
Um valor booliano que especifica se os dispositivos podem substituir o autorizador padrão especificando outro autorizador no cabeçalho HTTP da solicitação. Esse valor será exigido se um valor para
defaultAuthorizerName
for especificado. -
serviceType
No momento, o AWS IoT Core oferece suporte somente ao tipo de serviço
DATA
. Ao especificarDATA
, o AWS IoT retornará um endpoint com um tipo de endpoint deiot:Data-ATS
. -
TlsConfig
(Opcional)Um objeto que especifica a configuração TLS para um domínio. Para obter mais informações, consulte Definir configurações de TLS nas configurações de domínio.
-
serverCertificateConfig
(Opcional)Um objeto que especifica a configuração de certificado de servidor para um domínio. Para obter mais informações, consulte Configuração de certificado de servidor para grampeamento de OCSP.
O comando de AWS CLI a seguir cria uma configuração de domínio para iot.example.com.
aws iot create-domain-configuration --domain-configuration-name "
myDomainConfigurationName
" --service-type "DATA" --domain-name "iot.example.com" --server-certificate-arnsserverCertARN
--validation-certificate-arnvalidationCertArn
nota
Após criar a configuração de domínio, poderá levar até 60 minutos para que o AWS IoT Core forneça os certificados de servidor personalizados.
Para obter mais informações, consulte Gerenciar configurações de domínio.
Criar registros DNS
Depois de registrar sua cadeia de certificados e criar sua configuração de domínio, crie um registro de DNS para que o domínio personalizado aponte para um domínio da AWS IoT. Esse registro deve apontar para um endpoint do AWS IoT do tipo iot:Data-ATS
. É possível obter o endpoint usando a API DescribeEndpoint.
O comando AWS CLI a seguir mostra como obter o endpoint.
aws iot describe-endpoint --endpoint-type iot:Data-ATS
Depois de obter o endpoint iot:Data-ATS
, crie um registro CNAME
do domínio personalizado para esse endpoint do AWS IoT. Se você criar vários domínios personalizados na mesma Conta da AWS, use como alias deles esse mesmo endpoint iot:Data-ATS
.
Solução de problemas
Se você tiver problemas para conectar dispositivos a um domínio personalizado, verifique se o AWS IoT Core aceitou e aplicou seu certificado de servidor. Você pode verificar se o AWS IoT Core aceitou seu certificado usando o console do AWS IoT Core ou a AWS CLI.
Para usar o console do AWS IoT Core, navegue até a página Configurações e selecione o nome da configuração do domínio. Na seção Detalhes do certificado do servidor, verifique o status e os detalhes do status. Se o certificado for inválido, substitua-o no ACM por um certificado que atenda aos requisitos de certificado listados na seção anterior. Se o certificado tiver o mesmo ARN, ele será selecionado e aplicado automaticamente pelo AWS IoT Core.
Para verificar o status do certificado usando a AWS CLI, chame a API DescribeDomainConfiguration e especifique o nome da configuração do domínio.
nota
Se o certificado for inválido, o AWS IoT Core continuará a fornecer o último certificado válido.
Você pode verificar qual certificado está sendo fornecido em seu endpoint usando o seguinte comando openssl.
openssl s_client -connect
custom-domain-name
:8883 -showcerts
-servername custom-domain-name