Skip to content

Conversation

@zanesq
Copy link
Collaborator

@zanesq zanesq commented Dec 10, 2025

Summary

fixes #6034

Root Cause

The bug was introduced in PR #5251 "goose remote access" which added the tokio-tungstenite dependency with the native-tls feature to crates/goose-server/Cargo.toml:

tokio-tungstenite = { version = "0.28.0", features = ["native-tls"] }

On Linux, native-tls uses OpenSSL via the system's libssl. The build environment (likely Ubuntu 20.04 or similar) links against OpenSSL 1.1 (libssl.so.1.1), but modern Linux distributions ship with OpenSSL 3.x (libssl.so.3):

  • Ubuntu 22.04+ → OpenSSL 3.x
  • Ubuntu 25.10 → OpenSSL 3.x
  • Fedora → OpenSSL 3.x
  • Arch Linux → OpenSSL 3.x

This causes a runtime error: libssl.so.1.1: cannot open shared object file.

Fix

Change tokio-tungstenite from native-tls to rustls-tls-native-roots:

-tokio-tungstenite = { version = "0.28.0", features = ["native-tls"] }
+tokio-tungstenite = { version = "0.28.0", features = ["rustls-tls-native-roots"] }

Why this works:

  • rustls is a pure Rust TLS implementation - no system OpenSSL dependency
  • rustls-tls-native-roots uses the system's certificate store for trust anchors
  • This is consistent with reqwest in the same file which already uses rustls-tls

Files Changed

  • crates/goose-server/Cargo.toml - one line change

The fix removes native-tls, tokio-native-tls, openssl, openssl-probe, and openssl-sys from the dependency tree, replacing them with rustls and tokio-rustls.

@zanesq zanesq marked this pull request as ready for review December 10, 2025 18:41
@zanesq zanesq changed the title regen cargo lock fix: linux goosed crashing libssl.so.1.1 error Dec 10, 2025
@zanesq zanesq changed the title fix: linux goosed crashing libssl.so.1.1 error fix: linux goosed crashing libssl error Dec 10, 2025
@zanesq
Copy link
Collaborator Author

zanesq commented Dec 10, 2025

@michaelneale can you follow up and check if the goose remote access feature still works after this change?

@zanesq
Copy link
Collaborator Author

zanesq commented Dec 10, 2025

looking into failing tunnel test

@sheikhlimon
Copy link
Contributor

yeah it was pulling in rustls with aws-lc-rs default provider

@zanesq
Copy link
Collaborator Author

zanesq commented Dec 10, 2025

Fix for tests failing:

Using rustls-tls-native-roots instead of native-tls uses rustls (a pure Rust TLS implementation) which doesn't depend on system OpenSSL. However, rustls 0.23.x requires an explicit crypto provider to be installed at runtime so I added the ring feature and the install_default() call.

@DOsinga
Copy link
Collaborator

DOsinga commented Dec 10, 2025

Using rustls-tls-native-roots instead of native-tls uses rustls (a pure Rust TLS implementation) which doesn't depend on system OpenSSL. However, rustls 0.23.x requires an explicit crypto provider to be installed at runtime so I added the ring feature and the install_default() call.

can you say more about this?

@zanesq
Copy link
Collaborator Author

zanesq commented Dec 10, 2025

Using rustls-tls-native-roots instead of native-tls switches to rustls, a pure Rust TLS implementation that doesn't depend on system OpenSSL. The native-roots part means it still uses the system's trusted certificate store for validating server certificates.

However, rustls 0.23.x no longer bundles a default cryptographic backend—it requires an explicit crypto provider to be installed at runtime. The library supports two options: ring (mature, widely used) or aws-lc-rs (AWS's libcrypto). Since both were already in our dependency tree via other crates, I chose ring and added the install_default() call to register it as the process-wide crypto provider before any TLS connections are made.

@zanesq zanesq merged commit 2b8f9e1 into main Dec 10, 2025
17 checks passed
@zanesq zanesq deleted the zane/regenerate-lock branch December 10, 2025 19:23
zanesq added a commit that referenced this pull request Dec 10, 2025
zanesq added a commit that referenced this pull request Dec 10, 2025
* 'main' of github.com:block/goose:
  blog: How to stop your ai agent from making unwanted code changes (#6055)
  Fix typo in prompt (#6007)
  Docs for new terminal integration feature (#6042)
  fix: linux goosed crashing libssl error (#6051)
  chore(release): release version 1.16.0 (minor) (#5985)
  fix: metrics on posthog (#6024)
  gov: new LF Projects LLC section (#6027)
  Cleanup: Remove Recipe Key Flow (#6015)
  chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /documentation (#5963)
  remove problematic corrupted woff font (#6006)
  Added search bar / filtering for recipes (#6019)
zanesq added a commit that referenced this pull request Dec 10, 2025
…aults-per-session

* 'main' of github.com:block/goose:
  blog: How to stop your ai agent from making unwanted code changes (#6055)
  Fix typo in prompt (#6007)
  Docs for new terminal integration feature (#6042)
  fix: linux goosed crashing libssl error (#6051)
  chore(release): release version 1.16.0 (minor) (#5985)
  fix: metrics on posthog (#6024)
  gov: new LF Projects LLC section (#6027)
  Cleanup: Remove Recipe Key Flow (#6015)
  chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /documentation (#5963)
  remove problematic corrupted woff font (#6006)
  Added search bar / filtering for recipes (#6019)
katzdave added a commit that referenced this pull request Dec 10, 2025
…nses-streaming

* 'main' of github.com:block/goose:
  blog: How to stop your ai agent from making unwanted code changes (#6055)
  Fix typo in prompt (#6007)
  Docs for new terminal integration feature (#6042)
  fix: linux goosed crashing libssl error (#6051)
  chore(release): release version 1.16.0 (minor) (#5985)
  fix: metrics on posthog (#6024)
  gov: new LF Projects LLC section (#6027)
  Cleanup: Remove Recipe Key Flow (#6015)
  chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /documentation (#5963)
  remove problematic corrupted woff font (#6006)
  Added search bar / filtering for recipes (#6019)
  Hide recipe icon in empty chat (#6022)
  docs: provider and model config (#6008)
  Show modal selector after configuring a provider (#6005)
  docs: additional mcp sampling resources (#6020)
  Flutter PR Code Review (#6011)
  feat(mcp): elicitation support (#5965)
katzdave added a commit that referenced this pull request Dec 11, 2025
* 'main' of github.com:block/goose:
  blog: How to stop your ai agent from making unwanted code changes (#6055)
  Fix typo in prompt (#6007)
  Docs for new terminal integration feature (#6042)
  fix: linux goosed crashing libssl error (#6051)
  chore(release): release version 1.16.0 (minor) (#5985)
  fix: metrics on posthog (#6024)
  gov: new LF Projects LLC section (#6027)
katzdave added a commit that referenced this pull request Dec 12, 2025
…oose into dkatz/openai-responses-streaming

* 'dkatz/openai-responses-streaming' of github.com:block/goose:
  Rm stray
  leave errors in the context
  blog: How to stop your ai agent from making unwanted code changes (#6055)
  Fix typo in prompt (#6007)
  Docs for new terminal integration feature (#6042)
  fix: linux goosed crashing libssl error (#6051)
  chore(release): release version 1.16.0 (minor) (#5985)
  fix: metrics on posthog (#6024)
  gov: new LF Projects LLC section (#6027)
  Cleanup: Remove Recipe Key Flow (#6015)
  chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /documentation (#5963)
  remove problematic corrupted woff font (#6006)
  Added search bar / filtering for recipes (#6019)
  Hide recipe icon in empty chat (#6022)
  docs: provider and model config (#6008)
  Show modal selector after configuring a provider (#6005)
  docs: additional mcp sampling resources (#6020)
  Flutter PR Code Review (#6011)
  feat(mcp): elicitation support (#5965)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Doesnt work on ubuntu 25.10 - libssl.so.1.1 error

5 participants