AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1148606
Accepted
tb1
tb1
Asked: 2023-11-27 01:26:53 +0800 CST2023-11-27 01:26:53 +0800 CST 2023-11-27 01:26:53 +0800 CST

Certificado de máquina local (certlm.msc) - escolhendo "Microsoft Software Key Storage Provider" na importação

  • 772
Esta questão foi migrada do Information Security Stack Exchange porque pode ser respondida em Server Fault. Migraram ontem .

Ao importar um certificado de dispositivo/chave privada por meio do CERTLM, a GUI parece escolher um provedor de serviços de criptografia (CSP) obsoleto chamado "Microsoft Strong Cryptographic Provider"; Gostaria de saber se existe uma maneira de alterar isso para "Provedor de armazenamento de chaves de software da Microsoft" por meio do assistente ou da política de grupo ou (outros meios).

Mais detalhes: Um fornecedor me pediu para importar um PFX para um armazenamento de certificados de máquina local do Windows 11 por meio da seguinte sintaxe de comando de linha:

certutil -csp "Microsoft Software Key Storage Provider" -importpfx MyPathToCertificate.pfx NoExport

Isso funcionou muito bem com o software deles, porém quando tentei importar o mesmo PFX anteriormente, usei CERTLM (GUI) para importar o certificado para o mesmo local (máquina local/loja pessoal). Isso pareceu funcionar na época (o certificado apareceu lá), mas causou erros de descriptografia conforme indicado nos registros do fornecedor.

Veja como importei através do CERTLM:

  1. Iniciei o Prompt de Comando via UAC/Escolher Certificados (máquina local)
  2. Importei o PFX usando as opções padrão para a loja Pessoal

Depois de executar o seguinte comando: Certutil -store My

Notei que o certificado tinha a seguinte linha: Provider = Microsoft Strong Cryptographic Provider

enquanto o comando certutil escolheu explicitamente "Microsoft Software Key Storage Provider"

De acordo com https://www.pkisolutions.com/understanding-microsoft-crypto-providers/ "Microsoft Strong Cryptographic Provider" é um provedor legado obsoleto, enquanto "Microsoft Software Key Storage Provider" é uma escolha moderna e preferida para trabalhar com novas chaves .

O CSP diferente explica por que o aplicativo do fornecedor não estava funcionando após a importação original e entendo por que a MS escolheria um provedor "antigo" como padrão para compatibilidade com versões anteriores, mas estou curioso para saber se existem maneiras de especificar o CSP ao executar a importação através do CERTLM daqui para frente.

certificate
  • 2 2 respostas
  • 46 Views

2 respostas

  • Voted
  1. Best Answer
    Crypt32
    2023-11-27T16:48:01+08:002023-11-27T16:48:01+08:00

    A resposta curta à sua pergunta: não, você não pode especificar o provedor durante a importação na GUI do MMC, você deve usar o certutil.

    Os certificados MMC ( certmgr.msce certlm.msc) tentam importar chaves para o mesmo provedor conforme especificado no arquivo PKCS#12 como atributo (as máquinas Windows definem esse atributo durante a exportação do certificado para PFX e a lógica de importação respeita esse atributo). Se o provedor não for especificado ou não estiver disponível, as chaves serão importadas para o CSP legado. A razão é que em 2023 existem muitos aplicativos que não oferecem suporte a provedores de GNV e o CERTLM usa o provedor mais compatível.

    Se você quiser usar um provedor diferente, deverá usar o parâmetro certutil -importPFXwith -csp.

    • 4
  2. tb1
    2023-11-28T06:58:37+08:002023-11-28T06:58:37+08:00

    Crypt32 teve a melhor resposta curta, mas tentarei embelezar com algumas dicas adicionais:

    Resposta: Você não precisa escolher "Microsoft Software Key Storage Provider"se o certificado original foi criado com o mesmo provedor e exportado através do CERTLM como um PFX. E se você precisar especificar seu provedor, poderá substituí-lo (por exemplo, com certutil -importPFXparâmetro -csp).

    Mais detalhes: Se você está apenas começando como eu, talvez tenha lido a documentação da Microsoft aqui , que fornece uma maneira de criar certificados autoassinados por meio do PowerShell e do New-SelfSignedCertificatecomando.

    Tudo o que li online sugeriu que o New-SelfSignedCertificatecomando cria certificados "Microsoft Software Key Storage Provider"como provedor por padrão. No entanto, ao seguir as etapas do documento da Microsoft, você acaba sendo Microsoft Strong Cryptographic Providerseu provedor. Por que?

    O problema é a seguinte linha:KeySpec = 'Signature'

    De acordo com a documentação da Microsoft sobre o próprio comando PS , o KeySpec é essencialmente uma propriedade legada:

    "Se a chave privada for gerenciada por um CSP legado, o valor será KeyExchange ou Signature. Se a chave for gerenciada por um KSP de criptografia de próxima geração (CNG), o valor será Nenhum."

    Ao incluir um valor para KeySpec, acabamos criando um certificado que usa o provedor legado padrão ( Microsoft Strong Cryptographic Provider).

    Como nós consertamos isso? Basta substituir essa propriedade pelas duas seguintes:

    KeyUsage = 'CertSign'
    KeyUsageProperty = 'Sign'
    

    O exemplo final é mais ou menos assim:

     $params = @{
         Type = 'Custom'
         Subject = 'CN=Your Subject Here'
         KeyExportPolicy = 'Exportable'
         KeyUsage = 'CertSign'
         KeyUsageProperty = 'Sign'
         KeyLength = 2048
         HashAlgorithm = 'sha256'
         NotAfter = (Get-Date).AddYears(2)
         CertStoreLocation = 'Cert:\CurrentUser\My' 
    } 
    $cert = New-SelfSignedCertificate @params
    

    E se você executar este comando depois disso: certutil -user -store My Você deverá ver uma linha que diz Provider = Microsoft Software Key Storage Providerdepois desse certificado.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve