IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 5.5 tls简单使用 -> 正文阅读

[网络协议]5.5 tls简单使用

1、生成服务器证书,服务器使用自签名证书

openssl genrsa -out?server-key.pem 2048

openssl req -new?-sha256 -key server-key.pem -out?server-csr.pem????

//在CN处填写服务器主机名localhost

openssl x509 -req -in?server-csr.pem -signkey server-key.pem -out?server-cert.pem

 2、将服务器私钥server-key.pem和CA根证书server-cert.pem复制到客户端,然后生成客户端证书

openssl genrsa -out?client-key.pem 2048

openssl req -new?-sha256 -key client-key.pem -out?client-csr.pem????

//在CN出填写客户端localhost

openssl x509 -req -CA server-cert.pem -CAkey server-key.pem -CAcreateserial -in?client-csr.pem -out?client-cert.pem

3、 server.js

const tls = require('tls');
const fs = require('fs');

const options = {
    key: fs.readFileSync('server-key.pem'),
    cert: fs.readFileSync('server-cert.pem'),

    // 这仅在使用客户端证书身份验证时才需要。
    requestCert: true,

    // 仅当客户端使用自签名证书时才需要这样做。
    ca: [ fs.readFileSync('client-cert.pem') ]
};

const server = tls.createServer(options, (socket) => {
    console.log('server connected',
        socket.authorized ? 'authorized' : 'unauthorized');
    socket.write('welcome!\n');
    socket.setEncoding('utf8');
    // socket.pipe(socket);socket是双工流
    socket.on('data',function (data){
        console.log(data)
    })
    process.stdin.pipe(socket);
});
server.listen(8000, () => {
    console.log('server bound');
});

4、client.js

const tls = require('tls');
const fs = require('fs');

const options = {
    // 仅当服务器需要客户端证书身份验证时才需要。
    key: fs.readFileSync('client-key.pem'),
    cert: fs.readFileSync('client-cert.pem'),

    // 仅当服务器使用自签名证书时才需要。
    ca: [ fs.readFileSync('server-cert.pem') ],

    // 仅当服务器的证书不适用于 "localhost" 时才需要。
    checkServerIdentity: () => { return null; },
};

const socket = tls.connect(8000, options, () => {
    console.log('client connected',
        socket.authorized ? 'authorized' : 'unauthorized');
    process.stdin.pipe(socket);
    // socket.pipe(socket)
    process.stdin.resume();
});
socket.setEncoding('utf8');
socket.on('data', (data) => {
    console.log(data);
});
socket.on('end', () => {
    console.log('server ends connection');
});

先启动server,再启动client,server端便能和client端进行消息通信了

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:30:49  更:2022-03-21 21:33:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:30:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码