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.

Anwendung#

In Build-Prozessen können Ressourcen aus HTTPS-gesicherten Quellen bezogen werden. Betroffen sein können:
  • Maven-Artifakte
  • WSDL-Dateien für Web-Services
  • Andere Quellen, auf die mit URLs verwiesen wird

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>
	...

Erklärung: Zunächst

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>