Encriptación de Contraseña en Maven

27/06/2017

Maven

Maven 2.1.0+ soporta la encriptación de contraseñas de servidor.  Los principales casos de uso que abarca esta solución son:

  • múltiples usuarios comparten el mismo equipo (servidor, equipo de IC)
  • algunos usuarios tienen privilegios para desplegar artefactos Maven en repositoros y otros no.  Esto se aplicat también a operaciones de servidor, que requieran autorización, no solo a despliegues.
  • settings.xml se comparte entre usuarios.

La solución implementada añade las siguientes capacidades:

  • lo usuarios autorizados tienen un fichero settings-security.xml adicional en su carpeta ~/.m2
  • el fichero contiene o bien una contraseña maestra, usada para encriptar otras contraseñas o bien contiene una referencia a la ubicación de otro fichero, posiblemente en un sistema de almacenamiento extraible, que contendrá la contraseña maestra.  Esta contraseña se crea antes usando CLI
  • las entradas server de settings.xml contienen contraseñas y/o passhrases de almacenes de claves encriptadas – esto se realiza usando CLI después de haber creado la contraseña maestra y de haberla almacenado en la ubicación apropiada

Objetivo:

  1. Establecer una contraseña maestra mediante settings-security.xml
  2. Enmascarar las contraseñas en settings.xml de Maven

Pasos:

Supongamos que tenemos varios repositorios con diferentes contraseñas.  Independientemente de cuántas contraseñas tengamos, necesitamos crear una contraseña maestra.

  • Crear una contraseña maestra y encriptarla
  • Crear un fichero ~/.m2/settings-security.xml
  • Encriptar las contraseñas de tu repositorio

 

Paso 1: Crear una contraseña maestra y encriptarla

En este paso crearemos una contraseña maestra y la cencriptaremos.

 

$> mvn --encrypt-master-password  "SomeMadeUpMasterPassword"
{nDpn1bE1vX4HABCDEFGOriBubJhppqAOuy4=}

o

$> mvn --emp "SomeMadeUpMasterPassword

No necesitará recordar o introducir la contraseña maestra sin encriptar nunca más!

Paso 2:  Crear un fichero ~/.m2/settings-security.xml

Copia la contraseña maestra encriptada a este fichero.

 

<settingsSecurity>
<master>{nDpn1bE1vX4HABCDEFGOriBubJhppqAOuy4=}</master>
</settingsSecurity>

(Simplemente crea un fichero settings-security.xml y coloca las etiquetas de arriba junto con tu contraseña encriptada)

Paso 3:  Encriptar las contraseñas de tu repositorio

Puedes encriptar tantas contraseñas como quieras.

mvn --encrypt-password  "YourNEXUSPassword"
{X/Mnlwkfm90HVsaddbsadsadlsakdsalfdlfdhfldsfldslE3LQ8g4=}

o

mvn -ep "YourNEXUSPassword"

Copia y pega en tu fichero settings.xml en la sección server. Quedará algo así:

—————————————————————————————————————————————————–

<settings>

<servers>

<server>
<id>public</id>
<username>ruben.suarez</username>
<password>{X/Mnlwkfm90HVsaddbsadsadlsakdsalfdlfdhfldsfldslE3LQ8g4=}</password>
</server>

</servers>

</settings>

——————————————————————————————————————————————————

EXTRAS:

Escapando el literal llave en tu contraseña (Desde: Maven 2.2.0)

A veces puede ocurrir que tu contraseña (o su versión encriptada) contenta ‘{‘ o ‘}’ como valores literales.  Si añades dicha contraseña tal cual a tu fichero settings.xml, verás que Maven hace cosas extrañas con ella.  Concretamente, Maven tratará todos los caracteres que preceden al literal ‘{‘, y todos los caracteres tras ‘}’, como comentarios.  Obviamente, este no es el comportamiento que quieres en dicha situación.  Lo que necesitamos es un modo de escapar los literales de llave en tu contraseña.

Desde Maven 2.2.0, podemos hacer esto, con el carácter de escape ‘\’.  Si tu contraseña se parece a esto:

jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+{EF1iFQyJQ=

Entonces, el valor que debes añadir a tu settings.xml sería así:

{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+\{EF1iFQyJQ=}

 

Comentarios junto con la encriptación

Ten en cuenta que la contraseña puede contener cualquier tipo de información fuera de las llaves, de modo que el siguiente ejemplo seguirá siendo válido:

 

<settings>
...
  <servers>
...
    <server>
      <id>public</id>
      <username>ruben.suarez</username>
      <password>Contraseña fijada el 2017-03-12, expira el 2017-04-12 {COQLCE6DU6GtcS5P=}</password>
    </server>
...
  </servers>
...
</settings>

vía

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

A %d blogueros les gusta esto: