Ich betreibe erfolgreich eine Discourse-Site lokal mit OrbStack als Alternative zu Docker Desktop. Es bietet einen benutzerdefinierten Hostnamen und bedient den Container mit einem SSL-Zertifikat, ohne den Port 4200 angehängt zu haben. z.B. https://discourse.orb.local
Wenn ich jedoch die CLI-App discourse_theme für die lokale Entwicklung verwenden möchte, erhalte ich eine Fehlermeldung bezüglich der SSL-Verbindung: certificate verify failed
SSL_connect returned=1 errno=0 peeraddr=198.19.248.3:443 state=error: certificate verify failed (self-signed certificate in certificate chain) (OpenSSL::SSL::SSLError)
discourse_theme watch .
$ discourse_theme watch .
» Using https://discourse.orb.local from /Users/user123/.discourse_theme
» Using api key from /Users/user123/.discourse_theme
/opt/homebrew/lib/ruby/gems/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:46:in `connect_nonblock': SSL_connect returned=1 errno=0 peeraddr=198.19.248.3:443 state=error: certificate verify failed (self-signed certificate in certificate chain) (OpenSSL::SSL::SSLError)
from /opt/homebrew/lib/ruby/gems/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:46:in `ssl_socket_connect'
from /opt/homebrew/lib/ruby/gems/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:1742:in `connect'
from /opt/homebrew/lib/ruby/gems/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:1642:in `do_start'
from /opt/homebrew/lib/ruby/gems/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:1631:in `start'
from /opt/homebrew/lib/ruby/gems/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:2375:in `request'
from /opt/homebrew/lib/ruby/gems/3.3.0/gems/discourse_theme-2.1.6/lib/discourse_theme/client.rb:144:in `request'
from /opt/homebrew/lib/ruby/gems/3.3.0/gems/discourse_theme-2.1.6/lib/discourse_theme/client.rb:112:in `discourse_version'
from /opt/homebrew/lib/ruby/gems/3.3.0/gems/discourse_theme-2.1.6/lib/discourse_theme/client.rb:19:in `initialize'
from /opt/homebrew/lib/ruby/gems/3.3.0/gems/discourse_theme-2.1.6/lib/discourse_theme/cli.rb:72:in `new'
from /opt/homebrew/lib/ruby/gems/3.3.0/gems/discourse_theme-2.1.6/lib/discourse_theme/cli.rb:72:in `run'
from /opt/homebrew/lib/ruby/gems/3.3.0/gems/discourse_theme-2.1.6/bin/discourse_theme:6:in `<top (required)>'
from /opt/homebrew/lib/ruby/gems/3.3.0/bin/discourse_theme:25:in `load'
from /opt/homebrew/lib/ruby/gems/3.3.0/bin/discourse_theme:25:in `<main>'
Ich habe die neuesten Versionen von discourse_theme, OrbStack, openssl und ca-certificates.
Wenn ich Curl verwende, erhalte ich ebenfalls eine Bestätigung eines gültigen Zertifikats:
curl -Iv https://discourse.orb.local
curl -Iv https://discourse.orb.local
* Host discourse.orb.local:443 wurde aufgelöst.
* IPv6: (none)
* IPv4: 198.19.248.3
* Versuch 198.19.248.3:443...
* Verbunden mit discourse.orb.local (198.19.248.3) Port 443
* ALPN: curl bietet h2,http/1.1 an
* (304) (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/ssl/cert.pem
* CApath: none
* (304) (IN), TLS handshake, Server hello (2):
* (304) (IN), TLS handshake, Unknown (8):
* (304) (IN), TLS handshake, Certificate (11):
* (304) (IN), TLS handshake, CERT verify (15):
* (304) (IN), TLS handshake, Finished (20):
* (304) (OUT), TLS handshake, Finished (20):
* SSL-Verbindung mit TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256 / [blank] / UNDEF
* ALPN: Server akzeptierte h2
* Serverzertifikat:
* Betreff: O=OrbStack Development; OU=Containers & Services; CN=discourse.orb.local
* Startdatum: Aug 25 08:07:50 2025 GMT
* Ablaufdatum: Nov 25 09:07:50 2027 GMT
* subjectAltName: Host "discourse.orb.local" stimmte mit dem Zertifikat "discourse.orb.local" überein
* Aussteller: O=OrbStack Development; OU=Containers & Services; CN=OrbStack Development Root CA
* SSL-Zertifikatüberprüfung OK.
* HTTP/2 wird verwendet
* [HTTP/2] [1] Stream geöffnet für https://discourse.orb.local/
* [HTTP/2] [1] [:method: HEAD]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: discourse.orb.local]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.7.1]
* [HTTP/2] [1] [accept: */*]
> HEAD / HTTP/2
> Host: discourse.orb.local
> User-Agent: curl/8.7.1
> Accept: */*
>
* Anfrage vollständig gesendet
< HTTP/2 200
Was verursacht dieses Problem tatsächlich? Irgendwelche Ideen?