原因
最近在开发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.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。