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