搭建https和http2服务器

Posted 编程杂技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建https和http2服务器相关的知识,希望对你有一定的参考价值。

1 nginx搭建https服务器

1.安装openssl  sudo apt-get install openssl

2.生成服务器的私钥和证书
openssl genrsa -des3 -out cyb.key 2048  
openssl req -new -key cyb.key -out cyb.csr  
openssl rsa -in cyb.key -out cyb_nopass.key
openssl req -new -x509 -days 3650 -key cyb_nopass.key -out cyb.crt

nginx启动的时候需要去读取cyb.key这个文件里的私钥,但是这个文件是需要密码才能打开的,所以需要生成一个不需要密码打开的文件nopass.keycyb_nopass.key,这样才能配置配置成功,否则在error.log里会有出错提示。
3.配置文件nginx.conf

这里写图片描述

配置完之后启动nginx,访问https://localhost就可以看到welcome to nginx这个页面。执行 netstat -an| grep 443命令可以看到有进程在监听443端口。这样就实现了https服务。

2 用nodejs创建一个https服务器

var https = require('https');
var fs = require('fs');

var options = {
    key: fs.readFileSync('./files/server-key.pem'),
    ca: [fs.readFileSync('./files/ca-cert.pem')],
    cert: fs.readFileSync('./files/server-cert.pem')
};

https.createServer(options,function(req,res){
    res.writeHead(200);
    res.end('hello world\n');
}).listen(11111);

证书可以百度一下怎么生成,最后执行,访问https://localhost:11111即可。

3 用nodejs创建一个http2服务器

使用谷歌的spdy协议。首先安装spdy协议,npm install spdy

const http2 = require('./node_modules/spdy/lib/spdy');
var fs = require('fs');
var options = {
    key: fs.readFileSync('./files/server-key.pem'),
    ca: [fs.readFileSync('./files/ca-cert.pem')],
    cert: fs.readFileSync('./files/server-cert.pem')
};
http2
  .createServer(options, function(req,res){
    res.writeHead(200);
    res.end('hello world\n');
})
  .listen(8080)

访问https://localhost:8080即可,spdy强制使用https。


以上是关于搭建https和http2服务器的主要内容,如果未能解决你的问题,请参考以下文章

http2 技术整理 nginx 搭建 http2

Linux yum仓库搭建http2.4源码编译和文件系统创建挂载

如何在项目中使用Http2.0?

简单比较 http https http2

HTTP2和HTTPS来不来了解一下?

centos6下基于http2.2搭建论坛博客系统及phpMyAdmin应用程序的实现