IDM Dogtag – Your company’s own personal CA.

Viva a todos,

No seguimento dos posts que tenho feito ultimamente em com utilizar o IPA/IDM tenho desprezado uma componente extremamente útil e parte intrínseca da stack: O serviço PKI dogtag.

Este servico, community driven e patrocinado pela Red Hat, trás para o domínio do enterprise PKI o opensource.

Na pratica, uma farm IDM, pode assinar certificados para si e para os sistemas que a englobam (Recordem-se do post original do IDM onde falo em self-signed certificate).

Este post é precisamente para ensinar como gerar, gerir e revogar certificados dados a sites (e serviços) utilizando o dogtag.

Como sempre, todo o procedimento assenta na pressuposição que já tem uma stack IDM/IPA completamente funcional.

Em primeiro caso é necessário nos autenticarmos contra o IPA/IDM.

Em primeiro lugar é necessário nos autenticarmos:

# kinit admin

Em seguida, é necessário criar o host em DNS referente ao host que irá receber o certificado (neste caso site.nuneshiggs.com):

# ipa dnsrecord-add nuneshiggs.com site –a-rec 194.65.3.20

Em segundo lugar, temos de adicionar host em si ao IPA sem efetuar um enrolment:

# ipa host-add site.nuneshiggs.com

Adicionamos o serviço de HTTP:

# ipa service-add HTTP/site.nuneshiggs.com

Associamos ao serviço quem pode fazer pedidos para o mesmo (neste caso o host ca.net.xpto – Atenção que o host tem forçosamente de existir e ter um endereço resolvível tanto em A record/cname ou como em PTR).
Normalmente é o host de onde estamos a efetuar estes comandos, e que faz parte do IDM/IPA.

# ipa service-add-host –hosts=ca.net.xpto HTTP/site.nuneshiggs.com

Após iremos efetuar o pedido do certificado a colocar no nosso apache existente em site.nuneshiggs.com

# ipa-getcert request -r -f /etc/pki/tls/certs/site.nuneshiggs.com.crt -k /etc/pki/tls/private/site.nuneshiggs.com.key  -N CN=site.nuneshiggs.com -D site.nuneshiggs.com -K HTTP/site.nuneshiggs.com

Para vermos o resultado do processo em si podemos efetuar:

# ipa-getcert list

No final deverá estar o estado do vosso certificado:

Request ID ‘20151202121433’:
    status: MONITORING
    stuck: no
    key pair storage: type=FILE,location=’/etc/pki/tls/private/site.nuneshiggs.com.key’
    certificate: type=FILE,location=’/etc/pki/tls/certs/site.nuneshiggs.com.crt’
    CA: IPA
    issuer: CN=Certificate Authority,O=NET.XPTO
    subject: CN=site.nuneshiggs.com,O=NET.XPTO
    expires: 2017-12-02 12:14:37 UTC
    dns: site.nuneshiggs.com
    principal name: HTTP/[email protected]
    key usage: digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
    eku: id-kp-serverAuth,id-kp-clientAuth
    pre-save command:
    post-save command:
    track: yes
    auto-renew: yes

Nota: Todos os comandos estão a ser feitos de um dos nós do IDM e estou a assumir que a zona de DNS referente aos FQDN’s referente ao CN do certificado já existe em IPA.

Finalmente e após copiarmos os novos certificados para o destino e configurar o apache para os utilizar, teremos de adicionar a CA do nosso IDM/IPA como uma válida CA a utilizar.
Para tal, deveremos obter o certificado e importar ele no sistema que iremos utilizar:

# mkdir /etc/ipa
# wget -O /etc/ipa/ca.crt wget http://idm.net.xpto/ipa/config/ca.crt

Importar  certificado de CA que pode ser feito de duas formas:

Usando o certutil (NSS):
    # certutil -A -d /etc/pki/nssdb -n ‘IPA CA’ -t CT,C,C -a -i /etc/ipa/ca.crt

Usando o openssl:
   #  openssl x509 -in /etc/ipa/ca.crt -text >> /etc/pki/tls/certs/ca-bundle.crt
Para finalizarmos este post, falta a secção de revogação dos certificados:

Em primeiro lugar, devemos encontrar qual o certificado a revogar:

# ipa-getcert list

No output teremos:

Request ID ‘20151202121433‘:
    status: MONITORING
    stuck: no
    key pair storage: type=FILE,location=’/etc/pki/tls/private/site.nuneshiggs.com.key’
    certificate: type=FILE,location=’/etc/pki/tls/certs/site.nuneshiggs.com.crt’
    CA: IPA
    issuer: CN=Certificate Authority,O=NET.XPTO
    subject: CN=site.nuneshiggs.com,O=NET.XPTO
    expires: 2017-12-02 12:14:37 UTC
    dns: site.nuneshiggs.com
    principal name: HTTP/[email protected]
    key usage: digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
    eku: id-kp-serverAuth,id-kp-clientAuth
    pre-save command:
    post-save command:
    track: yes
    auto-renew: yes

Finalmente e como exemplo executaremos o comando de revogação de um certificado:

# ipa cert-revoke –revocation-reason=1 0xb
revoked: True
status: 0

Nota: o serial number que ele irá pedir é o obtido pelo ipa-getcert list.

Concluindo, o dogtag é em um sistema completo de gestão de PKI e CA, com várias vantagens sobre produtos concorrentes, tendo em conta que é bundled grátis com o IDM/IPA.
Pode ser usado na versão do IDM em produção, havendo já várias entidades privadas e publicas que o utilizam em produção.

Caso tenham alguma duvida, já sabem como me contactar.

Abraço
Nuno