Para que los programas no se quejen cuando se les presenta un certificado firmado por una CA privada, es necesario instalar el certificado de dicha entidad en los mismos programas para que estos reconozcan a dicha CA.

Browsers y otros clientes

CAcert que es una Autoridad de Certificación que extiende certificados gratuitos tiene información en su wiki acerca de como se configura su propio certificado en navegadores y otros clientes y en distintas plataformas.

openssl en Debian/Ubuntu

En Debian y Ubuntu hay que tener el paquete ca-certificates:

sudo apt-get install ca-certificates

luego hacer lo siguiente:

Supongamos que tenemos el certificado de la CA en un archivo myCA-cert.crt (la extensión tiene que ser .crt):

# variables de entorno
export CACERT="myCA-cert.crt"
export CACERT_DIR="/usr/share/ca-certificates"

# creamos (si no existía) un subdirectorio para nuestros certificados locales
sudo mkdir -pv ${CACERT_DIR}/LOCAL
# copiamos el certificado de la CA allí
sudo cp -v ${CACERT} ${CACERT_DIR}/LOCAL

# reconfiguramos el paquete ca-certificates para que incorpore el (los) certificados nuevos
sudo dpkg-reconfigure ca-certificates

Esto nos va a mostrar una pantalla como la siguiente:

dpkg-reconfig-ca-certs-01.png

preguntándonos si queremos confiar en nuevos certificados.

Para mayor seguridad, contestamos ask para que nos muestre un listado de los certificados y nos de a elegir:

dpkg-reconfig-ca-certs-02.png

Allí aparece nuestro nuevo certificado ([ ] LOCAL/myCA-cert.crt) sin seleccionar.

Lo seleccionamos: ([*] LOCAL/myCA-cert.crt)

damos <OK> y aparecerá el siguiente mensaje:

Updating certificates in /etc/ssl/certs....done.

a partir de este momento, debería reconocer la CA privada al igual que todas las demás.

Subversion

Editar el archivo /etc/subversion/servers (aunque se llama servers, también lo usa el cliente) y agregarle al final:

ssl-authority-files = /etc/ssl/certs/myCA-cert.pem

Si acabamos de configurarlo como se indica arriba, podemos hacer lo siguiente:

CACERT_BASE=`basename ${CACERT} .crt`
PEMFILE=/etc/ssl/certs/${CACERT_BASE}.pem
SVNCONFIG=/etc/subversion/servers
TMPCONFIG=/tmp/svn.servers.$$
TMPFILE=/tmp/svn.ssl.$$

# buscamos la línea ssl-authority-files (si existe, si no la creamos vacía)
if ! grep '^ *ssl-authority-files *=' ${SVNCONFIG} > ${TMPFILE} ; then
  echo "ssl-authority-files =" > ${TMPFILE}
fi

# ponemos el resto del archivo (todo menos esa línea) en otro archivo temporario:
grep -v '^ *ssl-authority-files *=' ${SVNCONFIG} > ${TMPCONFIG}

# le agregamos el nuevo archivo a la línea que teníamos o generamos
sed -i.ORI -e "s:$: ${PEMFILE}:" ${TMPFILE}

# la agregamos al final del archivo de configuración de subversion
sudo sh -c "cat ${TMPCONFIG} ${TMPFILE} > ${SVNCONFIG}"

OpenSsl/InstalarUnCertificadoDeAutoridadDeCertificación (última edición 2009-09-01 11:08:18 efectuada por MarianoAbsatz)