您的位置:首页 > 理论基础 > 计算机网络

Nodejs创建https服务器(Windows 7)

2016-11-02 06:44 447 查看
为了实验一下WebRTC,搭了个简单的https服务器。说说步骤:

生成OpenSSL证书

使用Nodejs的https模块建立服务器

OpenSSL 证书

我机子Windows 7,安装了Cygwin,里面安装了openssl,我用它来生成https服务器需要的证书文件。

1. 生成私钥key文件

$ openssl genrsa -out privatekey.pem 1024

Generating RSA private key, 1024 bit long modulus
....++++++
.....................................++++++
e is 65537 (0x10001)


2. 通过私钥生成CSR证书签名

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

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:ShanXi
Locality Name (eg, city) []:Xian
Organization Name (eg, company) [Internet Widgits Pty Ltd]:foruok
Organizational Unit Name (eg, section) []:foruok
Common Name (e.g. server FQDN or YOUR name) []:foruok
Email Address []:foruok@163.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:


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

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

Signature ok
subject=/C=CN/ST=ShanXi/L=Xian/O=foruok/OU=foruok/CN=foruok/emailAddress=foruok@163.com
Getting Private key


Nodejs https 服务器示例

从Nodejs文档里摘出来的代码:

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

const options = {
key: fs.readFileSync('./privatekey.pem'),
cert: fs.readFileSync('./certification.pem')
};

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


执行 node httpsdemo.js,然后在Chrome里访问
access https://192.168.40.158:8000[/code]。结果如下: 


你可能注意到了,证书有点问题,点下地址栏,能看怎么回事儿:



我们创建的证书没有经过身份验证,不受信。有需要的话,可以去有资质的网络运营商申请自己的证书。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: