Я использую 2 хранилища ключей:
- хранилище ключей разработки, которое хранится в SCM.Таким образом, сервер CI может подписывать моментальные снимки.
- производственное хранилище ключей с реальным производственным сертификатом, выданным доверенным центром сертификации.
Пароль хранилища ключей разработки находится в pom.xml
.Вот фрагмент моего 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>
В ~/.m2/settings.xml
я определил профиль 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>
, когда я хочу подписать настоящий сертификат, который я вызываюmaven с параметрами -Pcodesigning -Dkeystore.password=strongPassword
.Я также настроил maven-release-plugin для использования профиля codesigning
.
На самом деле можно хранить пароль в settings.xml
, пока файл не доступен для чтения никем.но ты.