创建受浏览器信任的自签名证书

原文在这里, 由于步骤步骤有点小问题,及自己的理解,做个笔记。

由于其他文章的签名步骤会导致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.keyprivate.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,甚至重启电脑)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值