Jenkins, Subversion y los certificados SSL

Trando de automatizar la release de un proyecto Maven, nos hemos encontrado con un problema con los certificados y Subversion. El problema es que Subversion no acepta el certificado de SidelabCode. Concretamente el error es el siguiente:

Error validating server certificate for 'https://code.sidelab.es:443':
- The certificate is not issued by a trusted authority. Use the
fingerprint to validate the certificate manually!
Certificate information:
- Hostname: code.sidelab.es
- Valid: from Fri, 09 Sep 2011 13:42:29 GMT until Mon, 06 Sep 2021 13:42:29 GMT
- Issuer: Web, Sidelab, ES, Madrid
- Fingerprint: 59:6f:56:07:f5:a8:bf:fe:7a:57:75:37:a8:57:76:8c:0f:9f:6f:9d
(R)eject, accept (t)emporarily or accept (p)ermanently? svn: Commit failed (details follow):
svn: OPTIONS of 'https://code.sidelab.es/svn/optsicomres/res/trunk': Server certificate verification failed: issuer is not trusted (https://code.sidelab.es)
Error validating server certificate for 'https://code.sidelab.es:443':
- The certificate is not issued by a trusted authority. Use the
fingerprint to validate the certificate manually!
Certificate information:
- Hostname: code.sidelab.es
- Valid: from Fri, 09 Sep 2011 13:42:29 GMT until Mon, 06 Sep 2021 13:42:29 GMT
- Issuer: Web, Sidelab, ES, Madrid
- Fingerprint: 59:6f:56:07:f5:a8:bf:fe:7a:57:75:37:a8:57:76:8c:0f:9f:6f:9d
(R)eject, accept (t)emporarily or accept (p)ermanently? svn: OPTIONS of 'https://code.sidelab.es/svn/optsicomres/res': Server certificate verification failed: issuer is not trusted (https://code.sidelab.es)

En principio el problema se soluciona accediendo a la máquina y haciendo cualquier operación a mano con subversion desde el mismo usuario con el que se ejecuta svn desde Jenkins. Sin embargo, la cosa no es tan sencilla en ocasiones, porque es posible que no podamos utilizar directamente el usuario para esto de forma interactiva. Esto se da cuando el usuario que ejecuta Jenkins es un usuario sin login como por ejemplo el usuario tomcat o www-data. Así que voy a dejar aquí un método genérico que debería funcionar en (casi) cualquier caso:

  • Conéctate a la máquina con un usuario cualquiera.
  • Ejecuta alguna operación sobre el repositorio, por ejemplo svn info https://miservidor/path/repo.
  • Acepta permanentemente el certificado pulsando “p”.
  • Copia el fichero generado en la carpeta .subversion/auth/svn.ssl.servers/ dentro del home del usuario a la misma estructura de carpetas dentro del home del usuario con el que se ejecuta Jenkins.

Con este mecanismo he sido capaz de solucionar el problema, y ahora se pueden hacer commits y cualquier tipo de operación sobre el repositorio de forma automática desde Jenkins sin problemas.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s