[Geoserver-users] Geoserver war file gives EncryptionOperationNotPossibleException on linux server

Dear Mailinglist,

We have found a bug in Geoserver 2.3.4, when trying to put the war file on a tomcat 6 server no a linux machine.
The war file is not unpacked because of security issues, since we have not installed the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files in this Java Virtual Machine, according to the stacktrace.

See the stacktrace below:

SEVERE: Exception sending context initialized event to listener instance of class org.geoserver.platform.GeoServerContextLoaderListener
java.lang.RuntimeException: org.jasypt.exceptions.EncryptionOperationNotPossibleException: Encryption raised an exception. A possible cause is you are using strong encryption algorithms and you have not installed the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files in this Java Virtual Machine
         at org.geoserver.security.GeoServerSecurityManager.onApplicationEvent(GeoServerSecurityManager.java:326)
         at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97)
         at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:324)
         at org.geoserver.platform.GeoServerContextLoaderListener.contextInitialized(GeoServerContextLoaderListener.java:25)
         at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
         at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
         at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
         at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
         at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
         at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
         at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:563)
         at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1399)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
         at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
         at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:762)
         at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1500)
         at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:252)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
         at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
         at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
         at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776)
         at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705)
         at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
         at java.lang.Thread.run(Thread.java:662)
Caused by: org.jasypt.exceptions.EncryptionOperationNotPossibleException: Encryption raised an exception. A possible cause is you are using strong encryption algorithms and you have not installed the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files in
this Java Virtual Machine
         at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.handleInvalidKeyException(StandardPBEByteEncryptor.java:999)
         at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.encrypt(StandardPBEByteEncryptor.java:868)
         at org.geoserver.security.password.URLMasterPasswordProvider.encode(URLMasterPasswordProvider.java:113)
         at org.geoserver.security.password.URLMasterPasswordProvider.doSetMasterPassword(URLMasterPasswordProvider.java:90)
         at org.geoserver.security.MasterPasswordProvider.setMasterPassword(MasterPasswordProvider.java:46)
         at org.geoserver.security.GeoServerSecurityManager.migrateFrom21(GeoServerSecurityManager.java:1917)
         at org.geoserver.security.GeoServerSecurityManager.onApplicationEvent(GeoServerSecurityManager.java:323)
   ... 38 more
Aug 1, 2013 1:57:12 PM org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext

We have solved the problem by deploying Geoserver 2.3.4 on localhost and copy the security directory to location:
C:\Programs\apache-tomcat-6.0.37-windows-x64\apache-tomcat-6.0.37\webapps\geoserver\data\

When this is done, Geoserver works also on linux server without JCE (Java Cryptography Extension).

Have a nice day!

Anne