For some automated testing, I am configuring virtualhosts on an apache reverse proxy. I would like the virtualhosts to automatically add an x509 client cert to the request to authenticate on the remote server
I have tried setting:
RequestHeader set SSL_CLIENT_CERT file('/path/to/vert.p12')
But it seems that the tomcat instance on the remote server is unable to read the p12 file
For some context I am running a Spring Boot app using the built in tomcat instance. The p12 file is password protected.
My filter chain on the remote throws
0 WARN org.apache.catalina.valves.SSLValve - Failed to process certificate string [-----BEGIN CERTIFICATE-----
ycert.p12')] to create a java.security.cert.X509Certificate object
java.security.cert.CertificateException: Could not parse certificate: java.io.IOException: Incomplete data
at sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:110)
at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:339)
at org.apache.catalina.valves.SSLValve.invoke(SSLValve.java:159)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: Incomplete data
at sun.security.provider.X509Factory.readOneBlock(X509Factory.java:612)
at sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:96)