Intersult SSL Maven Plugin

Das Intersult SSL Maven Plugin bietet die Möglichkeit HTTPS Zertifikate in die aktuelle Virtuelle Maschine zu importieren. Das Intersult SSL Maven Plugin ist aus dem Intersult Maven Repository zu beziehen.

Hintergrund#

Natürlich können Zertifikate auch manuell in den Keystore importiert werden, zum Beispiel durch Keytool oder install-cert möglich. Damit ist ein Maven-Projekt nicht mehr portabel und die Konfigurationsfreiheit unterbrochen. Um ein Projekt direkt nach dem Download oder Auschecken aus dem Versionierungssystem lokal bauen kann, braucht man eine Maven-Integration für SSL-Zertifikate. Das Intersult SSL Maven Plugin entspricht genau dieser Lösung.

Anwendung#

In Build-Prozessen können Ressourcen aus HTTPS-gesicherten Quellen bezogen werden. Betroffen sein können:

Der Import eines Zertifikats unterstützt folgende Parameter:

NameDefaultBedeutung
keyStoreKeychangeitPasswort für den Java Keystore, falls dieser geändert wurde.
proxyHost-Zu verwendender HTTP-Proxy-Hostname oder IP-Adresse.
proxyPort3128Zu verwendender HTTP-Proxy-Port.

Die Zertifikate unterstützen URL und Alias. Die URL kann eine File-URL oder jede andere URL darstellen. Die Angabe des Alias ist optional, falls nicht angegeben wird der Dateiname verwendet (ohne Pfad, Domain etc.)

    ...
    <certificates>
	<certificate>
	    <alias>ALIAS</alias>
            <url>URL-TO-CERTIFICATE</url>
	</certificate>
	...
    </certificates>
    ...

Ablauf#

  1. Zunächst wird der Alias im Keystore gesucht.
  2. Wird er gefunden, wird mit dem nächsten Zertifikat fortgefahren.
  3. Falls der Alias nicht gefunden wurde, wird die URL geöffnet.
  4. Falls sich das Zertifikat bereits im Keystore befindet, wird der Alias geändert.
  5. Andernfalls wird das Zertifikat im Keystore importiert.

Hinweis#

Die URL wird nur geöffnet, falls sich das Zertifikat nicht im Keystore befindet. Falls das Plugin standardmäßig ausgeführt wird, wird also kein Netzwerk-Traffic erzeugt.

Beispiele#

Remote Certificates (unsicher)#

Das Plugin kann in der pom.xml folgendermaßen konfiguriert werden:
        ...
	<plugin>
		<groupId>com.intersult</groupId>
		<artifactId>ssl-maven-plugin</artifactId>
		<version>1.0-SNAPSHOT</version>
		<executions>
			<execution>
				<id>import-cert</id>
				<goals>
					<goal>import-cert</goal>
				</goals>
				<configuration>
					<certificates>
						<certificate>
							<url>http://www.startssl.com/certs/ca.crt</url>
						</certificate>
						<certificate>
							<url>http://www.startssl.com/certs/sub.class1.server.ca.crt</url>
						</certificate>
					</certificates>
				</configuration>
			</execution>
		</executions>
	</plugin>
	...

Lokale Certificates#

Sicherer ist es, die Zertifikate lokal abzulegen, um eine Manipulation zu vermeiden. Darin liegt letzten Endes der Sinn von SSL:
<configuration>
	<certificates>
		<certificate>
			<url>file:/${basedir}/src/main/resources/cert/ca.pem</url>
		</certificate>
		<certificate>
			<url>file:/${basedir}/src/main/resources/cert/sub.class1.server.ca.pem</url>
		</certificate>
	</certificates>
</configuration>

Proxy#

Soll ein Proxy verwendet werden, können folgende Einträge in die Configuration gemacht werden:
        ...
	<configuration>
	        <proxyHost>someproxy</proxyHost>
	        <proxyPort>3128</proxyPort>
	        ...
	</configuration>