在chrome浏览器导入自签名的CA证书,使其识别为安全连接

测试域名为www.huawei.com,首先使用提供的方法生成服务证书、CA证书、私钥等。

操作方法:
1、将需要的CA证书链提取出来到windows环境。

父目录下的CAChainCert.pem为CA证书链,包含以上的RootCA.pem、L2CACert.pem、L3CACert.pem等。

我们可以使用openssl命令对服务证书、通用证书做CA证书校验:
SZX1000398961:/home/crt/rsa_crt # openssl verify -CAfile ../CAChainCert.pem ServiceDomainCert.pem
ServiceDomainCert.pem: OK
SZX1000398961:/home/crt/rsa_crt # openssl verify -CAfile ../CAChainCert.pem UniversalCert.pem
UniversalCert.pem: OK

2、把根证书、二级CA证书、三级CA证书导出来后,将格式名改为windows可识别的".crt"。

逐个双击crt证书,点击“安装证书”,点击“下一步”,选择证书存储为受信任的根证书颁发机构,点击确认完成导入证书。

3、使用生成的服务证书或者通用证书,部署https服务。

在linux环境使用curl测试https请求,看CA证书校验能否通过。
测试请求url:curl --CAcert CAChainCert.pem -v "https://www.huawei.com/test"
如果校验不通过,则会报“SSL certificate problem: unable to get local issuer certificate”之类的错误信息。
如果校验通过,则可正常访问。

在chrome浏览器使用测试域名访问,需要先在C:\Windows\System32\drivers\etc\hosts下配置好测试域名和访问ip。
如果CA证书校验通过,则会显示连接是安全的。

问题总结:
1、找不到签发证书,或者不在证书有效期内。

解决方法:点击查看各层级证书,确认导入证书没有问题。

2、chrome告警该连接是不安全的,报“NET::ERR_CERT_COMMON_NAME_INVALID ”信息。

解决方法:
参考https://support.google.com/chrome/a/answer/7391219?hl=zh-Hans
可能是因为chrome浏览器版本较高,不再采用证书里的Common Name部分校验域名,而是采用Subject Alternative Name部分校验域名。
可使用通用证书UniversalCert.pem代替服务证书ServiceDomainCert.pem,来提供https服务。
需在通用证书的SAN部分添加测试域名,例如*.huawei.com。

可通过openssl命令openssl x509 -in UniversalCert.pem -noout -text,查看SAN部分。

3、chrome告警该连接是不安全的,报“NET::ERR_CERT_WEAK_SIGNATURE_ALGORITHM”信息。

解决方法:
可能是因为chrome浏览器版本较高,认为证书签名算法采用了不安全的SHA1,而是应该采用SHA256。
可通过修改openssl签名命令,添加-sha256参数来使用SHA256签名算法。

以上2个问题解决后,正确的证书应该如下:

猜你喜欢

转载自www.cnblogs.com/linyihan/p/11234102.html