Das [Intersult SSL Maven Plugin] bietet die Möglichkeit [HTTPS|http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol_Secure] Zertifikate in die aktuelle [Virtuelle Maschine|Java] 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|Java] 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:

* Maven-Artifakte
* WSDL-Dateien für Web-Services
* Andere Quellen, auf die mit URLs verwiesen wird

Der Import eines Zertifikats unterstützt folgende Parameter:

||Name||Default||Bedeutung
|keyStoreKey|changeit|Passwort für den Java Keystore, falls dieser geändert wurde.
|proxyHost|-|Zu verwendender HTTP-Proxy-Hostname oder IP-Adresse.
|proxyPort|3128|Zu 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
# Zunächst wird der Alias im Keystore gesucht.
# Wird er gefunden, wird mit dem nächsten Zertifikat fortgefahren.
# Falls der Alias nicht gefunden wurde, wird die URL geöffnet.
# Falls sich das Zertifikat bereits im Keystore befindet, wird der Alias geändert.
# 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>
}}}