diff --git a/.github/workflows/ssl-db.yml b/.github/workflows/ssl-db.yml
new file mode 100644
index 0000000000..d02233c08b
--- /dev/null
+++ b/.github/workflows/ssl-db.yml
@@ -0,0 +1,68 @@
+name: database-connection-via-ssl
+
+on:
+  push:
+    branches: master
+  pull_request:
+
+jobs:
+  mariadb:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        python-version: [3.8]
+
+    steps:
+      - uses: actions/checkout@v3
+      - name: Set up Python ${{ matrix.python-version }}
+        uses: actions/setup-python@v4
+        with:
+          python-version: ${{ matrix.python-version }}
+
+      - name: Generate DB certificates
+        run: |
+          # docker run -v $(pwd)/tests/db-certs/:/Kiwi/db-certs/:Z --rm -i kiwitcms/kiwi \
+          #        /usr/bin/sscg \
+          #            -v -f \
+          #            --country BG --locality Sofia \
+          #            --organization "Kiwi TCMS" \
+          #            --organizational-unit "DevOps" \
+          #            --ca-file /Kiwi/db-certs/ca.crt \
+          #            --ca-key-file /Kiwi/db-certs/ca.key \
+          #            --cert-file /Kiwi/db-certs/server.crt \
+          #            --cert-key-file /Kiwi/db-certs/server.key
+          # re-enable & add client cert when https://github.com/sgallagher/sscg/issues/3 is fixed
+          pushd ./tests/ && ./gen-db-certs.sh && popd
+
+      - name: Create database
+        run: |
+          docker-compose -f docker-compose.mariadb-ssl pull db
+          docker-compose -f docker-compose.mariadb-ssl run -d -p 3306:3306 --name kiwi_db db
+          sleep 20  # wait to initialize
+
+          set -e
+          docker exec -i kiwi_db mariadb -u root -pkiwi-1s-aw3s0m3 \
+                --ssl-ca=/etc/certs/ca.pem \
+                --ssl-cert=/etc/certs/client-cert.pem \
+                --ssl-key=/etc/certs/client-key.pem -e 'status' | grep "Cipher in use is"
+
+      - name: Initialize DB tables & records
+        run: |
+          sudo apt-get update
+          sudo apt-get install gettext
+
+          sudo mkdir /Kiwi
+          sudo chmod a+w /Kiwi
+
+          pip install -r requirements/devel.txt
+          pip install -r requirements/mariadb.txt
+          pushd tcms/ && npm install && popd
+
+          export LANG=bg-bg
+          set -e
+          coverage run --source='.' ./manage.py migrate -v2 --noinput --settings tcms.settings.test.mariadb
+
+      - name: Send coverage to codecov.io
+        run: |
+          coverage report -m
+          bash <(curl -s https://codecov.io/bash)
diff --git a/.gitignore b/.gitignore
index 4bb4c37d48..ec886d5579 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,4 +16,5 @@ docs/target/
 .vscode/
 .cache/
 tcms/node_modules/
+tests/db-certs/*.pem
 package-lock.json
diff --git a/check-ssl.py b/check-ssl.py
new file mode 100755
index 0000000000..5b2608fc03
--- /dev/null
+++ b/check-ssl.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+
+import MySQLdb
+
+config = {
+    "user": "kiwi",
+    "password": "kiwi",
+    "host": "127.0.0.1",
+    "ssl": {
+        #        'ca': '/home/senko/Kiwi/tests/db-certs/ca.pem',
+        #        'cert': '/home/senko/Kiwi/tests/db-certs/client-cert.pem',
+        #        'key': '/home/senko/Kiwi/tests/db-certs/client-key.pem',
+    },
+}
+
+db = MySQLdb.connect(**config)
+cur = db.cursor()
+cur.execute("SHOW STATUS LIKE 'Ssl_cipher'")
+print(cur.fetchone())
+cur.close()
+db.close()
diff --git a/docker-compose.mariadb-ssl b/docker-compose.mariadb-ssl
new file mode 100644
index 0000000000..b427ca8f08
--- /dev/null
+++ b/docker-compose.mariadb-ssl
@@ -0,0 +1,24 @@
+version: '2'
+
+services:
+    db:
+        container_name: kiwi_db
+        image: mariadb:latest
+        command: [  "--character-set-server=utf8mb4",
+                    "--collation-server=utf8mb4_unicode_ci",
+                    "--require-secure-transport=ON",
+                    "--ssl-ca=/etc/certs/ca.pem",
+                    "--ssl-cert=/etc/certs/server-cert.pem",
+                    "--ssl-key=/etc/certs/server-key.pem" ]
+        volumes:
+            - db_data:/var/lib/mysql
+            - ./tests/db-certs/:/etc/certs/
+        restart: always
+        environment:
+            MYSQL_ROOT_PASSWORD: kiwi-1s-aw3s0m3
+            MYSQL_DATABASE: kiwi
+            MYSQL_USER: kiwi
+            MYSQL_PASSWORD: kiwi
+
+volumes:
+    db_data:
diff --git a/tests/gen-db-certs.sh b/tests/gen-db-certs.sh
new file mode 100755
index 0000000000..1252ae77e3
--- /dev/null
+++ b/tests/gen-db-certs.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+OPENSSL_SUBJ="/C=BG/ST=Sofia/L=Sofia"
+OPENSSL_CA="${OPENSSL_SUBJ}/CN=fake-CA"
+OPENSSL_SERVER="${OPENSSL_SUBJ}/CN=fake-server"
+OPENSSL_CLIENT="${OPENSSL_SUBJ}/CN=fake-client"
+
+mkdir -p db-certs/
+pushd db-certs/
+
+# Generate new CA certificate ca.pem file.
+openssl genrsa 2048 > ca-key.pem
+
+# TODO This has interaction that must be automated
+openssl req -new -x509 -nodes -days 3600 \
+    -subj "${OPENSSL_CA}" \
+    -key ca-key.pem -out ca.pem
+
+
+# Create the server-side certificates
+# This has more interaction that must be automated
+
+openssl req -newkey rsa:2048 -days 3600 -nodes \
+    -subj "${OPENSSL_SERVER}" \
+    -keyout server-key.pem -out server-req.pem
+openssl rsa -in server-key.pem -out server-key.pem
+openssl x509 -req -in server-req.pem -days 3600 \
+    -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
+
+# Create the client-side certificates
+openssl req -newkey rsa:2048 -days 3600 -nodes \
+    -subj "${OPENSSL_CLIENT}" \
+    -keyout client-key.pem -out client-req.pem
+openssl rsa -in client-key.pem -out client-key.pem
+openssl x509 -req -in client-req.pem -days 3600 \
+    -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
+
+# Verify the certificates are correct
+openssl verify -CAfile ca.pem server-cert.pem client-cert.pem
+
+# make the keys readable b/c we're having issues with uid/gid inside the containers
+chmod 644 client-key.pem server-key.pem ca-key.pem
+popd