Re: OCSP with Tomcat Native 1.3.4 fails

Mark Thomas <[email protected]> Fri, 16 Jan 2026 10:22:42 +0000
Newsgroups gmane.comp.jakarta.tomcat.user
Message-ID <[email protected]>
On 16/01/2026 09:48, Mark Thomas wrote:
> On 15/01/2026 20:33, [email protected] wrote:
>> Thank you Mark.
>>
>> Do you mind to share some more detail? I can't see a bugzilla...
> 
> All the discussion is on the dev list.

As are the details for the 1.3.5 release candidate that is now available 
for testing.

Mark

> 
> Mark
> 
>>
>>> Am 15.01.2026 um 19:03 schrieb Mark Thomas <[email protected]>:
>>>
>>> There is an issue with Tomcat Native 1.3.4, OCSP and the APR/Native 
>>> connector.
>>>
>>> Your options are:
>>> - switch back to 1.3.1
>>> - switch to NIO or NIO2 rather than APR
>>> - disable OCSP (set ocspEnabled="false" on the SSLHostConfig)
>>>
>>> Mark
>>>
>>>
>>> On 15/01/2026 17:16, [email protected] <mailto:[email protected]> wrote:
>>>> BTW:
>>>>  From the release notes:
>>>>   * Add: .gif Add the ability to configure the OCSP checks to soft-fail
>>>>     - i.e. if the responder cannot be contacted or fails to respond 
>>>> in a
>>>>     timely manner the OCSP check will not fail. (markt)
>>>>   * Add: .gif Add a configurable timeout to the writing of OCSP 
>>>> requests
>>>>     and reading of OCSP responses. (markt)
>>>>   * Add: .gif Add the ability to control the OCSP verification flags.
>>>>     (markt)
>>>> How can I configure the new settings? Or control the OCSP 
>>>> verification flags?
>>>> Thanks again.
>>>>> Am 15.01.2026 um 18:11 schrieb [email protected]:
>>>>>
>>>>> Hi all.
>>>>>
>>>>> I've compiled the newest version of tomcat native in my tomcat 
>>>>> 9.0.113 docker container.
>>>>>
>>>>> Now authentication with a client certificate fails. This has been 
>>>>> working fine with 1.3.1/2.0.9.
>>>>> And the same setup still works with the JSSE connector.
>>>>>
>>>>> As I read in the release notes there have been changes in the 
>>>>> verification of OCSP responses. My assumption, as the certs and 
>>>>> client have not changed, would be that there is something missing 
>>>>> or a bug. Maybe my certs are wrong, but JSSE is not complaining...
>>>>>
>>>>> Is there anything I can try to debug or get more information within 
>>>>> tomcat?
>>>>>
>>>>> Thank You
>>>>>
>>>>> Peter
>>>>>
>>>>> Find my logs and config below:
>>>>>
>>>>> ▶ curl -v --http1.1 https://tomcat.fritz.box:8843 --cacert 
>>>>> chain.logopk.crt.pem --cert client.crt:xxx --cert-type PEM --key 
>>>>> client.key
>>>>> * Host tomcat.fritz.box:8843 was resolved.
>>>>> * IPv6: (none)
>>>>> * IPv4: 192.168.126.130
>>>>> *   Trying 192.168.126.130:8843...
>>>>> * ALPN: curl offers http/1.1
>>>>> * TLSv1.3 (OUT), TLS handshake, Client hello (1):
>>>>> * SSL Trust Anchors:
>>>>> *   CAfile: chain.logopk.crt.pem
>>>>> * TLSv1.3 (IN), TLS handshake, Server hello (2):
>>>>> * TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
>>>>> * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
>>>>> * TLSv1.3 (IN), TLS handshake, Request CERT (13):
>>>>> * TLSv1.3 (IN), TLS handshake, Certificate (11):
>>>>> * TLSv1.3 (IN), TLS handshake, CERT verify (15):
>>>>> * TLSv1.3 (IN), TLS handshake, Finished (20):
>>>>> * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
>>>>> * TLSv1.3 (OUT), TLS handshake, Certificate (11):
>>>>> * TLSv1.3 (OUT), TLS handshake, CERT verify (15):
>>>>> * TLSv1.3 (OUT), TLS handshake, Finished (20):
>>>>> * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / 
>>>>> X25519MLKEM768 / RSASSA-PSS
>>>>> * ALPN: server accepted http/1.1
>>>>> * Server certificate:
>>>>> *   subject: C=DE; ST=Hessen; L=Dreieich; O=logo; OU=logo; 
>>>>> CN=tomcat.fritz.box
>>>>> *   start date: Jan 14 22:20:04 2026 GMT
>>>>> *   expire date: Apr 14 22:21:04 2026 GMT
>>>>> *   issuer: C=DE; ST=Hessen; O=logo; OU=logo; CN=logo Intermediate 
>>>>> CA 2025; emailAddress=logo@xxx
>>>>> *   Certificate level 0: Public key type RSA (4096/152 Bits/ 
>>>>> secBits), signed using sha512WithRSAEncryption
>>>>> *   Certificate level 1: Public key type RSA (4096/152 Bits/ 
>>>>> secBits), signed using sha512WithRSAEncryption
>>>>> *   subjectAltName: "tomcat.fritz.box" matches cert's 
>>>>> "tomcat.fritz.box"
>>>>> * SSL certificate verified via OpenSSL.
>>>>> * Established connection to tomcat.fritz.box (192.168.126.130 port 
>>>>> 8843) from 192.168.126.1 port 54222
>>>>> * using HTTP/1.x
>>>>>> GET / HTTP/1.1
>>>>>> Host: tomcat.fritz.box:8843
>>>>>> User-Agent: curl/8.18.0
>>>>>> Accept: */*
>>>>>>
>>>>> * Request completely sent off
>>>>> * TLSv1.3 (IN), TLS alert, unknown CA (560):
>>>>> * OpenSSL SSL_read: OpenSSL/3.6.0: error:0A000418:SSL 
>>>>> routines::tlsv1 alert unknown ca, errno 0
>>>>> * closing connection #0
>>>>> curl: (56) OpenSSL SSL_read: OpenSSL/3.6.0: error:0A000418:SSL 
>>>>> routines::tlsv1 alert unknown ca, errno 0
>>>>>
>>>>> as comparison the same request with native 1.3.1:
>>>>>
>>>>> ▶ curl -v --http1.1 https://tomcat.fritz.box:8843 --cacert 
>>>>> chain.logopk.crt.pem --cert client.crt:xxx --cert-type PEM --key 
>>>>> client.key
>>>>> * Host tomcat.fritz.box:8843 was resolved.
>>>>> * IPv6: (none)
>>>>> * IPv4: 192.168.126.130
>>>>> *   Trying 192.168.126.130:8843...
>>>>> * ALPN: curl offers http/1.1
>>>>> * TLSv1.3 (OUT), TLS handshake, Client hello (1):
>>>>> * SSL Trust Anchors:
>>>>> *   CAfile: chain.logopk.crt.pem
>>>>>
>>>>> * TLSv1.3 (IN), TLS handshake, Server hello (2):
>>>>> * TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
>>>>> * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
>>>>> * TLSv1.3 (IN), TLS handshake, Request CERT (13):
>>>>> * TLSv1.3 (IN), TLS handshake, Certificate (11):
>>>>> * TLSv1.3 (IN), TLS handshake, CERT verify (15):
>>>>> * TLSv1.3 (IN), TLS handshake, Finished (20):
>>>>> * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
>>>>> * TLSv1.3 (OUT), TLS handshake, Certificate (11):
>>>>> * TLSv1.3 (OUT), TLS handshake, CERT verify (15):
>>>>> * TLSv1.3 (OUT), TLS handshake, Finished (20):
>>>>> * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / 
>>>>> X25519MLKEM768 / RSASSA-PSS
>>>>> * ALPN: server accepted http/1.1
>>>>> * Server certificate:
>>>>> *   subject: C=DE; ST=Hessen; L=Dreieich; O=logo; OU=logo; 
>>>>> CN=tomcat.fritz.box
>>>>> *   start date: Jan 14 22:20:04 2026 GMT
>>>>> *   expire date: Apr 14 22:21:04 2026 GMT
>>>>> *   issuer: C=DE; ST=Hessen; O=logo; OU=logo; CN=logo Intermediate 
>>>>> CA 2025; emailAddress=logo@xxx
>>>>> *   Certificate level 0: Public key type RSA (4096/152 Bits/ 
>>>>> secBits), signed using sha512WithRSAEncryption
>>>>> *   Certificate level 1: Public key type RSA (4096/152 Bits/ 
>>>>> secBits), signed using sha512WithRSAEncryption
>>>>> *   subjectAltName: "tomcat.fritz.box" matches cert's 
>>>>> "tomcat.fritz.box"
>>>>> * SSL certificate verified via OpenSSL.
>>>>> * Established connection to tomcat.fritz.box (192.168.126.130 port 
>>>>> 8843) from 192.168.126.1 port 54529
>>>>> * using HTTP/1.x
>>>>>> GET / HTTP/1.1
>>>>>> Host: tomcat.fritz.box:8843
>>>>>> User-Agent: curl/8.18.0
>>>>>> Accept: */*
>>>>>>
>>>>> * Request completely sent off
>>>>> * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
>>>>> * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
>>>>> < HTTP/1.1 200
>>>>> < Strict-Transport-Security: max-age=31536000
>>>>> < X-Frame-Options: DENY
>>>>> < X-Content-Type-Options: nosniff
>>>>> < X-XSS-Protection: 1; mode=block
>>>>> < Content-Type: text/html;charset=ISO-8859-1
>>>>> < Content-Length: 16
>>>>> < Date: Thu, 15 Jan 2026 17:05:10 GMT
>>>>> < Server: Apache Tomcat
>>>>> <
>>>>>
>>>>> This is Tomcat
>>>>> * Connection #0 to host tomcat.fritz.box:8843 left intact
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> testssl.sh:
>>>>>
>>>>> Certificate Validity (UTC)   89 >= 60 days (2026-01-14 22:20 --> 
>>>>> 2026-04-14 22:21)
>>>>> ETS/"eTLS", visibility info  not present
>>>>> Certificate Revocation List  http://crl.fritz.box:8881/step.crl.pem
>>>>> OCSP URI                     http://ocsp.fritz.box:8889
>>>>> OCSP stapling                not offered
>>>>> OCSP must staple extension   --
>>>>>
>>>>>
>>>>> <Connector port="8443"
>>>>>            protocol="org.apache.coyote.http11.Http11Nio2Protocol"
>>>>>            
>>>>> sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"
>>>>>            allowTrace="false"
>>>>>            maxThreads="150"
>>>>>            SSLEnabled="true"
>>>>>            compression="off"
>>>>>            scheme="https"
>>>>>            server="Apache Tomcat"
>>>>>            secure="true"
>>>>>            defaultSSLHostConfigName="${hostname:-docker.fritz.box}" >
>>>>>     <UpgradeProtocol 
>>>>> className="org.apache.coyote.http2.Http2Protocol" compression="on" />
>>>>>     <SSLHostConfig
>>>>>               hostName="tomcat.fritz.box"
>>>>>               honorCipherOrder="true"
>>>>>               protocols="+TLSv1.2,+TLSv1.3"
>>>>>               certificateVerification="none"
>>>>>               certificateRevocationListFile="${catalina.base}/conf/ 
>>>>> ssl/ ca-bundle-client.crl"
>>>>>               truststoreFile="${catalina.base}/conf/ssl/cacerts.jks"
>>>>>               truststorePassword="changeit"
>>>>>               
>>>>> ciphers="TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:!kECDH:ECDH+AESGCM:ECDH+CHACHA20:!aNULL:!SHA1:!AESCCM" >
>>>>>        <Certificate certificateKeystoreFile="${catalina.base}/conf/ 
>>>>> ssl/ tomcat.p12"
>>>>>                     certificateKeystorePassword="changeit"
>>>>>                     certificateKeyAlias="tomcat"
>>>>>                     type="RSA" />
>>>>>     </SSLHostConfig>
>>>>>   </Connector>
>>>>>
>>>>>   <Connector port="8843"
>>>>>              protocol="org.apache.coyote.http11.Http11Nio2Protocol"
>>>>>              
>>>>> sslImplementationName="org.apache.tomcat.util.net.openssl.OpenSSLImplementation"
>>>>>              server="Apache Tomcat"
>>>>>              allowTrace="false"
>>>>>              maxThreads="150"
>>>>>              SSLEnabled="true"
>>>>>              defaultSSLHostConfigName="${hostname:- 
>>>>> docker.fritz.box}" >
>>>>>     <UpgradeProtocol 
>>>>> className="org.apache.coyote.http2.Http2Protocol" compression="on" />
>>>>>     <SSLHostConfig honorCipherOrder="true" 
>>>>> insecureRenegotiation="false"
>>>>>                    hostName="tomcat.fritz.box"
>>>>>                    protocols="+TLSv1.2,+TLSv1.3"
>>>>>                    certificateVerification="required"
>>>>>                    caCertificateFile="${catalina.base}/conf/ssl/ 
>>>>> chain.logopk.crt.pem"
>>>>>                    disableCompression="true"
>>>>>                    disableSessionTickets="true"
>>>>>                    
>>>>> ciphers="TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:!kECDH:ECDH+AESGCM:ECDH+CHACHA20:!aNULL:!SHA1:!AESCCM"
>>>>>                    certificateRevocationListFile="${catalina.base}/ 
>>>>> conf/ssl/ca-bundle-client.crl">
>>>>>        <Certificate certificateKeyFile="${catalina.base}/conf/ssl/ 
>>>>> tomcat.key"
>>>>>                     certificateFile="${catalina.base}/conf/ssl/ 
>>>>> tomcat.crt"
>>>>>                     certificateChainFile="${catalina.base}/conf/ 
>>>>> ssl/ int.logopk.crt.pem"
>>>>>                     type="RSA" />
>>>>>     </SSLHostConfig>
>>>>>   </Connector>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> root@tomcat:/usr/local/tomcat# bin/version.sh
>>>>> Using CATALINA_BASE:   /opt/apache-tomcat.base
>>>>> Using CATALINA_HOME:   /usr/local/tomcat
>>>>> Using CATALINA_TMPDIR: /opt/apache-tomcat.base/temp
>>>>> Using JRE_HOME:        /opt/java/openjdk
>>>>> Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/ 
>>>>> local/ tomcat/bin/tomcat-juli.jar
>>>>> Using CATALINA_OPTS:   -XX:NativeMemoryTracking=summary  - 
>>>>> Dhostname=docker3.fritz.box -Djava.awt.headless=true - 
>>>>> Djavax.net.ssl.trustStore=/opt/apache-tomcat.base/conf/ssl/ 
>>>>> cacerts.jks -Xlog:gc:/opt/apache-tomcat.base/logs/gc.log - 
>>>>> Djava.security.egd=file:/dev/urandom -Dsun.net.inetaddr.ttl=60 - 
>>>>> Djava.library.path=/usr/local/tomcat/native-jni-lib - 
>>>>> Djdk.tls.ephemeralDHKeySize=2048 - 
>>>>> Djdk.tls.rejectClientInitiatedRenegotiation=true - 
>>>>> Djdk.tls.server.enableStatusRequestExtension=true - 
>>>>> Dcom.sun.management.jmxremote - 
>>>>> Dcom.sun.management.jmxremote.port=10001 - 
>>>>> Dcom.sun.management.jmxremote.rmi.port=10002 - 
>>>>> Dcom.sun.management.jmxremote.authenticate=false - 
>>>>> Dcom.sun.management.jmxremote.ssl=false  - 
>>>>> Djava.rmi.server.hostname=docker3.fritz.box - 
>>>>> Dcom.sun.management.jmxremote.local.only=false -javaagent:/opt/ 
>>>>> apache- tomcat.base/bin/jmx_prometheus_javaagent-0.12.0.jar=8080:/ 
>>>>> opt/apache- tomcat.base/bin/tomcat.yaml  -XX: 
>>>>> +UnlockDiagnosticVMOptions
>>>>> NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/ 
>>>>> java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL- 
>>>>> UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add- 
>>>>> opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/ 
>>>>> java.util=ALL-UNNAMED --add-opens=java.base/ 
>>>>> java.util.concurrent=ALL- UNNAMED --add-opens=java.rmi/ 
>>>>> sun.rmi.transport=ALL-UNNAMED
>>>>> Server version: Apache Tomcat/9.0.113
>>>>> Server built:   Dec 2 2025 19:51:24 UTC
>>>>> Server number:  9.0.113.0
>>>>> OS Name:        Linux
>>>>> OS Version:     6.12.57+deb13-arm64
>>>>> Architecture:   aarch64
>>>>> JVM Version:    11.0.29+7
>>>>> JVM Vendor:     Eclipse Adoptium
>>>>>
>>>>> root@tomcat:/usr/local/tomcat# openssl version
>>>>> OpenSSL 3.5.4 30 Sep 2025 (Library: OpenSSL 3.5.4 30 Sep 2025)
>>>>>
>>>>> tomcat  | 15-Jan-2026 14:45:10.675 INFO [main] 
>>>>> org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded 
>>>>> Apache Tomcat Native library [1.3.4] using APR version [1.7.5].
>>>>>
>>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected] 
>>> <mailto:[email protected]>
>>> For additional commands, e-mail: [email protected] 
>>> <mailto:[email protected]>
>>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>