Penpot not starting after Upgrading

Hello im new,
please be kind if this ist the wrong topic

We have Penpot running in Docker and we also use LDAP for Authentication.
After Updating to latest version Penpot is not comming up.

All containers are running
Looking through the logs of the containers i find the following:

Frontend - Log is emty
Backend - several LDAP related errors:

+ exec /opt/jre/bin/java -Dim4java.useV7=true -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dlog4j2.configurationFile=log4j2.xml -XX:-OmitStackTraceInFastThrow --sun-misc-unsafe-memory-access=allow --enable-native-access=ALL-UNNAMED --enable-preview -jar penpot.jar -m app.main
[2025-07-29 09:54:54.241] E app.auth.ldap - hint="unable to connect to LDAP server (LDAP auth provider disabled)", host="ldapserver.domain.tld", port=1636
SUMMARY:
 →  clojure.lang.ExceptionInfo: unable to connect to ldap server (ldap.clj:33)
 →  com.unboundid.ldap.sdk.LDAPException: An error occurred while attempting to connect to server ldapserver.domain.tld:1636:  IOException(LDAPException... (LDAPConnection.java:915)
 →  java.io.IOException: LDAPException(resultCode=91 (connect error), errorMessage='An error occurred while attempting to establish a connection to server... (LDAPConnectionInternals.java:204)
 →  com.unboundid.ldap.sdk.LDAPException: An error occurred while attempting to establish a connection to server ldapserver.domain.tld/IP-OF-LDAP-SERVER:163... (ConnectThread.java:287)
 →  javax.net.ssl.SSLHandshakeException: (handshake_failure) Received fatal alert: handshake_failure (:-1)
DETAIL:
 →  clojure.lang.ExceptionInfo: unable to connect to ldap server (ldap.clj:33)
    at: app.auth.ldap$connect.invokeStatic(ldap.clj:33)
        app.auth.ldap$connect.invoke(ldap.clj:25)
        app.auth.ldap$try_connectivity.invokeStatic(ldap.clj:93)
        app.auth.ldap$try_connectivity.invoke(ldap.clj:85)
        app.auth.ldap$eval29136$fn__29137.invoke(ldap.clj:134)
        clojure.lang.MultiFn.invoke(MultiFn.java:234)
        integrant.core$try_build_action.invokeStatic(core.cljc:419)
        integrant.core$try_build_action.invoke(core.cljc:418)
        integrant.core$build_key.invokeStatic(core.cljc:427)
        integrant.core$build_key.invoke(core.cljc:423)
        clojure.core$partial$fn__5933.invoke(core.clj:2656)
        clojure.core.protocols$fn__8279.invokeStatic(protocols.clj:167)
        clojure.core.protocols/fn(protocols.clj:123)
        clojure.core.protocols$fn__8233$G__8228__8242.invoke(protocols.clj:19)
        clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
        clojure.core.protocols$fn__8266.invokeStatic(protocols.clj:74)
        clojure.core.protocols/fn(protocols.clj:74)
        clojure.core.protocols$fn__8207$G__8202__8220.invoke(protocols.clj:13)
        clojure.core$reduce.invokeStatic(core.clj:6965)
        clojure.core$reduce.invoke(core.clj:6947)
        integrant.core$build.invokeStatic(core.cljc:453)
        integrant.core$build.invoke(core.cljc:430)
        integrant.core$init.invokeStatic(core.cljc:675)
        integrant.core$init.invoke(core.cljc:667)
        integrant.core$init.invokeStatic(core.cljc:672)
        integrant.core$init.invoke(core.cljc:667)
        app.main$start$fn__28974.invoke(main.clj:549)
        clojure.lang.AFn.applyToHelper(AFn.java:154)
        clojure.lang.AFn.applyTo(AFn.java:144)
        clojure.lang.Var.alterRoot(Var.java:310)
        clojure.core$alter_var_root.invokeStatic(core.clj:5563)
        clojure.core$alter_var_root.doInvoke(core.clj:5558)
        clojure.lang.RestFn.invoke(RestFn.java:428)
        app.main$start.invokeStatic(main.clj:543)
        app.main$start.invoke(main.clj:539)
        app.main$_main.invokeStatic(main.clj:609)
        app.main$_main.doInvoke(main.clj:601)
        clojure.lang.RestFn.invoke(RestFn.java:400)
        clojure.lang.AFn.applyToHelper(AFn.java:152)
        clojure.lang.RestFn.applyTo(RestFn.java:135)
        clojure.lang.Var.applyTo(Var.java:707)
        clojure.core$apply.invokeStatic(core.clj:667)
        clojure.main$main_opt.invokeStatic(main.clj:515)
        clojure.main$main_opt.invoke(main.clj:511)
        clojure.main$main.invokeStatic(main.clj:665)
        clojure.main$main.doInvoke(main.clj:617)
        clojure.lang.RestFn.applyTo(RestFn.java:140)
        clojure.lang.Var.applyTo(Var.java:707)
        clojure.main.main(main.java:40)
    dt: {:type :restriction, :code :unable-to-connect-to-ldap, :hint "unable to connect to ldap server"}

 →  com.unboundid.ldap.sdk.LDAPException: An error occurred while attempting to connect to server ldapserver.domain.tld:1636:  IOException(LDAPException... (LDAPConnection.java:915)
    at: com.unboundid.ldap.sdk.LDAPConnection.connect(LDAPConnection.java:915)
        com.unboundid.ldap.sdk.LDAPConnection.connect(LDAPConnection.java:802)
        com.unboundid.ldap.sdk.LDAPConnection.connect(LDAPConnection.java:740)
        com.unboundid.ldap.sdk.LDAPConnection.<init>(LDAPConnection.java:560)
        jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(:-1)
        java.lang.reflect.Constructor.newInstanceWithCaller(:-1)
        java.lang.reflect.Constructor.newInstance(:-1)
        clojure.lang.Reflector.invokeConstructor(Reflector.java:334)
        clj_ldap.client$create_connection.invokeStatic(client.clj:188)
        clj_ldap.client$create_connection.invoke(client.clj:177)
        clj_ldap.client$connect_to_host.invokeStatic(client.clj:233)
        clj_ldap.client$connect_to_host.invoke(client.clj:228)
        clj_ldap.client$connect.invokeStatic(client.clj:522)
        clj_ldap.client$connect.invoke(client.clj:490)
        app.auth.ldap$connect.invokeStatic(ldap.clj:31)
        app.auth.ldap$connect.invoke(ldap.clj:25)
        app.auth.ldap$try_connectivity.invokeStatic(ldap.clj:93)
        app.auth.ldap$try_connectivity.invoke(ldap.clj:85)
        app.auth.ldap$eval29136$fn__29137.invoke(ldap.clj:134)
        clojure.lang.MultiFn.invoke(MultiFn.java:234)
        integrant.core$try_build_action.invokeStatic(core.cljc:419)
        integrant.core$try_build_action.invoke(core.cljc:418)
        integrant.core$build_key.invokeStatic(core.cljc:427)
        integrant.core$build_key.invoke(core.cljc:423)
        clojure.core$partial$fn__5933.invoke(core.clj:2656)
        clojure.core.protocols$fn__8279.invokeStatic(protocols.clj:167)
        clojure.core.protocols/fn(protocols.clj:123)
        clojure.core.protocols$fn__8233$G__8228__8242.invoke(protocols.clj:19)
        clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
        clojure.core.protocols$fn__8266.invokeStatic(protocols.clj:74)
        clojure.core.protocols/fn(protocols.clj:74)
        clojure.core.protocols$fn__8207$G__8202__8220.invoke(protocols.clj:13)
        clojure.core$reduce.invokeStatic(core.clj:6965)
        clojure.core$reduce.invoke(core.clj:6947)
        integrant.core$build.invokeStatic(core.cljc:453)
        integrant.core$build.invoke(core.cljc:430)
        integrant.core$init.invokeStatic(core.cljc:675)
        integrant.core$init.invoke(core.cljc:667)
        integrant.core$init.invokeStatic(core.cljc:672)
        integrant.core$init.invoke(core.cljc:667)
        app.main$start$fn__28974.invoke(main.clj:549)
        clojure.lang.AFn.applyToHelper(AFn.java:154)
        clojure.lang.AFn.applyTo(AFn.java:144)
        clojure.lang.Var.alterRoot(Var.java:310)
        clojure.core$alter_var_root.invokeStatic(core.clj:5563)
        clojure.core$alter_var_root.doInvoke(core.clj:5558)
        clojure.lang.RestFn.invoke(RestFn.java:428)
        app.main$start.invokeStatic(main.clj:543)
        app.main$start.invoke(main.clj:539)
        app.main$_main.invokeStatic(main.clj:609)
        app.main$_main.doInvoke(main.clj:601)
        clojure.lang.RestFn.invoke(RestFn.java:400)
        clojure.lang.AFn.applyToHelper(AFn.java:152)
        clojure.lang.RestFn.applyTo(RestFn.java:135)
        clojure.lang.Var.applyTo(Var.java:707)
        clojure.core$apply.invokeStatic(core.clj:667)
        clojure.main$main_opt.invokeStatic(main.clj:515)
        clojure.main$main_opt.invoke(main.clj:511)
        clojure.main$main.invokeStatic(main.clj:665)
        clojure.main$main.doInvoke(main.clj:617)
        clojure.lang.RestFn.applyTo(RestFn.java:140)
        clojure.lang.Var.applyTo(Var.java:707)
        clojure.main.main(main.java:40)

 →  java.io.IOException: LDAPException(resultCode=91 (connect error), errorMessage='An error occurred while attempting to establish a connection to server... (LDAPConnectionInternals.java:204)
    at: com.unboundid.ldap.sdk.LDAPConnectionInternals.<init>(LDAPConnectionInternals.java:204)
        com.unboundid.ldap.sdk.LDAPConnection.connect(LDAPConnection.java:904)
        com.unboundid.ldap.sdk.LDAPConnection.connect(LDAPConnection.java:802)
        com.unboundid.ldap.sdk.LDAPConnection.connect(LDAPConnection.java:740)
        com.unboundid.ldap.sdk.LDAPConnection.<init>(LDAPConnection.java:560)
        jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(:-1)
        java.lang.reflect.Constructor.newInstanceWithCaller(:-1)
        java.lang.reflect.Constructor.newInstance(:-1)
        clojure.lang.Reflector.invokeConstructor(Reflector.java:334)
        clj_ldap.client$create_connection.invokeStatic(client.clj:188)
        clj_ldap.client$create_connection.invoke(client.clj:177)
        clj_ldap.client$connect_to_host.invokeStatic(client.clj:233)
        clj_ldap.client$connect_to_host.invoke(client.clj:228)
        clj_ldap.client$connect.invokeStatic(client.clj:522)
        clj_ldap.client$connect.invoke(client.clj:490)
        app.auth.ldap$connect.invokeStatic(ldap.clj:31)
        app.auth.ldap$connect.invoke(ldap.clj:25)
        app.auth.ldap$try_connectivity.invokeStatic(ldap.clj:93)
        app.auth.ldap$try_connectivity.invoke(ldap.clj:85)
        app.auth.ldap$eval29136$fn__29137.invoke(ldap.clj:134)
        clojure.lang.MultiFn.invoke(MultiFn.java:234)
        integrant.core$try_build_action.invokeStatic(core.cljc:419)
        integrant.core$try_build_action.invoke(core.cljc:418)
        integrant.core$build_key.invokeStatic(core.cljc:427)
        integrant.core$build_key.invoke(core.cljc:423)
        clojure.core$partial$fn__5933.invoke(core.clj:2656)
        clojure.core.protocols$fn__8279.invokeStatic(protocols.clj:167)
        clojure.core.protocols/fn(protocols.clj:123)
        clojure.core.protocols$fn__8233$G__8228__8242.invoke(protocols.clj:19)
        clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
        clojure.core.protocols$fn__8266.invokeStatic(protocols.clj:74)
        clojure.core.protocols/fn(protocols.clj:74)
        clojure.core.protocols$fn__8207$G__8202__8220.invoke(protocols.clj:13)
        clojure.core$reduce.invokeStatic(core.clj:6965)
        clojure.core$reduce.invoke(core.clj:6947)
        integrant.core$build.invokeStatic(core.cljc:453)
        integrant.core$build.invoke(core.cljc:430)
        integrant.core$init.invokeStatic(core.cljc:675)
        integrant.core$init.invoke(core.cljc:667)
        integrant.core$init.invokeStatic(core.cljc:672)
        integrant.core$init.invoke(core.cljc:667)
        app.main$start$fn__28974.invoke(main.clj:549)
        clojure.lang.AFn.applyToHelper(AFn.java:154)
        clojure.lang.AFn.applyTo(AFn.java:144)
        clojure.lang.Var.alterRoot(Var.java:310)
        clojure.core$alter_var_root.invokeStatic(core.clj:5563)
        clojure.core$alter_var_root.doInvoke(core.clj:5558)
        clojure.lang.RestFn.invoke(RestFn.java:428)
        app.main$start.invokeStatic(main.clj:543)
        app.main$start.invoke(main.clj:539)
        app.main$_main.invokeStatic(main.clj:609)
        app.main$_main.doInvoke(main.clj:601)
        clojure.lang.RestFn.invoke(RestFn.java:400)
        clojure.lang.AFn.applyToHelper(AFn.java:152)
        clojure.lang.RestFn.applyTo(RestFn.java:135)
        clojure.lang.Var.applyTo(Var.java:707)
        clojure.core$apply.invokeStatic(core.clj:667)
        clojure.main$main_opt.invokeStatic(main.clj:515)
        clojure.main$main_opt.invoke(main.clj:511)
        clojure.main$main.invokeStatic(main.clj:665)
        clojure.main$main.doInvoke(main.clj:617)
        clojure.lang.RestFn.applyTo(RestFn.java:140)
        clojure.lang.Var.applyTo(Var.java:707)
        clojure.main.main(main.java:40)

 →  com.unboundid.ldap.sdk.LDAPException: An error occurred while attempting to establish a connection to server ldapserver.domain.tld/IP-OF-LDAP-SERVER:163... (ConnectThread.java:287)
    at: com.unboundid.ldap.sdk.ConnectThread.getConnectedSocket(ConnectThread.java:287)
        com.unboundid.ldap.sdk.LDAPConnectionInternals.<init>(LDAPConnectionInternals.java:185)
        com.unboundid.ldap.sdk.LDAPConnection.connect(LDAPConnection.java:904)
        com.unboundid.ldap.sdk.LDAPConnection.connect(LDAPConnection.java:802)
        com.unboundid.ldap.sdk.LDAPConnection.connect(LDAPConnection.java:740)
        com.unboundid.ldap.sdk.LDAPConnection.<init>(LDAPConnection.java:560)
        jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(:-1)
        java.lang.reflect.Constructor.newInstanceWithCaller(:-1)
        java.lang.reflect.Constructor.newInstance(:-1)
        clojure.lang.Reflector.invokeConstructor(Reflector.java:334)
        clj_ldap.client$create_connection.invokeStatic(client.clj:188)
        clj_ldap.client$create_connection.invoke(client.clj:177)
        clj_ldap.client$connect_to_host.invokeStatic(client.clj:233)
        clj_ldap.client$connect_to_host.invoke(client.clj:228)
        clj_ldap.client$connect.invokeStatic(client.clj:522)
        clj_ldap.client$connect.invoke(client.clj:490)
        app.auth.ldap$connect.invokeStatic(ldap.clj:31)
        app.auth.ldap$connect.invoke(ldap.clj:25)
        app.auth.ldap$try_connectivity.invokeStatic(ldap.clj:93)
        app.auth.ldap$try_connectivity.invoke(ldap.clj:85)
        app.auth.ldap$eval29136$fn__29137.invoke(ldap.clj:134)
        clojure.lang.MultiFn.invoke(MultiFn.java:234)
        integrant.core$try_build_action.invokeStatic(core.cljc:419)
        integrant.core$try_build_action.invoke(core.cljc:418)
        integrant.core$build_key.invokeStatic(core.cljc:427)
        integrant.core$build_key.invoke(core.cljc:423)
        clojure.core$partial$fn__5933.invoke(core.clj:2656)
        clojure.core.protocols$fn__8279.invokeStatic(protocols.clj:167)
        clojure.core.protocols/fn(protocols.clj:123)
        clojure.core.protocols$fn__8233$G__8228__8242.invoke(protocols.clj:19)
        clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
        clojure.core.protocols$fn__8266.invokeStatic(protocols.clj:74)
        clojure.core.protocols/fn(protocols.clj:74)
        clojure.core.protocols$fn__8207$G__8202__8220.invoke(protocols.clj:13)
        clojure.core$reduce.invokeStatic(core.clj:6965)
        clojure.core$reduce.invoke(core.clj:6947)
        integrant.core$build.invokeStatic(core.cljc:453)
        integrant.core$build.invoke(core.cljc:430)
        integrant.core$init.invokeStatic(core.cljc:675)
        integrant.core$init.invoke(core.cljc:667)
        integrant.core$init.invokeStatic(core.cljc:672)
        integrant.core$init.invoke(core.cljc:667)
        app.main$start$fn__28974.invoke(main.clj:549)
        clojure.lang.AFn.applyToHelper(AFn.java:154)
        clojure.lang.AFn.applyTo(AFn.java:144)
        clojure.lang.Var.alterRoot(Var.java:310)
        clojure.core$alter_var_root.invokeStatic(core.clj:5563)
        clojure.core$alter_var_root.doInvoke(core.clj:5558)
        clojure.lang.RestFn.invoke(RestFn.java:428)
        app.main$start.invokeStatic(main.clj:543)
        app.main$start.invoke(main.clj:539)
        app.main$_main.invokeStatic(main.clj:609)
        app.main$_main.doInvoke(main.clj:601)
        clojure.lang.RestFn.invoke(RestFn.java:400)
        clojure.lang.AFn.applyToHelper(AFn.java:152)
        clojure.lang.RestFn.applyTo(RestFn.java:135)
        clojure.lang.Var.applyTo(Var.java:707)
        clojure.core$apply.invokeStatic(core.clj:667)
        clojure.main$main_opt.invokeStatic(main.clj:515)
        clojure.main$main_opt.invoke(main.clj:511)
        clojure.main$main.invokeStatic(main.clj:665)
        clojure.main$main.doInvoke(main.clj:617)
        clojure.lang.RestFn.applyTo(RestFn.java:140)
        clojure.lang.Var.applyTo(Var.java:707)
        clojure.main.main(main.java:40)

 →  javax.net.ssl.SSLHandshakeException: (handshake_failure) Received fatal alert: handshake_failure (:-1)
    at: sun.security.ssl.Alert.createSSLException(:-1)
        sun.security.ssl.Alert.createSSLException(:-1)
        sun.security.ssl.TransportContext.fatal(:-1)
        sun.security.ssl.Alert$AlertConsumer.consume(:-1)
        sun.security.ssl.TransportContext.dispatch(:-1)
        sun.security.ssl.SSLTransport.decode(:-1)
        sun.security.ssl.SSLSocketImpl.decode(:-1)
        sun.security.ssl.SSLSocketImpl.readHandshakeRecord(:-1)
        sun.security.ssl.SSLSocketImpl.startHandshake(:-1)
        sun.security.ssl.SSLSocketImpl.startHandshake(:-1)
        com.unboundid.util.ssl.SetEnabledProtocolsAndCipherSuitesSocket.startHandshake(SetEnabledProtocolsAndCipherSuitesSocket.java:926)
        com.unboundid.ldap.sdk.ConnectThread.run(ConnectThread.java:173)

[2025-07-29 09:54:54.253] I app.metrics - action="initialize metrics"
[2025-07-29 09:54:54.274] I app.db - hint="initialize connection pool", name="main", uri="postgresql://penpot-postgres/penpot", read-only=false, credentials=true, min-size=0, max-size=60
[2025-07-29 09:54:54.315] I app.migrations - hint="running migrations", module=:app.migrations/migrations
[2025-07-29 09:54:54.560] I app.worker.executor - hint="executor started"
[2025-07-29 09:54:54.565] I app.redis - hint="initialize redis resources", uri="redis://penpot-redis/0", io-threads=3, worker-threads=3
[2025-07-29 09:54:54.762] I app.msgbus - hint="initialize msgbus", buffer-size=128
[2025-07-29 09:54:55.638] I app.http - hint="starting http server", port=6060, host="0.0.0.0"
[2025-07-29 09:54:55.654] I io.undertow - starting server: Undertow - 2.3.18.Final
[2025-07-29 09:54:55.659] I org.xnio - XNIO version 3.8.16.Final
[2025-07-29 09:54:55.663] I org.xnio.nio - XNIO NIO Implementation Version 3.8.16.Final
[2025-07-29 09:54:55.705] I org.jboss.threads - JBoss Threads version 3.5.0.Final
[2025-07-29 09:54:55.762] I app.loggers.database - hint="initializing database error persistence"
[2025-07-29 09:54:55.766] I app.storage.tmp - hint="started tmp cleaner", default-min-age="1h"
[2025-07-29 09:54:55.772] I app.worker - hint="registry initialized", tasks=15
[2025-07-29 09:54:55.775] I app.worker.cron - hint="started", tasks=7
[2025-07-29 09:54:55.785] I app.worker.dispatcher - hint="started"
[2025-07-29 09:54:55.786] I app.worker.executor - hint="monitor started", name="default"
[2025-07-29 09:54:55.792] I app.worker.runner - hint="started", id=0, queue="webhooks"
[2025-07-29 09:54:55.792] I app.worker.runner - hint="started", id=0, queue="default"
[2025-07-29 09:54:55.798] I app.srepl - hint="initializing repl server", name="prepl", port=6063, host="localhost"
[2025-07-29 09:54:55.805] I app.main - hint="welcome to penpot", flags="backend-openapi-doc,dashboard-templates-section,google-fonts-provider,exporter-svgo,backend-api-doc,backend-svgo,export-file-v3,onboarding,backend-worker,smtp,component-thumbnails,prepl-server,login-with-ldap,frontend-svgo", worker?=true, version="2.8.0"

the postgres gets ready but then gets 3 x “unexpected EOF on client connection with an open transaction”

redis and exporter get ready and connected

Im suspecting an The LDAP Error to cause the Problem.
And it seems to be an issue with tls-handshake, probably the self-signed certificate but how do i tell penpot not to care about that?

Hey, has anything changed recently in your LDAP server configuration that might affect authentication or TLS connections?

Hey Carolina, thank you for your reply.

There has been no change to the LDAP Server

Also i have reverted to the previous state of my server (Restored from Snapshot)

And now it is running Fine with the “old version” wich is Penpot 2.1 for me

I will try on a non Production testing system tomorrow, and post findings here.

Thanks for the update! Glad to hear it’s working again with the old version after the rollback.
Let us know what you find when testing on the non production system. We are keen to understand what might have triggered the issue when upgrading.

OK now with some more Information.

I did an extensive amount of digging. Here is what I tried / Found out

Created a clone - did the update on the clone - Same error - TLS - Handshake failure

Moved the clone to the subnet of my ldap server - excluding the firewall doing anything “funny” - same Error - TLS - Handshake failure

TCPDUMP while logging in on the “old system” and while trying to start on the clone

Turns out older Cipher Suites have been disabled. (The follwing old Ciphers are missing in “Client Hello”)

Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)
Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)

On the working system, the LDAP server answers (Server Hello) with this cipher Suite
Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)

This leads to TLS-Handshake failure.

First i thougt, this was due to the change of the Base-Image of the Docker-Container wich is Ubuntu 22.04 old / 24.04 new.

So i tried mounting the old openssl.cnf to the container - but this did not work.

Sadly I have no access to the LDAP-Server and cant make the server support newer ciphers - wich would be the prefered solution. ( I allready contacted the person responsible.)

Is there a way to support old ciphers?