TLS - AWS IoT Core

TLS

Use esses testes para determinar se o protocolo de segurança da camada de transporte (TLS) entre os dispositivos e a AWS IoT é seguro.

nota

O Device Advisor agora é compatível com o TLS 1.3.

Happy Path

TLS Connect

Valida se o dispositivo em teste pode concluir o handshake TLS para o AWS IoT. Esse teste não valida a implementação do MQTT do dispositivo cliente.

exemplo Definição do caso de teste da API:
nota

EXECUTION_TIMEOUT tem um valor padrão de cinco minutos. Para obter melhores resultados, recomendamos um valor de tempo limite de dois minutos.

"tests":[ { "name":"my_tls_connect_test", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", //in seconds }, "test":{ "id":"TLS_Connect", "version":"0.0.0" } } ]
exemplo Saídas do caso de teste:
  • Aprovação — O dispositivo em teste concluiu o handshake TLS com AWS IoT.

  • Passe com avisos — O dispositivo em teste concluiu o handshake TLS com AWS IoT, mas houve mensagens de aviso de TLS do dispositivo ou AWS IoT.

  • Falha — O dispositivo em teste falhou ao concluir o handshake TLS com AWS IoT devido a um erro de handshake.

O TLS recebe fragmentos de tamanho máximo

Esse caso de teste valida que o dispositivo pode receber e processar fragmentos de tamanho máximo do TLS. O dispositivo de teste deve assinar um tópico pré-configurado com QoS 1 para receber uma grande carga. É possível personalizar a carga com a configuração ${payload}.

exemplo Definição do caso de teste da API:
nota

EXECUTION_TIMEOUT tem um valor padrão de cinco minutos. Para obter melhores resultados, recomendamos um valor de tempo limite de dois minutos.

"tests":[ { "name":"TLS Receive Maximum Size Fragments", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", //in seconds "PAYLOAD_FORMAT":"{"message":"${payload}"}", // A string with a placeholder ${payload}, or leave it empty to receive a plain string. "TRIGGER_TOPIC": "test_1" // A topic to which a device will subscribe, and to which a test case will publish a large payload. }, "test":{ "id":"TLS_Receive_Maximum_Size_Fragments", "version":"0.0.0" } } ]

Pacotes de criptografia

Suporte a dispositivos TLS para conjuntos de cifras do AWS IoT recomendados

Valida se os conjuntos de cifras na mensagem Hello do Cliente TLS do dispositivo em teste contêm os conjuntos de cifras do AWS IoT recomendados. Fornece mais informações sobre os conjuntos de cifras compatíveis com o dispositivo.

exemplo Definição do caso de teste da API:
nota

EXECUTION_TIMEOUT tem um valor padrão de cinco minutos. Recomendamos um valor de tempo limite de 2 minutos.

"tests":[ { "name":"my_tls_support_aws_iot_cipher_suites_test", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", // in seconds }, "test":{ "id":"TLS_Support_AWS_IoT_Cipher_Suites", "version":"0.0.0" } } ]
exemplo Saídas do caso de teste:
  • Aprovado — O dispositivo em conjuntos de cifras de teste contém pelo menos um dos conjuntos de cifras da AWS IoT recomendados e não contém nenhum conjunto de cifras não compatível.

  • Passe com avisos — Os conjuntos de cifras do dispositivo contêm pelo menos um conjunto de cifras da AWS IoT, mas:

    1. Ele não contém nenhum dos conjuntos de cifras recomendados

    2. Ele contém conjuntos de cifras que não são compatíveis com a AWS IoT.

    Sugerimos que você verifique se todos os conjuntos de cifras não compatíveis são seguros.

  • Falha — O dispositivo em conjuntos de cifras de teste não contém nenhum dos conjuntos de cifras da AWS IoT compatíveis.

Certificado de servidor de tamanho maior

Certificado de servidor de tamanho maior do TLS

Valida se o dispositivo pode concluir o handshake TLS com AWS IoT quando recebe e processa um certificado de servidor de tamanho maior. O tamanho do certificado do servidor (em bytes) usado por esse teste é maior do que o usado atualmente no caso de teste do TLS Connect e do IoT Core por 20. Durante esse caso de teste, a AWS IoT testa o espaço do buffer do dispositivo para TLS. Se o espaço do buffer for grande o suficiente, o handshake TLS será concluído sem erros. Esse teste não valida a implementação do MQTT do dispositivo. O caso de teste ocorre após a conclusão do processo de handshake do TLS.

exemplo Definição do caso de teste da API:
nota

EXECUTION_TIMEOUT tem um valor padrão de cinco minutos. Para obter melhores resultados, recomendamos um valor de tempo limite de dois minutos. Se esse caso de teste falhar, mas o caso de teste do TLS Connect for aprovado, recomendamos que você aumente o limite de espaço de buffer do dispositivo para TLS. Aumentar os limites de espaço de buffer garante que o dispositivo possa processar um certificado de servidor de tamanho maior caso o tamanho aumente.

"tests":[ { "name":"my_tls_large_size_server_cert_test", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", // in seconds }, "test":{ "id":"TLS_Large_Size_Server_Cert", "version":"0.0.0" } } ]
exemplo Saídas do caso de teste:
  • Aprovação — O dispositivo em teste concluiu o handshake TLS com AWS IoT.

  • Passe com avisos — O dispositivo em teste concluiu o handshake TLS com AWS IoT, mas há mensagens de aviso do TLS do dispositivo ou da AWS IoT.

  • Falha — O dispositivo em teste falhou ao concluir o handshake TLS com AWS IoT devido a um erro durante o processo de handshake.

Certificado de servidor TLS desprotegido

Não assinado por uma CA reconhecida

Valida que o dispositivo em teste fecha a conexão se for apresentado um certificado de servidor sem uma assinatura válida da CA ATS. Um dispositivo só deve se conectar a um endpoint que apresente um certificado válido.

exemplo Definição do caso de teste da API:
nota

EXECUTION_TIMEOUT tem um valor padrão de cinco minutos. Recomendamos um valor de tempo limite de 2 minutos.

"tests":[ { "name":"my_tls_unsecure_server_cert_test", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", //in seconds }, "test":{ "id":"TLS_Unsecure_Server_Cert", "version":"0.0.0" } } ]
exemplo Saídas do caso de teste:
  • Passe — O dispositivo em teste fechou a conexão.

  • Falha — O dispositivo em teste concluiu o handshake TLS com AWS IoT.

Certificado de servidor de nome de assunto incorreto do TLS/Nome comum do assunto incorreto (CN)/Nome alternativo do assunto (SAN)

Valida se o dispositivo em teste fecha a conexão se for apresentado um certificado de servidor para um nome de domínio diferente do solicitado.

exemplo Definição do caso de teste da API:
nota

EXECUTION_TIMEOUT tem um valor padrão de cinco minutos. Recomendamos um valor de tempo limite de 2 minutos.

"tests":[ { "name":"my_tls_incorrect_subject_name_cert_test", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", // in seconds }, "test":{ "id":"TLS_Incorrect_Subject_Name_Server_Cert", "version":"0.0.0" } } ]
exemplo Saídas do caso de teste:
  • Passe — O dispositivo em teste fechou a conexão.

  • Falha — O dispositivo em teste concluiu o handshake TLS com AWS IoT.

Certificado de servidor TLS expirado

Certificado de servidor expirado

Valida que o dispositivo em teste fecha a conexão se for apresentado um certificado de servidor expirado.

exemplo Definição do caso de teste da API:
nota

EXECUTION_TIMEOUT tem um valor padrão de cinco minutos. Recomendamos um valor de tempo limite de 2 minutos.

"tests":[ { "name":"my_tls_expired_cert_test", "configuration": { // optional: "EXECUTION_TIMEOUT":"300", //in seconds }, "test":{ "id":"TLS_Expired_Server_Cert", "version":"0.0.0" } } ]
exemplo Saídas do caso de teste:
  • Aprovação — O dispositivo em teste se recusa a concluir o handshake TLS com AWS IoT. O dispositivo envia uma mensagem de alerta do TLS antes de fechar a conexão.

  • Passe com avisos — O dispositivo em teste se recusa a concluir o handshake TLS com AWS IoT. No entanto, ele não envia uma mensagem de alerta do TLS antes de fechar a conexão.

  • Falha — O dispositivo em teste conclui o handshake TLS com AWS IoT.