proyecto - pom maven
Frasco de firma de estrategia en proyectos Maven (1)
Yo uso 2 keystores:
- un almacén de claves de desarrollo que se almacena en el SCM. El servidor de CI puede así firmar las instantáneas.
- un almacén de claves de producción con un certificado de producción real emitido por una autoridad de certificación confiable.
La contraseña del almacén de claves de desarrollo está en el pom.xml
. Aquí hay un fragmento de mi pom.xml
:
<plugin>
<artifactId>maven-jarsigner-plugin</artifactId>
<version>1.2</version>
<configuration>
<storetype>${keystore.type}</storetype>
<keystore>${keystore.path}</keystore>
<alias>${keystore.alias}</alias>
<storepass>${keystore.store.password}</storepass>
<keypass>${keystore.key.password}</keypass>
</configuration>
</plugin>
<!--
... rest of the pom.xml ...
-->
<properties>
<keystore.path>cert/temp.keystore</keystore.path>
<keystore.type>JKS</keystore.type>
<keystore.alias>dev</keystore.alias>
<keystore.password>dev_password</keystore.password>
<keystore.store.password>${keystore.password}</keystore.store.password>
<keystore.key.password>${keystore.password}</keystore.key.password>
</properties>
En ~/.m2/settings.xml
codesgining
un perfil de codesgining
:
<settings>
<profiles>
<profile>
<id>codesigning</id>
<properties>
<keystore.path>/opt/prod/prod.keystore</keystore.path>
<keystore.alias>prod</keystore.alias>
<keystore.type>JKS</keystore.type>
<keystore.store.password>${keystore.password}</keystore.store.password>
<keystore.key.password>${keystore.password}</keystore.key.password>
</properties>
</profile>
</profiles>
</settings>
cuando quiero firmar el certificado real, invoco a maven con los -Pcodesigning -Dkeystore.password=strongPassword
. También configuré el maven-release-plugin para usar el perfil de codesigning
.
En realidad, es posible almacenar la contraseña en settings.xml
siempre que solo usted pueda leer el archivo.
Tenemos varios proyectos de maven, que están construidos en el servidor de compilación. En algunos casos queremos firmar nuestros entregables. Usamos el complemento Maven Jarsigner para hacer eso.
Nos enfrentamos a las siguientes preguntas:
- ¿Dónde debemos guardar las contraseñas para firmar?
- ¿Cuál es una buena estrategia para firmar proyectos de expertos?
No queremos poner nuestro almacén de claves en algún lugar de nuestros servidores y codificar una ruta hacia él. Así que simplemente envolvimos este almacén de claves en un frasco y lo subimos como un artefacto a nuestro repositorio interno de expertos. Cuando deseamos firmar un proyecto de Maven , descargamos el artefacto del almacén de claves utilizando el complemento de dependencia de Maven y adjuntamos el objetivo de firma al ciclo de vida de Maven Build. Here hay información más detallada.
Para ocultar las contraseñas del almacén de claves, las colocamos en nuestro archivo corporativo pom.xml
. También pensamos en almacenar contraseñas en settings.xml
en el servidor de compilación.
Cuando un proyecto se crea y firma en una máquina de desarrollador, lo firmamos con un certificado autofirmado. Pero cuando el proyecto se crea y firma en un servidor de compilación, lo firmamos con nuestro certificado "oficial".
¿Es una buena estrategia?