创建HTTPS服务

HTTPS

HTTP协议的连接流程相当简单,client发出一个request报文,server收到之后回复一个response报文。没有认证过程,没有加解密过程。

HTTPS协议因为要做身份认证,要商议密钥,要进行报文的加解密。所以需要借助OPENSSL库来实现TLS标准的流程。

服务器端需要的文件

privatekey.pem: 私钥

生成一个长度为1024位的RSA私钥文件。

    openssl genrsa -out privatekey.pem 1024

certrequest.csr: CSR证书签名

通过私钥来生成一个CSR证书签名文件,这其中要求你填入一些个人信息。

    openssl req -new -key privatekey.pem -out certrequest.csr

certificate.pem: 证书文件

通过私钥文件和证书签名文件生成证书文件。

    openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem

默认端口

标准默认的情况,即你在web浏览器上输入地址时不后缀端口号时所使用的端口,HTTP的端口号是80,HTTPS的端口号是443。当然我们可以自定义为其他的端口,只不过在访问时必须要指明。在Linux下监听默认端口是需要程序有root权限的。

node.js的https模块

node.js带有内建立的https模块,所以可以很容易的搭建起https服务。

node.js的第三模块express提供了更方便的应用层app的开发接口。

var https = require('https');
var fs = require('fs');
var express = require('express');
var port = 443;


var options = {
	key: fs.readFileSync('./privatekey.pem'),
	cert: fs.readFileSync('./certificate.pem')
};
var app = express();

app.get('/', function(req, res){

	res.send("Hello this is HTTPS fontpage.");

});

app.get('/lucky', function(req, res){

	res.send("Hello this is lucky page.");

});

https.createServer(options, app).listen(port, function(){

	console.log("https server listening..." + port);

});
*****
Written by Lu.dev on 25 September 2016