昆明app网站开发公司,随州网站建设哪家专业,seon是什么意思,h5响应式网站建设代理服务端和客户端各有一对公钥和私钥#xff0c;使用公钥加密的数据只能用私钥解密#xff0c;建立https传输之前#xff0c;客户端和服务端互换公钥。客户端发送数据前使用服务端公钥加密#xff0c;服务端接收到数据后使用私钥解密#xff0c;反之亦如此。
1. 公钥私钥的…服务端和客户端各有一对公钥和私钥使用公钥加密的数据只能用私钥解密建立https传输之前客户端和服务端互换公钥。客户端发送数据前使用服务端公钥加密服务端接收到数据后使用私钥解密反之亦如此。
1. 公钥私钥的生成可用openssllinuxmac自带windows上需要自己安装工具来生成具体生成步骤如下
// 生成服务器端私钥
$ openssl genrsa -out server.key 1024 //生成服务端公钥
$ openssl rsa -in server.key -pubout -out server.pem
如果只使用公钥/私钥会面临一个问题中间人攻击。在客户端与服务端呼唤公钥的过程中中间人对服务端充当客户端对客户端充当服务端的角色。服务端和客户端很难感受到中间人的存在。为了应对这种情况还需要对得到的服务端公钥进行认证确定这个公钥是来自你访问的网站。证书里包含了服务器的名称主机名服务端的公钥签发证书机构的名称来自签名颁发机构的签名。在客户端拿到公钥后会对签名的公钥进行检查是否来自目标服务器这样避免中间人攻击生成签名证书的过程如下需要用户输入的信息随便填写吧偷懒的话可以一路敲回车 2. 生成自签名证书 CA(Certificate Authority数字证书认证中心) CA的作用是为站点颁发证书且这个证书有CA通过自己的公钥和私钥实现的签名。通过CA机构颁发证书耗时耗力贵啊淘宝有单域名证书。。。。这里使用自签名证书说白了就说自己扮演CA机构给自己颁发证书。
//生成CA私钥
$ openssl genrsa -out ca.key 1024//生成csr文件
$ openssl req -new -key ca.key -out ca.csr//生成自签名证书
$ openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt//生成server.csr文件
$ openssl req -new -key server.key -out server.csr//生成带有ca签名的证书
$ openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
3. 使用express和https进行配置服务
const https require(https);
const fs require(fs);
const path require(path);
const express require(express)
const ip require(address).ip()
const app express();
app.use(express.static(./))
const options {key: fs.readFileSync(path.join(__dirname, ssl/server.key)),cert: fs.readFileSync(path.join(__dirname, ssl/server.crt)),
};
const server https.createServer(options, app);
server.listen(3000, () {console.log(server is running at ${ip}:3000/vnc.html)
})
使用chrome访问自签名网站会提示不安全选择继续就行
使用脚手架工具生成的代码把app.listen 转接到httsServer.listen就可以了暂未找到其他方法直接生成使用https的脚手架