kavin

自定义根证书颁发机构 CA 生成自签名证书

kavin 安全防护 2022-11-25 403浏览 0

自定义根证书颁发机构 CA 生成自签名证书

本文为使用过程中的一个工具记录,可实现在本地开启一个 HTTPS 服务器用于开发或测试。我们会先创建一个 CA 根证书,再创建一个由 CA 根证书签名的自定义证书。

本文从以下几个方面讲解:

  • 创建自己的自定义证书颁发机构 CA
  • 使用 CA 根证书签名服务器证书
  • 在 Node.js 服务器中配置证书
  • 添加根证书到本地计算机的受信任根存储中

创建自己的自定义证书颁发机构 CA

  • 生成私钥
$opensslecparam-outca.key-nameprime256v1-genkey
  • 生成证书请求文件
$opensslreq-new-sha256-keyca.key-outca.csr

#以下为需要输入的交互信息
CountryName(2lettercode)[]:CN
StateorProvinceName(fullname)[]:BeiJing
LocalityName(eg,city)[]:BeiJing
OrganizationName(eg,company)[]:Node.js
OrganizationalUnitName(eg,section)[]:Node.js
CommonName(eg,fullyqualifiedhostname)[]:test.ca.com
EmailAddress[]:

Pleaseenterthefollowing'extra'attributes
tobesentwithyourcertificaterequest
Achallengepassword[]:abc123***
  • 生成根证书
$opensslx509-req-sha256-days365-inca.csr-signkeyca.key-outca.crt

使用 CA 根证书签名服务器证书

  • 生成私钥
$opensslecparam-outserver.key-nameprime256v1-genkey
  • 生成证书请求文件
$opensslreq-new-sha256-keyserver.key-outserver.csr

#注意下面服务器证书的CommonName不能与上面颁发者CA的CommonName一样
CountryName(2lettercode)[]:CN
StateorProvinceName(fullname)[]:ShangHai
LocalityName(eg,city)[]:ShangHai
OrganizationName(eg,company)[]:Node.js
OrganizationalUnitName(eg,section)[]:Node.js
CommonName(eg,fullyqualifiedhostname)[]:test.https.com
EmailAddress[]:

Pleaseenterthefollowing'extra'attributes
tobesentwithyourcertificaterequest
Achallengepassword[]:abc123***
  • 使用 CA 的根证书为服务器证书签名
$opensslx509-req-inserver.csr-CAca.crt-CAkeyca.key-CAcreateserial-outserver.crt-days365-sha256

#成功之后有以下提示
Signatureok
subject=/C=CN/ST=ShangHai/L=ShangHai/O=Node.js/OU=Node.js/CN=test.https.com
GettingCAPrivateKey

服务端证书中使用到的域名是我们自己定义的,需要在本地 hosts 文件做映射,如果不知道为什么要修改和该如何修改的

继续浏览有关 安全 的文章
发表评论