当前位置: 首页 > 科技观察

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

时间:2023-03-21 21:31:43 科技观察

本文为使用过程中的工具记录,可实现在本地开启HTTPS服务器进行开发或测试。我们将首先创建一个CA根证书,然后创建一个由CA根证书签名的自定义证书。本文从以下几个方面进行讲解:创建自己的自定义证书颁发机构CA使用CA根证书签署服务器证书在Node.js服务器中配置证书将根证书添加到本地计算机的受信任根存储创建自己的自定义证书发证机构CA生成私钥$opensslecparam-outca.key-nameprime256v1-genkey生成证书申请文件$opensslreq-new-sha256-keyca.key-outca.csr#下面是需要交互的信息输入CountryName(2lettercode)[]:CNStateorProvinceName(fullname)[]:BeiJingLocalityName(eg,city)[]:BeiJingOrganizationName(eg,company)[]:Node.jsOrganizationalUnitName(eg,section)[]:Node.jsCommonName(eg,完全合格的主机名)[]:test.ca。comEmailAddress[]:Pleaseenterthefollowing'extra'attributestobesentwithyourcertificaterequestAchallengepassword[]:abc123***Generaterootcertificate$opensslx509-req-sha256-days365-inca.csr-signkeyca.key-outca.crt使用CA根证书签署服务器证书生成私有key$opensslecparam-outserver.key-nameprime256v1-genkey生成证书请求文件$opensslreq-new-sha256-keyserver.key-outserver.csr#注意下面服务器证书的CommonName不能和颁发者的CommonName相同CACountryName(2lettercode)[]:CNStateorProvinceName(fullname)[]:ShangHaiLocalityName(eg,city)[]:ShangHaiOrganizationName(例如,company)[]:Node.jsOrganizationalUnitName(eg,section)[]:Node.jsCommonName(eg,fullyqualifiedhostname)[]:test.https.comEmailAddress[]:Pleaseenterthefollowing'extra'attributestobesentwithyourcertificaterequestAchallengepassword[]:abc123***使用CA的根证书作为服务器证书的签名$opensslx509-req-inserver.csr-CAca.crt-CAkeyca.key-CAcreateserial-outserver.crt-days365-sha256#成功后会有下面提示Signatureoksubject=/C=CN/ST=ShangHai/L=ShangHai/O=Node.js/OU=Node.js/CN=test.https.comGettingCAPrivateKey服务器证书中使用的域名是我们自己定义的和需要映射到本地hosts文件中。如果不知道为什么要修改以及如何修改可以参考文章DNS域名解析过程?服务器的证书文件,ca.crt是我们创建的根证书在Node.js服务器中配置证书constexpress=require('express');consthttps=require('https');constfs=require('fs');constapp=express();constPORT=8443;constoptions={key:fs.readFileSync('./cert/server.key'),cert:fs.readFileSync('./cert/server.crt')};https.createServer(options,app).listen(PORT,()=>console.log(`Applisteningonport${PORT}!`));app.get('/',(req,res)=>res.send('HelloWorld!'));这个时候在Chrome浏览器Access中还是不行,至少在Chrome85.0.4183.121中,在浏览器中打开证书文件也显示证书不受信任。为了解决这个问题,继续往下看。将根证书添加到本地计算机的受信任根存储中找到我们刚刚生成的根证书文件,然后双击打开它。得到如下提示是因为系统提示要为当前用户添加新的根证书,这样其他用户不会受到测试的影响。不建议修改系统根证书,对当前电脑所有用户生效。此外,Mac也无法修改。image.png按照以下步骤添加根证书,修改证书为信任,最后需要使用密码确认,重新打开链接。有提示,我们可以继续访问,证书的状态也显示为valid。参考support.apple.com/zh-cn/guide/keychain-access/kyca2431/macconfigure-the-certificate-in-your-web-servers-tls-settings本文转载自微信公众号《Nodejs技术栈》”,您可以通过以下二维码关注。转载本文请联系Nodejs技术栈公众号。