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 / 970009
Accepted
Josh
Josh
Asked: 2019-06-04 16:51:59 +0800 CST2019-06-04 16:51:59 +0800 CST 2019-06-04 16:51:59 +0800 CST

Como assino uma nova CA interna do FreeIPA Server com minha CA interna organizacional?

  • 772

Minha organização tem uma Autoridade de Certificação (CA) interna que já geramos muitos certificados internos e instalamos em máquinas.

Estou configurando um servidor LDAP/Kerberos FreeIPA e após a instalação inicial, ele gerou uma CA interna própria que posso ver na interface da web.

Gostaria de assinar a CA FreeIPA com a CA da organização existente para estabelecer uma cadeia de certificados confiáveis. Estou seguindo as instruções do FreeIPA para renovar manualmente um certificado de CA IdM assinado externamente, que acredito cobrir a assinatura da CA do FreeIPA com uma CA externa. Isso produziu um CSR que eu assinei usando a CA existente para produzir uma nova CA FreeIPA assinada.

No entanto, fiquei preso tentando reimportar a CA + Certificate Chain recém-assinada usando o ipa-cacert-manage renew --external-cert-filecomando. Quando executo isso como as instruções dizem, recebo um erro de que a cadeia de certificados da CA está incompleta porque está faltando um dos certificados na cadeia:

[root@lockandkey ~]# ipa-cacert-manage renew --external-cert-file=/tmp/LockAndKey_FreeIPA_CA.crt  --external-cert-file=/tmp/dfca.crt --external-cert-file=/tmp/jgca.crt 
Importing the renewed CA certificate, please wait
CA certificate chain in /tmp/LockAndKey_FreeIPA_CA.crt, 
/tmp/dfca.crt, /tmp/jgca.crt is incomplete: missing certificate with subject 
'[email protected],CN=ca.digitalfruition.com,OU=Internal CA,O=Digital Fruition\, LLC,L=Newland,ST=North Carolina,C=US'
The ipa-cacert-manage command failed.

No entanto, esse certificado foi fornecido em um dos --external-cert-fileargumentos. Eu também tentei com um arquivo "CA Bundle" (vários certificados em um arquivo) e o resultado foi o mesmo.

Aprofundando mais, o problema parece estar load_external_certem installutils.py

    trust_chain = list(reversed(nssdb.get_trust_chain(ca_nickname)))
    ca_cert_chain = []
    for nickname in trust_chain:
        cert, subject, issuer = cache[nickname]
        ca_cert_chain.append(cert)
        if subject == issuer:
            break
    else:
        raise ScriptError(
            "CA certificate chain in %s is incomplete: "
            "missing certificate with subject '%s'" %
            (", ".join(files), issuer))

A execução ipa-cacert-manage renewno modo detalhado mostra que ele encontra todos os certificados na cadeia, mas quando chega à [arte onde trust_chainé formado, o trust_chain único contém o certificado FreeIPA e não o restante da cadeia . Consegui reproduzir o cenário desenrolando os comandos e reproduzindo-os no meu terminal. Aqui é onde ele se decompõe:

A FreeIPA ipa-cacert-manage renewestá chamando certutilpara "Imprimir a cadeia de certificados" usando a -Oopção, da seguinte forma:

[root@lockandkey ~]# /usr/bin/certutil -d dbm:/tmp/tmppTphXX -O -n 'CN=Certificate Authority,O=FARCRY.SITEPALETTE.COM' -f /tmp/tmppTphXX/pwdfile.txt
"CN=Certificate Authority,O=FARCRY.SITEPALETTE.COM" [CN=Certificate Authority,O=FARCRY.SITEPALETTE.COM]

Porém certutilnão está imprimindo toda a cadeia, mesmo que o certificado seja assinado por outra CA que esteja no truststore. Você pode ver que certutilmostra a cadeia apropriada quando eu a chamo na CA intermediária:

[root@lockandkey ~]# /usr/bin/certutil -d dbm:/tmp/tmppTphXX -O -n '[email protected],CN=ca.digitalfruition.com,OU=Internal CA,O=Digital Fruition\, LLC,L=Newland,ST=North Carolina,C=US' -f /tmp/tmppTphXX/pwdfile.txt
"[email protected],CN=Joshua Gitlin,OU=ca.josh.gitlin.name,O=Personal Certificate Authority,L=Newland,ST=North Carolina,C=US" [[email protected],CN=Joshua Gitlin,OU=ca.josh.gitlin.name,O=Personal Certificate Authority,L=Newland,ST=North Carolina,C=US]

  "[email protected],CN=ca.digitalfruition.com,OU=Internal CA,O=Digital Fruition\, LLC,L=Newland,ST=North Carolina,C=US" [[email protected],CN=ca.digitalfruition.com,OU=Internal CA,O="Digital Fruition, LLC",L=Newland,ST=North Carolina,C=US]

Então, eu acredito que este é um problema com certutil, mas isso é até onde eu cheguei até agora.

Depurando isso ainda mais, decidi que, por algum motivo certutil, não gosta do certificado que gerei, portanto, pode ser um problema com algo nesse CSR. Outros certificados validam bem...

Estou fazendo algo errado? Qual é a maneira correta de assinar uma Autoridade de Certificação FreeIPA com outra CA interna?

openssl
  • 1 1 respostas
  • 1063 Views

1 respostas

  • Voted
  1. Best Answer
    Josh
    2019-06-16T09:13:03+08:002019-06-16T09:13:03+08:00

    Eu encontrei o problema. O CSR gerado pelo FreeIPA inclui a extensão "X509v3 Authority Key Identifier" definida para o ID da chave privada do FreeIPA. Isso faz certutilcom que acredite que a CA é autoassinada e não segue a cadeia de certificados.

    Ao assinar um CSR do FreeIPA, não copie a extensão X509v3 Authority Key Identifier. Então a validação será bem sucedida.

    (Também: certifique-se de que o certificado de CA assinado usou UTF8 para codificar o nome do assunto; consulte incompatibilidade de codificação do nome do assunto na documentação)

    • 2

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