[macOS] 10.12.6 解決 MAMP 伺服器 SSL handshake failure

更新 macOS 的 OpenSSL 版本

首先,要解決這個問題必須先解決 macOS 下內建的 OpenSSL

OpenSSL 0.9.8zh 14 Jan 2016 built on: Jan 23 2017

因為接下來要使用更新版的 OpenSSL 來編譯過 CURL 來解決這個交握錯誤!

參考網路上的解法是使用 HomeBrew 做更新,如果沒有就安裝一下:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

使用 brew update && brew upgrade 指令更新一下!

這時,曾經用 brew 安裝過的 OpenSSL 版本就會被更新到最新(連帶其他服務一起),如果沒有就是使用 brew install openssl 指令安裝。 (以上指令操作都不需要管理員 sudo 權限)

不論是更新還是新安裝,brew 的提示都要照著來操作,到這邊要注意那段

LDFLAGS="-L/usr/local/opt/openssl/lib" 
CPPFLAGS="-I/usr/local/opt/openssl/include" 

這邊就是後面要重新編譯 CURL 會用到的部分,到此已經做好更新 OpenSSL 的部分,接下來就是重新編譯!

新版本的 OpenSSL 資訊如下:

OpenSSL 1.0.2m 2 Nov 2017 built on: reproducible build, date unspecified

重新編譯 CURL

首先到 CURL 的下載頁面找最新版的原始碼下載(目前是:curl 7.56.1, Released on the 23rd of October 2017)

注意,不是下方的 Packages 是 Source Archives

下載到任意位置後解壓縮,然後指令模式下進入該資料夾 curl-7.56.1 ,使用下列指令執行編譯組態:

LDFLAGS="-L/usr/local/opt/openssl/lib" CPPFLAGS="-I/usr/local/opt/openssl/include" ./configure --prefix=/Applications/MAMP/Library/

設定 prefix 參數只是要把編譯好的 CURL 服務給導入 MAMP 裡,算是補完吧!若你是因為其他服務或是系統內建版本升級,那就不需要這參數囉。

組態好後再執行 make && make install

如此 CURL 裝入 MAMP 後把 MAMP 重新啟動就大功告成拉! 往後不會看到 routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure 錯誤了~

喔對了,如果你在一開始編譯就噴了一堆錯誤,非常有可能是你需要更新或安裝 Xcode ,在 Mac 環境中他可是很重要的角色啊~

Ref: MAMP SSL error: “error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure”

後記

這個 MAMP 還真是在本機上擔任重要的測試環境角色,只記得對他搞了不少客製化的部分,所以如果沒有太麻煩的更新,我都還是持續的再使用。現在的版本是 v3.5 官網上最新版已經是 v4.2.1 ,真是差距不小XD

Facebook 外掛整合

Share: