原文在这里, 由于步骤步骤有点小问题,及自己的理解,做个笔记。
由于其他文章的签名步骤会导致Chrome 不信任它,比如下面图片
创建步骤
安装 openssl (自行安装)
打开 GitBash GUI
创建根证书 (创建 CA.key 及 CA.crt)
注意:在git bash中 -subj "//C=CN\ST=BJ\L=BJ\O=TecDev"
而 不是 -subj "/C=CN/ST=BJ/L=BJ/O=TecDev"
不然会导致路径不识别而报错. 这里会根据命令行不同,路径访问也不同,根据情况自行调整,后续也一样
- Window GitBash GUI
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -subj "//C=CN\ST=BJ\L=BJ\O=TecDev" -keyout CA.key -out CA.crt -reqexts v3_req -extensions v3_ca
- Mac Iterm
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -subj "/C=CN/ST=BJ/L=BJ/O=TecDev -keyout CA.key -out CA.crt -reqexts v3_req -extensions v3_ca
创建应用独有的证书
创建私钥(private.key)
openssl genrsa -out private.key 2048
根据私钥创建一个证书请求文件csr(private.csr)
根据私钥创建一个证书请求文件csr,注意证书主体的描述使用-subj
参数描述,CN
必须和应用中请求的地址一致,可以是IP
地址或域名
这里使用的是局域网的地址。
openssl req -new -key private.key -subj "//C=CN\ST=BJ\L=BJ\O=TecDev\CN=10.34.135.144" -sha256 -out private.csr
如果为域名也可以改为:-subj "//C=CN\ST=BJ\L=BJ\O=TecDev\CN=www.test.com"
创建证书的扩展描述文件
根据证书请求文件创建证书,创建证书之前需要创建证书的扩展描述文件,如果不使用扩展描述文件,那么谷歌浏览器中无法授信,会提示证书无效。
创建一个名为:private.ext
的文件
[ req ]
default_bits = 1024
distinguished_name = req_distinguished_name
req_extensions = san
extensions = san
[ req_distinguished_name ]
countryName = CN
stateOrProvinceName = Guangdong
localityName = Guangzhou
organizationName = jimboCesjo
[SAN]
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = IP:10.34.135.144
其中以下需要按需修改:
stateOrProvinceName
代表省份localityName
城市organizationName
组织名/公司名字subjectAltName
必须与上一步的地址一一对应。 如果为 域名则为:subjectAltName = DNS:www.test.com
创建最终的 private.crt 证书
openssl x509 -req -days 364 -in private.csr -CA CA.crt -CAkey CA.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN
所有命令整合
O=TecDev
为证书的颁发机构,可以根据自己情况调整
待创建了 private.ext
后下次使用 创建证书即可一步完成.(将上面的步骤拼起来)
- Win
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -subj "//C=CN\ST=BJ\L=BJ\O=TecDev" -keyout CA.key -out CA.crt -reqexts v3_req -extensions v3_ca && openssl genrsa -out private.key 2048 && openssl req -new -key private.key -subj "//C=CN\ST=BJ\L=BJ\O=TecDev\CN=10.34.135.144" -sha256 -out private.csr && openssl x509 -req -days 364 -in private.csr -CA CA.crt -CAkey CA.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN
- Mac
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -subj "/C=CN/ST=BJ/L=BJ/O=JimboDev" -keyout CA.key -out CA.crt -reqexts v3_req -extensions v3_ca && openssl genrsa -out private.key 2048 && openssl req -new -key private.key -subj "/C=CN/ST=BJ/L=BJ/O=JimboDev/CN=10.34.135.144" -sha256 -out private.csr && openssl x509 -req -days 364 -in private.csr -CA CA.crt -CAkey CA.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN
检查完整性
最终完成的文件有这些:
如有缺少,请检查命令行的错误信息
所有步骤截图:
安装
- 双击根证书:
CA.crt
- 点击安装
- 本地计算机-下一步
- 选择受信任的根证书颁发机构
- 安装完毕
运行验证。
angular
测试程序,使用https
并且 使用创建的 (private.key
和 private.crt
) 证书
ng serve --ssl true --ssl-key ./cert/t2/private.key --ssl-cert ./cert/t2/private.crt --host 0.0.0.0
这样会启动本地的https 服务器,
我们打开Chrome 验证。 (如果不行请重启Chrome,甚至重启电脑)