Sublime Text 3 Package Control报错OSError: The specified item could not be found in the keychain解决

Sublime Text 3 Package Control 报错 OSError: The specified item could not be found in the keychain解决了,喜大普奔。

他妈的,这是什么天坑。花了我一整天,好多根头发,最后的解决方法是:在钥匙串中把Apple Worldwide Developer Relations Certification Authority这个证书的信任权限从系统默认改为始终信任

我迄今也不太清楚这个证书是干嘛用的,也来不及去搞清楚了。我猜测肯定是系统咋的一更新,出于安全考虑,这个证书的权限被降低了;一般的程序不管是用curl还是用urllib来访问url的时候,一旦遇上https类型的,就需要跟OS沟通来签相关证书,但在这个时候被OS给拒绝了。

网上搜来搜去也没有直接提到这个问题的解决方案的。记录一下我的debug思路吧,多机智啊:

  1. 解锁新技能,把Package Control.sublime-package后缀改成.zip(网上说.sublime-package本质上就是.zip压缩文件,只是改了个后缀,好的吧…),解压看了源码,然后发现不管是通过curl还是通过urllib来使用package control,都会出现同样的错,排除了sublime text源码的问题,确认问题出在OS上。
  2. 另一方面我看源码的时候发现好像得是https类型的url才会触发这个证书签发的机制,灵机一动把channels手动改成http类型的,发现果然成功了。
  3. 所以我定位到了问题,搜了一下“urllib https 报错The specified item could not be found in the keychain”,终于找到github一个issue里有人提到了这个证书Apple Worldwide Developer Relations Certification Authority。
  4. 打开钥匙串,找到这个证书,随便改了一下权限,发现ok了。