Qual é a diferença entre .pfx
e .cert
arquivos de certificado?
Distribuímos .pfx
ou .cert
para autenticação do cliente?
Comentários
- Também [ 1 ] , [ 2 ] , [ 3 ]
Resposta
Existem dois objetos: a chave privada , que é o que o servidor possui , mantém segredo e usa para receber novas conexões SSL; e a chave pública que é matematicamente ligada à chave privada e tornada “pública”: é enviada a todos os clientes como parte das etapas iniciais da conexão.
O certificado é, nominalmente, um contêiner para a chave pública. Inclui a chave pública, o nome do servidor, algumas informações extras sobre o servidor e uma assinatura computada por uma autoridade de certificação (CA). Quando o servidor envia sua chave pública para um cliente, ele na verdade envia seu certificado, com alguns outros certificados (o certificado que contém a chave pública da CA que assinou seu certificado, e o certificado da CA que assinou os CAs certificado e assim por diante). Certificados são objetos intrinsecamente públicos.
Algumas pessoas usam o termo “certificado” para designar o certificado e a chave privada; essa é uma fonte comum de confusão. Eu, pessoalmente, continuo a definição estrita para a qual o certificado é o contêiner assinado apenas para a chave pública.
Um arquivo .pfx
é um Arquivo PKCS # 12 : um saco que pode conter muitos objetos com proteção de senha opcional; mas, normalmente, um arquivo PKCS # 12 contém um certificado (possivelmente com seu conjunto variado de certificados CA) e a chave privada correspondente.
Por outro lado, um .cert
(ou .cer
ou
) o arquivo geralmente contém um único certificado, sozinho e sem qualquer encapsulamento (sem chave privada, sem proteção por senha, apenas o certificado).
Comentários
- Ao fazer a autenticação do cliente, exigimos que o certificado SSL do cliente seja instalado no navegador do cliente. Este é um arquivo .pfx ou .cert?
- Os certificados são dados públicos; todo mundo os tem. Mas a autenticação do cliente consiste em fazer com que o cliente faça algo que apenas aquele cliente pode fazer; portanto, o cliente deve saber algo que não é público e que ‘ é a chave privada. Assim, o cliente deve ter uma chave privada junto com seu certificado; se a chave foi gerada a partir do navegador do cliente, a configuração esperada é importá-la para o cliente junto com o certificado. Portanto, um arquivo .pfx.
- Eu obtive o arquivo .pfx do servidor IIS onde meu certificado está instalado. É este o arquivo .pfx que deve ser distribuído? Uma vez que a CA forneceu o arquivo .cert incluindo as chaves que foram instaladas no servidor.
- @ Xsecure123 no; há ‘ s dois cenários aqui – e Thomas estava respondendo apenas para autenticação do cliente (onde cada cliente tem seu próprio certificado privado ‘ para provar sua própria identidade). – Parece que você ‘ está fazendo outra coisa – parece que você ‘ está usando um certificado autoassinado no IIS e os clientes não ‘ não confiam nele. – Nesse caso, você deve fornecer aos clientes um arquivo .cer do servidor. – porque os clientes precisam apenas da chave pública para confiar no servidor. – Se eles também tiverem a chave privada, eles podem personificar o servidor ou descriptografar o tráfego de ‘ se ‘ s não é algo que você deseja.
- @ BrainSlugs83: O que você quer dizer com certificado privado. Thomas mencionou que os certificados são dados públicos. Você pode explicar?
Resposta
Eu sei que este é um tópico antigo, mas para futuros leitores , conforme mencionado acima, não, você não distribui o arquivo .pfx porque esse é o arquivo que contém a chave privada. Você pode extrair e distribuir o certificado (que é público) do arquivo .pfx por meio do método descrito aqui: https://stackoverflow.com/questions/403174/convert-pfx-to-cer
Comentários
- Onde você deve armazenar o arquivo pfx com segurança no servidor? Obviamente, você não ‘ quer outro aplicativo usando seu arquivo PFX, mas eu não ‘ não acho que ‘ também gostaria de armazená-lo com meu aplicativo.Você simplesmente importaria para o gerenciador de certificados da máquina e acessaria programaticamente?
- O gerenciamento de chave privada @Matt é um tópico inteiro em si. Algumas respostas relevantes podem ser encontradas aqui e aqui (o último ‘ não é estritamente relevante para arquivos PFX, mas ainda é novo). O próprio arquivo PFX não ‘ precisa ser armazenado em seu servidor (ou seja, se você ‘ estiver usando IIS7, você ‘ d importar o PFX; se não, você ‘ d extrai o certificado & chave privada do PFX em seus próprios arquivos).
Resposta
O quê é a diferença entre arquivos de certificado .pfx e .cert?
A resposta que @Thomas Pornin deu é muito boa.
Distribuímos .pfx ou .cert para autenticação de cliente?
Isso depende do processo usado.
O processo típico para configurar um cliente externo para autenticar usando um certificado é o seguinte: 1) o cliente gera um par de chaves assimétricas (chaves públicas e privadas); 2) o cliente gera uma solicitação de assinatura de certificado para a chave pública e a envia ao servidor; 3) o servidor assina a chave pública e retorna esta assinatura (o ” certificado “) para o cliente; 4) o cliente armazena a chave privada junto com este certificado em seu armazenamento de chaves. Agora, quando o cliente se conecta ao servidor, o certificado é apresentado e o cliente é autenticado.
No cenário acima, um ” .cert ” é enviado de volta ao cliente.
Internamente, muitas organizações realizarão esse processo para seus funcionários. Nessa situação, ocorre o seguinte: a equipe de TI gera o par de chaves pública e privada para um funcionário junto com a solicitação de assinatura do certificado. Eles então assinam a chave pública (usando sua autoridade de certificação privada) e colocam o certificado resultante, junto com a chave privada correspondente e todos os certificados CA intermediários (a ” cadeia de certificados “), no armazenamento de chaves do usuário.
Nesse cenário, um ” .pfx ” (ou ” .pem “) seria apropriado, pois conteria todos os itens necessários para autenticação do cliente: o privado chave, o certificado e a cadeia de certificados.
Pesquise ” Inscrição automática de certificado ” para encontrar uma maneira para automatizar esse processo para usuários e dispositivos corporativos.