大家好,欢迎来到IT知识分享网。
绝大部分demo和姿势都可以在nodejs官网查看到。可以多多查阅
自签名的证书生成(不推荐2333)
openssl genrsa -out server.key 2048//这是秘钥
openssl req -new -sha256 -key server.key -out csr.pem//这好像是签名请求?没在意
openssl x509 -req -in csr.pem -signkey server.key -out cert.pem//这是证书
以下代码来自官网demo改编
https 服务器端 servers
// curl -k https://localhost:8000/
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('./ssl/server.pem'),//这是我在ssl目录下生成的server.key改名为server.pem
cert: fs.readFileSync('./ssl/cert.pem'),
requestCert:true, //请求客户端证书
rejectUnauthorized:false //如果没有请求到客户端来自信任CA颁发的证书,拒绝客户端的连接
};
https.createServer(options, (req, res) => {
res.writeHead(200);
console.log(req);
console.log(typeof req);
console.log(req.method);
res.end('hello world\n');
}).listen(9000);
console.log("server https is running 9000");
//接下来是https post请求demo 以验证证书,其实可以此时可以用浏览器访问你的端口,注意看浏览器栏,左边一般有个红色三角感叹号,那就是说有个证书,但是证书不规范233
//以下程序也来自官方demo改编
const https = require('https');
const fs = require('fs');
const querystring = require("querystring");
const postData = querystring.stringify({
'msg': 'Hello World!'
});
const options = {
hostname: '127.0.0.1',
port: 9000,
path: '/',
method: 'POST',
requestCert:true, //请求客户端证书
rejectUnauthorized: false, //不拒绝不受信任的证书
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(postData)
}
};
const req = https.request(options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
});
res.on('end', () => {
console.log('No more data in response.');
});
});
req.on('error', (e) => {
console.error(`problem with request: ${e.message}`);
});
// write data to request body
req.write(postData);
req.end();
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/21625.html