Eric's blog

随笔记录

使用OpenSSL自签发SSL证书,并使Chrome信任

自签证书后,导入本机,Chrome访问网站总是会出现如下错误:
NET::ERR_CERT_COMMON_NAME_INVALID
  此服务器无法证实它就是 domain.com - 它的安全证书没有指定主题备用名称。这可能是因为某项配置有误或某个攻击者拦截了您的连接。

主要是Chrome会校验证书的(SAN)主题备用名称,需要在证书的附加用途里加入对应的域名或IP地址。

1、本地生成非对称加密密钥(key)

1
openssl genpkey -out private.key -algorithm RSA -pkeyopt rsa_keygen_bits:2048

2、生成 CSR(证书签名请求文件)

1
openssl req -new -key private.key -out fd.csr

3、生成 CRT(自签证书)

添加 SAN 扩展

1
2
3
4
5
6
echo "subjectAltName=@SubjectAlternativeName" > fd.ext
echo "[ SubjectAlternativeName ]" >> fd.ext
echo "IP.1=192.168.1.1" >> fd.ext
echo "IP.2=192.168.1.2" >> fd.ext
echo "DNS.1=test.com" >> fd.ext
echo "DNS.2=*.test.com" >> fd.ext

生成证书

1
openssl x509 -req -days 16500 -in fd.csr -signkey private.key -out cert.crt -extfile fd.ext

4、系统配置信任自签证书

Mac直接导入钥匙串,然后在钥匙串中始终信任。

将证书导入“受信任的根证书颁发机构”。

可以打开mmc文件->添加删除管理单元证书中查看详情。

5、重启浏览器

参考文档:

  1. 使用OpenSSL自签发SSL证书,支持chrome识别
  2. 用魔法打败魔法,Chrome魔性跨域问题及本地https开发环境配置详解