文中为应用全过程中的一个专用工具纪录,可保持在当地打开一个 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,fullyqualifiedhostname)[]:test.ca.comEmailAddress[]:Pleaseenterthefollowing'extra'attributestobesentwithyourcertificaterequestAchallengepassword[]: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)[]:CNStateorProvinceName(fullname)[]:ShangHaiLocalityName(eg,city)[]:ShangHaiOrganizationName(eg,company)[]:Node.jsOrganizationalUnitName(eg,section)[]:Node.jsCommonName(eg,fullyqualifiedhostname)[]:test.https.comEmailAddress[]:Pleaseenterthefollowing'extra'attributestobesentwithyourcertificaterequestAchallengepassword[]:abc123***
$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 解析域名全过程?github.com/qufei1993/http-protocol/blob/master/docs/dns-process.md
进行以后能够看见如下所示文件,server.crt 是服务器的证书文件,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 电脑浏览器中仍无法打开,最少在 Chrome 85.0.4183.121 是如此的,电脑浏览器中开启证书文件也表明的证书不是受信赖的。
为了更好地彻底解决这个问题,再次往下看。
加上根证书到当地电子计算机的受信赖根储存中
寻找大家刚转化成的根证书文件,双击鼠标开启。
获得如下所示提醒,是由于系统提示新根证书应加上到现阶段客户下,那样就不可能由于检测去危害其他客户,系统软件根证书不是推荐改动的,这会对现阶段测算的全部客户起效,此外 Mac 中也是不可更改的。
image.png
依照下列流程加上根证书,改动证书为信赖,最终会必须使用登陆密码开展确定
再次开启连接,是有显示的,我们可以再次前去浏览,此外证书的模式也表明为了更好地合理。
Reference
- support.apple.com/zh-cn/guide/keychain-access/kyca2431/mac
- configure-the-certificate-in-your-web-servers-tls-settings
文中摘自微信公众平台「Nodejs技术栈」,可以利用下面二维码关心。转截文中请联络Nodejs技术栈微信公众号。