原因
最近在開發iOS 推送服務的時候遇到了一個問題。
問題是valueError,原因是openssl版本過低解析Apple Push Service的.p8檔案的時候無法解析
ValueError: Could not unserialize key data
問題連線: https://github.com/pyca/crypt…
為了解決這個問題我從端午節Google到今天,一直都沒有完整的解決問題。都是wget openssl的壓縮包然後解壓,然後編譯。雖然最後在命令列下面輸入Openssl version 能得到正確的安裝版本號但是python無論如何都是那個舊版本或者新版本但是出現各種問題。我猜測可能是隻安裝了openssl新版本但是devel還是舊版本。
我就各種滿世界找openssl-devel rpm安裝的教程最後還是各種錯誤我真的快氣瘋了。
解決
今天,我Google的時候看到了ubuntu16.x的版本內建了openssl1.0.2。我感覺這個問題要解決了。最後通過升級ubuntu完成了python的Openssl依賴升級。但是過程也是比較曲折,因為要重新把舊的檔案恢復(uwsgi + nginx 的相關檔案)。反正最後推送服務終於work了,很開心。幾天的通宵達旦找資料終於有了成果。
最後進入virtulenv裡面
python -c "import ssl; print ssl.OPENSSL_VERSION",
得到了新版本的openssl version,那種感覺你不經歷一次真的無法體會
Final
希望遇到相關問題的人看到這邊文章能讓問題得到解決。其實主要問題就是阿里雲的ubuntu版本沒有及時更新讓內建的openssl升級到1.0.2導致了這個問題。不過這個問題屬於比較少見的,因為不是每個個人開發者都用阿里雲都用APNS。畢竟版本穩定才是一個商業公司的首要追求目標。
The End.