MAC Chrome 56.0.2924.87 (64-bit) 下 证书验证失败
fwon opened this issue · comments
Line 44~47, 84 ~87 证书的扩展为何要注释掉?
背景:在使用Anyproxy的时候浏览器中CA证书验证出错。最终定位问题到该模块
解决:参考node-forge 生成x.509证书的代码,发现扩展是要设置的。去掉注释后浏览器HTTPS请求成功通过CA认证。
请问这里为何要注释掉这几行扩展?虽然去掉就能成功通过验证,但还是不大清楚其具体作用。
没什么原因,只是为了保持证书简洁,删掉些没用的东西...
我们复现下吧,如果确实是必要的字段,会给加回去。
下面是通过anyproxy --root安装证书并安装信任(系统已信任);
anyproxy --intercept 启动服务器,结果浏览器显示报错
感觉和你上面的证书没什么区别
上面有一点我说错了,我不单单取消注释的代码,在生成域名子证书的方法generateCertsForHostname中,做了一些修改
cert.setExtensions([
{ name: 'basicConstraints', cA: false },
{ name: 'subjectAltName', altNames: [{ type: 2, value: domain }] },
{ name: 'keyUsage', keyCertSign: false, digitalSignature: true, nonRepudiation: false, keyEncipherment: true, dataEncipherment: true },
{ name: 'extKeyUsage', serverAuth: true, clientAuth: true, codeSigning: false, emailProtection: false, timeStamping: false },
{ name: 'nsCertType', client: true, server: true, email: false, objsign: false, sslCA: false, emailCA: false, objCA: false },
{ name: 'subjectKeyIdentifier' }
]);
将某些字段设置为false, 重新安装证书,就能通过浏览器认证了,这应该是关闭了一些证书约束。但在你机器上可认证就不晓得是什么原因。