KB Article #177690
CRL (Dynamic) filter produces "cannot decode CRL" error on large, valid CRL
Problem
* A large, valid CRL may result in an exception like the following when referenced by a CRL (Dynamic) filter:
ERROR 19/Nov/2015:15:12:32.463 [1b04] java exception: java.security.cert.CertificateException: cannot decode CRL at com.vordel.security.openssl.OSSLCertificateFactorySpi.engineGenerateCRLFromDER(Native Method) at com.vordel.security.openssl.OSSLCertificateFactorySpi.engineGenerateCRL(OSSLCertificateFactorySpi.java:59) at java.security.cert.CertificateFactory.generateCRL(CertificateFactory.java:497) at com.vordel.circuit.cert.CRLResponderProcessor.startCRLRetrieval(CRLResponderProcessor.java:156) at com.vordel.circuit.cert.CRLResponderProcessor.filterAttached(CRLResponderProcessor.java:102) at com.vordel.circuit.cert.CRLValidationProcessor.filterAttached(CRLValidationProcessor.java:25) at com.vordel.circuit.FilterContainer.configureFilter(FilterContainer.java:42) at com.vordel.circuit.Circuit.createContainer(Circuit.java:271) at com.vordel.circuit.Circuit.loadFilter(Circuit.java:215) at com.vordel.circuit.Circuit.loadFilter(Circuit.java:219) at com.vordel.circuit.Circuit.configure(Circuit.java:184) at com.vordel.circuit.CircuitCache.getCircuit(CircuitCache.java:61) at com.vordel.circuit.CircuitChainFilter.resolveCircuits(CircuitChainFilter.java:68) at com.vordel.circuit.CircuitChainProcessor.attach(CircuitChainProcessor.java:25) at com.vordel.dwe.http.HTTPPlugin.configureCircuits(HTTPPlugin.java:129) at com.vordel.dwe.http.HTTPPlugin.configure(HTTPPlugin.java:83) at com.vordel.dwe.NativeModule.configure(NativeModule.java:146) at com.vordel.dwe.NativeModule.configure(NativeModule.java:60) at com.vordel.precipitate.SolutionPack$ConfigModule.configure(SolutionPack.java:509) at com.vordel.precipitate.SolutionPack.loadModules(SolutionPack.java:628) at com.vordel.dwe.Service.refresh(Service.java:437) at com.vordel.api.configuration.ConfigurationService.updateConfiguration(ConfigurationService.java:87) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) INFO 19/Nov/2015:15:12:32.811 [1b04] unload 1 modules from Axway-12-DirectoryService ERROR 19/Nov/2015:15:12:35.368 [2798] There was a problem loading the CRL cannot decode CRL
Resolution
-- Large CRLs can use more memory than is permitted by the maximum memory per request setting, which can result in errors like that above. To resolve this, the memory setting can be increased by using the updateMaxInOutLen.py script to modify the memory settings for an instance management interface in mgmt.xml.
For further details, read the script's help text by running the following command from the /samples/scripts/ folder: ./run.sh config/updateMaxInOutLen.py --help
Be warned that if you set an invalid value via that script (e.g. more memory than can actually be allocated), the server may fail to start up afterwards and you will not be able to run the script again, as it can only run when the servers are up. Make a backup before using that script if there is any doubt.