The terminal froze. My deploy was stuck. The culprit was OpenSSL in Zsh.
When your shell, environment variables, and cryptographic libraries don’t play well together, seconds turn into hours. OpenSSL is battle-tested, but in Zsh, misconfigurations can surface in subtle, maddening ways—wrong paths, missing symlinks, conflicting versions. The fixes are never glamorous, but they matter.
The key is knowing how OpenSSL interacts with Zsh’s environment loading. Zsh reads startup files like .zshrc, .zprofile, and .zlogin—each with its own scope. A misplaced export PATH or a leftover alias from an old brew install can break every SSL handshake in your workflow. Before you blame the tool, confirm which binary runs with:
which openssl
openssl version -a
If you see an unexpected path—especially one tied to system defaults instead of your intended brew or custom build—strip out the conflict. Update PATH early in .zshrc:
export PATH="/usr/local/opt/openssl@3/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/openssl@3/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@3/include"
Then reload: