Cannot open database: TLS/SSL error: SSL is required, but the server does not support it
Sinds ongeveer OpenSUSE v. 15.6 à 16.0 dook het probleem op dat Gambas3 programma’s geen verbinding meer konden maken met een bestaande mariadb database op een computer in het lokaal netwerk, zonder SSL (zie Database verbinding gebroken). Ik vond het probleem niet bij Raspbian (Debian), voor andere distributies weet ik niet, misschien Red Hat?
Het probleem was terug te brengen tot de stap naar een nieuwe mariadb client lib:
libmariadb3 v. 3.4.5
… waarbij het standaard gedrag van de MariaDB Connector/C 3.4 veranderde.
De gewone “skip-ssl” volstaat niet meer (Unable to disable TLS verification when using mariadb-connector-c >= 3.4.0).
Dit kan voor allerlei software die dit soort databaseverbinding maakt een fout/verandering opleveren; openoffice/libreoffice, python programma’s, …. niet alleen voor Gambas.
Omzeilen
Voor Gambas3 kan je het probleem omzeilen door een combinatie van
- instellingen in een mariadb configuratiebestand op de client computer (waar het gambas programma draait)
- aanroepen van de juiste opties vanuit je code voor het maken van de verbinding.
Mariadb client configuratie
De instellingen gebeuren normaal in het onzichtbare bestand .my.cfg
in de home directory van de gebruiker:
~/.my.cfg
Daarin staat misschien al de instelling om op de CLI de SSL te omzeilen:
[client]
skip-ssl = true
Maak een nieuwe paragraaf aan, bv met de titel “gambasfixnossl” (nadien moet je naar deze header verwijzen in je code):
[gambasfixnossl]
ssl-verify-server-cert=0
ssl-mode=DISABLED
Gambas3 connection opties
Je hebt een combinatie van connection opties nodig om de fout te vermijden. Dit stond al in mijn code*:
With hConnection
.Host = Settings["Connection/Host"]
.User = Settings["Connection/User"]
.Name = Settings["Connection/Name"]
.Password = Settings["Connection/Password"]
.Type = Settings["Connection/Type", "mysql"]
End With
En dit heb ik er nu bijgevoegd:
...
.Options["READ_DEFAULT_GROUP"] = "gambasfixnossl"
.Options["PROTOCOL"] = 1
.Options["SSL_MODE"] = 0
.Options["SSL"] = False
.Options["CLIENT_FLAGS"] = 0
.Options["MYSQL_OPT_SSL_ENFORCE"] = 0
End With
Getest
- Werkt op openSUSE Leap 16.0
- Werkt op Tumbleweed 20251013
Nota’s: (*) Settings gebruik, Apart mariadb configuratiebestand, ..
(*) Settings:
Voor de database verbinding kan er bv .Host=”192.168.1.200” staan, maar bij mij worden ze gelezen uit een gambas config bestand door het gebruik van “Settings“, vandaar de constructie:
Settings["Connection/host"]
Nota: Apart bestand
De client config opties ssl-verify-server-cert=0 en ssl-mode=DISABLED, met titel, kan je ook in een apart bestand zetten elders in je bestandssysteem, je moet er alleen naar verwijzen dan in je gambas code:
.Options["READ_DEFAULT_FILE"] = User.Home &/ ".mariadb.cnf"
'# of systemwide:(nog niet getest)
.Options["READ_DEFAULT_FILE"] = "/etc/.mariadb.cnf"