Compartilhar via


Utilizar APIs para adicionar ACs de terceiros para SCEP para Intune

No Microsoft Intune, pode adicionar autoridades de certificação (AC) de terceiros e fazer com que estas ACs emitam e validem certificados com o Protocolo SCEP (Simple Certificate Enrollment Protocol). Adicionar autoridade de certificação de terceiros fornece uma descrição geral desta funcionalidade e descreve as tarefas de Administrador no Intune.

Existem também algumas tarefas de programador que utilizam uma biblioteca open source que a Microsoft publicou no GitHub.com. A biblioteca inclui uma API que:

  • Valida a palavra-passe scep gerada dinamicamente por Intune
  • Notifica Intune dos certificados criados em dispositivos que submetem pedidos SCEP

Com esta API, o servidor SCEP de terceiros integra-se com a solução de gestão scep Intune para dispositivos MDM. A biblioteca abstrai aspetos como a autenticação, a localização do serviço e a API do Serviço Intune ODATA dos respetivos utilizadores.

Solução de gestão do SCEP

Como o SCEP de autoridade de certificação de terceiros se integra com Microsoft Intune

Com Intune, os administradores criam perfis SCEP e, em seguida, atribuem estes perfis a dispositivos MDM. Os perfis SCEP incluem parâmetros, tais como:

  • O URL do servidor SCEP
  • O Certificado de Raiz Fidedigna da Autoridade de Certificação
  • Atributos de certificado e muito mais

Os dispositivos que marcar com Intune são atribuídos ao perfil SCEP e estão configurados com estes parâmetros. Uma palavra-passe de desafio SCEP gerada dinamicamente é criada por Intune e, em seguida, atribuída ao dispositivo.

Este desafio contém:

  • A palavra-passe de desafio gerada dinamicamente
  • Os detalhes sobre os parâmetros esperados no pedido de assinatura de certificado (CSR) que o dispositivo emite para o servidor SCEP
  • O tempo de expiração do desafio

Intune encripta estas informações, assina o blob encriptado e, em seguida, empacota estes detalhes na palavra-passe de desafio SCEP.

Os dispositivos que contactam o servidor SCEP para pedir um certificado e, em seguida, atribuem esta palavra-passe de desafio scep. O servidor SCEP envia a palavra-passe de desafio CSR e SCEP encriptada para Intune para validação. Esta palavra-passe de desafio e o CSR têm de passar a validação para que o servidor SCEP emita um certificado para o dispositivo. Quando um desafio SCEP é validado, ocorrem as seguintes verificações:

  • Valida a assinatura do blob encriptado
  • Valida que o desafio não expirou
  • Valida que o perfil ainda está direcionado para o dispositivo
  • Valida se as propriedades do certificado pedidas pelo dispositivo no CSR correspondem aos valores esperados

A solução de gestão do SCEP também inclui relatórios. Um administrador pode obter informações sobre a implementação status do perfil SCEP e sobre os certificados emitidos para os dispositivos.

Integrar com Intune

O código para a biblioteca integrar no Intune SCEP está disponível para transferência no repositório do GitHub Microsoft/Intune-Resource-Access.

A integração da biblioteca nos seus produtos inclui os seguintes passos. Estes passos requerem conhecimentos sobre como trabalhar com repositórios do GitHub e criar soluções e projetos no Visual Studio.

  1. Registe-se para receber notificações do repositório

  2. Clonar ou transferir o repositório

  3. Aceda à implementação da biblioteca de que precisa na \src\CsrValidation pasta (https://github.com/Microsoft/Intune-Resource-Access/tree/develop/src/CsrValidation)

  4. Criar a biblioteca com as instruções no ficheiro README

  5. Incluir a biblioteca no projeto que cria o servidor SCEP

  6. Conclua as seguintes tarefas no Servidor SCEP:

    • Permitir que o administrador configure o Identificador de Aplicativo Azure, a Chave de Aplicativo Azure e o ID de Inquilino (neste artigo) que a biblioteca utiliza para autenticação. Os administradores devem ter permissão para atualizar a Chave de Aplicativo Azure.
    • Identificar pedidos SCEP que incluem uma palavra-passe scep gerada Intune
    • Utilize a biblioteca de API Validar Pedido para validar palavras-passe scep geradas Intune
    • Utilize as APIs de notificação da biblioteca para notificar Intune sobre os certificados emitidos para pedidos SCEP que tenham as palavras-passe scep geradas Intune. Notifique também Intune sobre erros que podem ocorrer ao processar estes pedidos SCEP.
    • Confirme que o servidor regista informações suficientes para ajudar os administradores a resolver problemas
  7. Conclua o teste de integração (neste artigo) e resolva quaisquer problemas

  8. Dê orientações escritas ao cliente que explique:

    • Como o Servidor SCEP tem de ser integrado no centro de administração do Microsoft Intune
    • Como obter o Identificador de Aplicativo Azure e a Chave de Aplicativo Azure necessárias para configurar a biblioteca

Integrar o servidor SCEP no Azure

Para se autenticar no Intune, o servidor SCEP requer um ID de Aplicativo Azure, uma Chave de Aplicativo Azure e um ID de Inquilino. O Servidor SCEP também precisa de autorização para aceder à API Intune.

Para obter estes dados, o administrador do servidor SCEP inicia sessão no portal do Azure, regista a aplicação, dá à aplicação a permissão de validação do desafio Microsoft Intune API\SCEP e a permissão Application.Read.All, cria uma chave para a aplicação e, em seguida, transfere o ID da aplicação, a respetiva chave e o ID do inquilino.

Para obter orientações sobre como registar uma aplicação e obter os IDs e chaves, veja Utilizar o portal para criar uma aplicação Microsoft Entra e o principal de serviço para aceder aos recursos.

API da Biblioteca Java

A biblioteca Java é implementada como um projeto maven que extrai as respetivas dependências quando é criada. A API é implementada no com.microsoft.intune.scepvalidation espaço de nomes pela IntuneScepServiceClient classe .

Classe IntuneScepServiceClient

A IntuneScepServiceClient classe inclui os métodos utilizados pelo serviço SCEP para validar as palavras-passe do SCEP, para notificar Intune sobre os certificados criados e para listar quaisquer erros.

Construtor IntuneScepServiceClient

Assinatura:

IntuneScepServiceClient(
    Properties configProperties)

Descrição:

Instancia e configura um IntuneScepServiceClient objeto.

Parâmetros:

  • configProperties - Objeto propriedades que contém informações de configuração do cliente

A configuração tem de incluir as seguintes propriedades:

  • AAD_APP_ID="O ID de Aplicativo Azure obtido durante o processo de integração"
  • AAD_APP_KEY="A Chave de Aplicativo Azure obtida durante o processo de integração"
  • TENANT="O ID do Inquilino obtido durante o processo de integração"
  • PROVIDER_NAME_AND_VERSION="Informações utilizadas para identificar o produto e a respetiva versão"

Se a solução exigir um proxy com autenticação ou sem autenticação, pode adicionar as seguintes propriedades:

  • PROXY_HOST="O anfitrião onde o proxy está alojado."
  • PROXY_PORT="A porta em que o proxy está a escutar".
  • PROXY_USER="O nome de utilizador a utilizar se o proxy utilizar a autenticação básica."
  • PROXY_PASS="A palavra-passe a utilizar se o proxy utilizar a autenticação básica."

Lançamentos:

  • IllegalArgumentException - Emitido se o construtor for executado sem um objeto de propriedade adequado.

Importante

É melhor instanciar uma instância desta classe e utilizá-la para processar vários pedidos SCEP. Ao fazê-lo, reduz a sobrecarga, uma vez que coloca em cache os tokens de autenticação e as informações de localização do serviço.

Notas de segurança
O implementador do servidor SCEP tem de proteger os dados introduzidos nas propriedades de configuração persistentes no armazenamento contra adulteração e divulgação. Recomenda-se a utilização de ACLs e encriptação adequadas para proteger as informações.

Método ValidateRequest

Assinatura:

void ValidateRequest(
    String transactionId,
    String certificateRequest)

Descrição:

Valida um pedido de certificado SCEP.

Parâmetros:

  • transactionId - O ID de Transação do SCEP
  • certificateRequest - PKCS codificado com DER #10 Pedido de Certificado Base64 codificado como uma cadeia

Lançamentos:

  • IllegalArgumentException – emitido se for chamado com um parâmetro que não é válido
  • IntuneScepServiceException – emitido se se verificar que o pedido de certificado não é válido
  • Exceção – emitida se for encontrado um erro não esperado

Importante

As exceções geradas por este método devem ser registadas pelo servidor. Tenha em atenção que as IntuneScepServiceException propriedades têm informações detalhadas sobre o motivo pelo qual a validação do pedido de certificado falhou.

Notas de segurança:

  • Se este método emitir uma exceção, o servidor SCEP não pode emitir um certificado para o cliente.
  • As falhas de validação do pedido de certificado SCEP podem indicar um problema na infraestrutura de Intune. Em alternativa, podem indicar que um atacante está a tentar obter um certificado.
SendSuccessNotification method (Método SendSuccessNotification)

Assinatura:

void SendSuccessNotification(
    String transactionId,
    String certificateRequest,
    String certThumbprint,
    String certSerialNumber,
    String certExpirationDate,
    String certIssuingAuthority)

Descrição:

Notifica Intune que um certificado é criado como parte do processamento de um pedido SCEP.

Parâmetros:

  • transactionId - O ID de Transação do SCEP
  • certificateRequest - PKCS codificado com DER #10 Pedido de Certificado Base64 codificado como uma cadeia
  • certThumprint – hash SHA1 do thumbprint do certificado aprovisionado
  • certSerialNumber - Número de série do certificado aprovisionado
  • certExpirationDate – data de expiração do certificado aprovisionado. A cadeia de data/hora deve ser formatada como hora UTC web (AAAA-MM-DDThh:mm:ss.sssTZD) ISO 8601.
  • certIssuingAuthority - Nome da autoridade que emitiu o certificado

Lançamentos:

  • IllegalArgumentException – emitido se for chamado com um parâmetro que não é válido
  • IntuneScepServiceException – emitido se se verificar que o pedido de certificado não é válido
  • Exceção – emitida se for encontrado um erro não esperado

Importante

As exceções geradas por este método devem ser registadas pelo servidor. Tenha em atenção que as IntuneScepServiceException propriedades têm informações detalhadas sobre o motivo pelo qual a validação do pedido de certificado falhou.

Notas de segurança:

  • Se este método emitir uma exceção, o servidor SCEP não pode emitir um certificado para o cliente.
  • As falhas de validação do pedido de certificado SCEP podem indicar um problema na infraestrutura de Intune. Em alternativa, podem indicar que um atacante está a tentar obter um certificado.
Método SendFailureNotification

Assinatura:

void SendFailureNotification(
    String transactionId,
    String certificateRequest,
    long  hResult,
    String errorDescription)

Descrição:

Notifica Intune que ocorreu um erro ao processar um pedido SCEP. Este método não deve ser invocado para exceções emitidas pelos métodos desta classe.

Parâmetros:

  • transactionId - O ID de Transação do SCEP
  • certificateRequest - PKCS codificado com DER #10 Pedido de Certificado Base64 codificado como uma cadeia
  • hResult – código de erro Win32 que melhor descreve o erro encontrado. Veja Códigos de Erro Win32
  • errorDescription - Descrição do erro encontrado

Lançamentos:

  • IllegalArgumentException – emitido se for chamado com um parâmetro que não é válido
  • IntuneScepServiceException – emitido se se verificar que o pedido de certificado não é válido
  • Exceção – emitida se for encontrado um erro não esperado

Importante

As exceções geradas por este método devem ser registadas pelo servidor. Tenha em atenção que as IntuneScepServiceException propriedades têm informações detalhadas sobre o motivo pelo qual a validação do pedido de certificado falhou.

Notas de segurança:

  • Se este método emitir uma exceção, o servidor SCEP não pode emitir um certificado para o cliente.
  • As falhas de validação do pedido de certificado SCEP podem indicar um problema na infraestrutura de Intune. Em alternativa, podem indicar que um atacante está a tentar obter um certificado.
SetSslSocketFactory method (Método SetSslSocketFactory)

Assinatura:

void SetSslSocketFactory(
    SSLSocketFactory factory)

Descrição:

Utilize este método para informar o cliente de que tem de utilizar a fábrica de socketS SSL especificada (em vez da predefinição) ao comunicar com Intune.

Parâmetros:

  • factory - A fábrica de sockets SSL que o cliente deve utilizar para pedidos HTTPS

Lançamentos:

  • IllegalArgumentException – emitido se for chamado com um parâmetro que não é válido

Observação

A fábrica do Socket SSL tem de ser definida, se necessário, antes de executar os outros métodos desta classe.

Testes de integração

Validar e testar se a sua solução está corretamente integrada com Intune é obrigatório. Segue-se uma descrição geral dos passos:

  1. Configurar uma conta de avaliação Intune.
  2. Integre o Servidor SCEP no portal do Azure (neste artigo).
  3. Configure o Servidor SCEP com os IDs e a chave criados ao integrar o servidor SCEP.
  4. Inscrever dispositivos para testar os cenários na matriz de teste do cenário.
  5. Crie um perfil de Certificado de Raiz Fidedigna para a sua Autoridade de Certificação de teste.
  6. Crie perfis SCEP para testar os cenários listados na matriz de teste do cenário.
  7. Atribua os perfis aos utilizadores que inscreveram os respetivos dispositivos.
  8. Aguarde que os dispositivos sincronizem com Intune. Em alternativa, sincronize manualmente os dispositivos.
  9. Confirme se o Certificado de Raiz Fidedigna e os perfis SCEP estão implementados nos dispositivos.
  10. Confirme que o Certificado de Raiz Fidedigna está instalado em todos os dispositivos.
  11. Confirme que os Certificados SCEP dos perfis atribuídos estão instalados em todos os dispositivos.
  12. Confirme que as propriedades dos certificados instalados correspondem às propriedades definidas no perfil SCEP.
  13. Confirme se os certificados emitidos estão corretamente listados no centro de administração do Intune

Confira também