Mac自签证书和浏览器的关系

最近在研究GoProxy源码的时候,突然发现GoProxy自签的证书竟然报错

remote error: tls: unknown certificate

事情的缘由是这样的,我原先使用make.bash文件生成的build/darwin_amd64_cgo/stage文件夹下的打包文件在测试,在Mac钥匙串访问中,证书导入的也是该文件夹下的GoProxy.crt。测试下来一切ok,于是我想切换到goproxy开发目录下,进行更深入的测试。谁知道,等我重新导入了goproxy目录下生成的GoProxy.crt证书后,就报上面的错误了。

这样我有点不能理解,于是我删了stage文件夹下的内容后,重新生成该文件夹下的打包文件,以及重新导入GoProxy.crt文件,发现竟然还是报上面的错。起先我怀疑是证书的问题,后来我又看到一种说法是Go版本有关,但事实证明都没关系。

解决方法是,我把Chrome浏览器关闭后,重新导入GoProxy.crt,然后再打开Chrome浏览器就可以了。原来,刚导入的证书,和打开的浏览器有一个缓存的关系。如果从钥匙串访问中把自签证书删了,重新导入新的证书的话,记得一定要重启浏览器。如果遇到某个网站报错的话,那是因为在cache/ecc文件夹下有该网站的证书缓存,将其清理掉就可以了。如果是隐藏文件,用命令行删除。可以使用ls命令查看文件夹权限及隐藏文件

1
ls -al cache/ecc

如果你使用的是goproxy-macos.command快捷打开方式,如果报错permission denied的错误的话,那是因为你的ecc文件夹的权限有可能是root用户的权限,将其修改成当前用户的权限即可,比如

1
chmod -R 当前用户名 ecc/
avatar

chilihotpot

You Are The JavaScript In My HTML