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
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.
Registe-se para receber notificações do repositório
Clonar ou transferir o repositório
Aceda à implementação da biblioteca de que precisa na
\src\CsrValidation
pasta (https://github.com/Microsoft/Intune-Resource-Access/tree/develop/src/CsrValidation)Criar a biblioteca com as instruções no ficheiro README
Incluir a biblioteca no projeto que cria o servidor SCEP
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
Conclua o teste de integração (neste artigo) e resolva quaisquer problemas
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:
- Configurar uma conta de avaliação Intune.
- Integre o Servidor SCEP no portal do Azure (neste artigo).
- Configure o Servidor SCEP com os IDs e a chave criados ao integrar o servidor SCEP.
- Inscrever dispositivos para testar os cenários na matriz de teste do cenário.
- Crie um perfil de Certificado de Raiz Fidedigna para a sua Autoridade de Certificação de teste.
- Crie perfis SCEP para testar os cenários listados na matriz de teste do cenário.
- Atribua os perfis aos utilizadores que inscreveram os respetivos dispositivos.
- Aguarde que os dispositivos sincronizem com Intune. Em alternativa, sincronize manualmente os dispositivos.
- Confirme se o Certificado de Raiz Fidedigna e os perfis SCEP estão implementados nos dispositivos.
- Confirme que o Certificado de Raiz Fidedigna está instalado em todos os dispositivos.
- Confirme que os Certificados SCEP dos perfis atribuídos estão instalados em todos os dispositivos.
- Confirme que as propriedades dos certificados instalados correspondem às propriedades definidas no perfil SCEP.
- Confirme se os certificados emitidos estão corretamente listados no centro de administração do Intune
Confira também
- Adicionar descrição geral da AC de terceiros
- Configurar Intune
- Registro de dispositivo
- Configurar perfis de certificado SCEP (a configuração do Microsoft NDES Server\Connector não é utilizada para este cenário)