我已经创建了一个自签名根证书颁发机构,如果我将其安装到 Windows、Linux 上,或者甚至使用 Firefox(Windows/Linux/macosx)中的证书存储区,它都可以与我的终止代理完美配合。
我已将其安装到系统钥匙串中,并且已将证书设置为始终信任。
Chrome 浏览器详细信息中显示“Chrome 在此次连接尝试期间收到的证书格式不正确,因此 Chrome 无法使用它来保护您的信息。错误类型:证书格式错误”
我使用以下代码创建证书:
openssl genrsa -des3 -passout pass:***** -out private/server.key 4096
openssl req -batch -passin pass:***** -new -x509 -nodes -sha1 -days 3600 -key private/server.key -out server.crt -config ../openssl.cnf
如果问题不是格式错误(因为它在其他地方都可以正常工作),那么可能是什么问题?我安装不正确吗?
更新
我尝试更改证书属性,但无济于事:
openssl genrsa -des -passout pass:***** -out private/server.key 2048
openssl req -batch -passin pass:***** -new -x509 -nodes -sha256 -days 3600 -key private/server.key -out server.crt -config ../openssl.cnf
答案1
openssl 配置默认具有中间证书,basicConstraints=CA:TRUE
但是在我的例子中,由于我使用中间证书作为最终用户证书,因此我需要这样做basicConstraints=CA:FALSE
。
在 windows/linux/firefox 上这似乎并不重要,但 mac 上的安全设置使其成为必需。