net 模块异步网络 API,用于创建基于流的 TCP 或 IPC 服务器 (net.createServer()) 和客户端
可以使用net.createConnection(options[, connectListener]) ,返回一个 socket
什么是 socket
socket是一个特殊的文件,在node中表现为一个双工流对象。通过向流写入内容发送数据,监听流的内容获取数据。
http 模块是建立在 net 模块之上,无须手动管理 socket,也不需要手动组装消息格式,其本质是 TCP/IP 服务.
const http = require('http')
const request = http.request('http://xxx', {method: 'GET'}, (res) => {
res.on('data', (chunk) => {
console.log(chunk.toString('utf8'))
})
res.on('end', () => {
console.log('end')
})
})
request.end();
const server = http.createServer((req, res) => {
console.log(req, res)
})
server.listen(8081)
现在就可以通过 http://localhost:8081/ 访问了
总结
https 和 http 的区别是 https 多了一个 SSL 证书
openssl genrsa -des3 -out ca-pri-key.pem 1024
genrsa:密钥对生成算法
-des3:使用对称加密算法des3对私钥进一步加密
命令运行过程中会让用户输入密码,该密码将作为des3算法的key
-out ca-pri-key.pem:将加密后的私钥保存到当前目录的ca-pri-key.pem文件中
pem:Privacy-Enhanced Mail (PEM)
1024:私钥的字节数
openssl req -new -key ca-pri-key.pem -out ca-pub-key.pem
通过私钥文件ca-pri-key.pem中的内容,生成对应的公钥,保存到ca-pub-key.pem中
运行过程中要使用之前输入的密码来实现对私钥文件的解密
其他输入信息
Country Name:国家名 CN
Province Name:省份名 Sichuan
Local Name:城市名
Company Name:公司名
Unit Name:部门名
Common Name:站点名
。。。
openssl x509 -req -in ca-pub-key.pem -signkey ca-pri-key.pem -out ca-cert.crt
使用X.509证书标准
通过证书请求文件ca-pub-key.pem生成证书
使用私钥ca-pri-key.pem加密
证书保存到ca-cert.crt文件中
openssl genrsa -out server-key.pem 1024
openssl req -new -key server-key.pem -out server-scr.pem
openssl x509 -req -CA ca-cert.crt -CAkey ca-pri-key.pem -CAcreateserial -in server-scr.pem -out server-cert.crt
const https = require("https");
const server = https.createServer(
{
key: fs.readFileSync(path.resolve(__dirname, "./server-key.pem")), //私钥
cert: fs.readFileSync(path.resolve(__dirname, "./server-cert.crt"))
},
(req, res) => {}
);
server.on("listening", () => {
console.log("server listen 443");
});
server.listen(443);