diff --git a/org.lamport.tla.toolbox.jnlp/keystore b/keystore
similarity index 100%
rename from org.lamport.tla.toolbox.jnlp/keystore
rename to keystore
diff --git a/org.lamport.tla.toolbox.jnlp/pom.xml b/org.lamport.tla.toolbox.jnlp/pom.xml
index f888d99a8ed0a15a6dda74890bcfafc82c88bfb2..7fa2501855766dbe6e5a1b7373f74616da3aef20 100644
--- a/org.lamport.tla.toolbox.jnlp/pom.xml
+++ b/org.lamport.tla.toolbox.jnlp/pom.xml
@@ -14,15 +14,6 @@
   <version>1.0.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
-  <!-- These properties define a dummy certificate store that is used unless the developer passes overwrites to maven -->
-  <!-- see http://stackoverflow.com/a/3620575 for how such an overwrite would look like. -->  
-  <properties>
-  	<keystore.path>keystore</keystore.path>
-	<keystore.alias>msr</keystore.alias>
-    <keystore.store.password>secret</keystore.store.password>
-    <keystore.key.password>secret</keystore.key.password>
-  </properties>
-
 	<!-- Create a manual dependency towards the tlatools project. It creates 
 		the tla2tools.jar that is signed here. Without the dependency, a concurrent 
 		build will fail to sign when tlatools is built after this pom. -->
diff --git a/pom.xml b/pom.xml
index a2b465c2b7ae46366cc5548dccbbfe708ac338a1..7bbcbe199bf40e36756e2f41f37d9f7c7fc17868 100644
--- a/pom.xml
+++ b/pom.xml
@@ -91,6 +91,24 @@
 		<!-- no default here -->
 		<tycho.test.vm.argline>-Xmx500m -Xdebug -Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n</tycho.test.vm.argline>
 		<tycho.test.vm.useUiThread>false</tycho.test.vm.useUiThread>
+
+        <!-- These properties define a dummy certificate store that is used unless the developer passes overwrites to maven -->
+        <!-- see http://stackoverflow.com/a/3620575 for how such an overwrite would look like. -->  
+  	    <keystore.path>${project.basedir}/../keystore</keystore.path>
+	    <keystore.alias>msr</keystore.alias>
+        <keystore.store.password>secret</keystore.store.password>
+        <keystore.key.password>secret</keystore.key.password>
+        <!-- 
+          Set to the values below if the signature should include a timestamp. You want this for a release build 
+          because a timestamp makes sure the signature remains valid after the certificate expired.
+          If you activate RFC3161, make sure the machine running the build has sufficient entropy available. Otherwise
+          expect to see intermittent hangs when the build attempts to sign a jar. On Linux the haveged and rng-tools
+          can help to collect entropy. 
+          <tsa.flag>-tsa</tsa.flag>
+          <tsa.server>http://timestamp.comodoca.com</tsa.server>
+		 -->
+        <tsa.flag></tsa.flag>
+        <tsa.server></tsa.server>
 	</properties>
 
 	<build>
@@ -122,6 +140,33 @@
 				    </archive>
 			    </configuration>
 			</plugin>
+			<plugin>
+			    <groupId>org.apache.maven.plugins</groupId>
+			    <artifactId>maven-jarsigner-plugin</artifactId>
+			    <version>1.4</version>
+			        <configuration>
+				        <keystore>${keystore.path}</keystore>
+				        <alias>${keystore.alias}</alias>
+				        <storepass>${keystore.store.password}</storepass>
+				        <keypass>${keystore.key.password}</keypass>
+			           	<verbose>false</verbose>
+			           	<arguments>
+			 			  <!-- Embed a current timestamp in the signed content (file). With this timestamp, 
+							the signature of the content remains valid *after* the signing certificate 
+							expired. -->
+			              <argument>${tsa.flag}</argument>
+			              <argument>${tsa.server}</argument>
+			            </arguments>
+			        </configuration>
+			        <executions>
+			            <execution>
+			                <id>sign</id>
+			                <goals>
+			                    <goal>sign</goal>
+			                </goals>
+			            </execution>
+			         </executions>
+			</plugin>
     			<plugin>
 				<groupId>org.eclipse.tycho</groupId>
 				<artifactId>target-platform-configuration</artifactId>