Skip to content

UnityTls Error 7 / SSL Handshake Failure on openSUSE Tumbleweed #108

@pickle780

Description

@pickle780

Description

After a system update or snapper rollback, some Unity / Battle.net games may fail to connect to servers.

This has been observed primarily on openSUSE Tumbleweed.

The failure is most likely caused by an incompatible Mono TLS provider after system changes, rather than missing certificates.


Symptoms

Game launches normally but cannot connect to Battle.net servers.

Check the log:

~/.config/unity3d/Blizzard Entertainment/Hearthstone/Player.log

Typical errors:

Curl error 35: Cert handshake failed
UnityTls error code: 7
Chain instance is empty
Curl error 42: Callback aborted

When This Happens

Common triggers:

  • System upgrade (zypper dup)
  • snapper rollback
  • Restoring an old snapshot
  • OpenSSL / libcurl / Mono upgrade
  • Rolling-release distribution updates

Root Cause (Most Likely)

The default Mono TLS provider becomes incompatible with the updated system libraries.

In rolling distributions, system components may change faster than the runtime environment.

Result:

TLS handshake fails even though certificates exist

Quick Fix (Try This First)

export MONO_TLS_PROVIDER=btls
./Bin/Hearthstone

If the game connects successfully after this change, the issue is confirmed.


Why This Works

btls uses an internal TLS implementation bundled with Mono.

It does not rely on the system OpenSSL stack.

This avoids compatibility problems after system upgrades or rollback.


If That Does Not Work

Try synchronizing the Mono certificate store.

sudo TERM=vt100 cert-sync /etc/ssl/ca-bundle.pem

This fixes cases where the Mono trust store is missing or out of sync.


Recommended Launch Script

#!/bin/bash

# Clear proxy variables
unset http_proxy https_proxy all_proxy
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY

export no_proxy="*"

# Explicit certificate paths
export SSL_CERT_FILE=/etc/ssl/ca-bundle.pem
export SSL_CERT_DIR=/etc/ssl/certs

# Force modern TLS provider
export MONO_TLS_PROVIDER=btls

./Bin/Hearthstone

Verification

Run:

MONO_TLS_PROVIDER=btls mono --version

Expected output includes:

TLS:           btls

One-Line Summary

export MONO_TLS_PROVIDER=btls

Notes

  • This issue is environment-specific.
  • It may not affect all Linux distributions.
  • Rolling-release systems are more likely to encounter it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions