zoukankan      html  css  js  c++  java
  • Nodejs创建https服务器(Windows 7)

    为了实验一下WebRTC,搭了个简单的https服务器。说说步骤:

    1. 生成OpenSSL证书
    2. 使用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
    ');
        }).listen(8000);
    

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

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

    我们创建的证书没有经过身份验证,不受信。有需要的话,可以去有资质的网络运营商申请自己的证书。

  • 相关阅读:
    mysql prepare语句使用
    mysql 存储过程中的declare 和 set @的两种变量的区别
    Redis命令总结
    系统架构师
    php 大数组的POST问题解决
    ubuntu设置系统时间与网络时间同步
    JAVA开发者最常去的20个英文网站
    文件上传之一句话木马原理及制作
    Postman怎么进行参数化
    单元测试、接口测试、功能测试的区别
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6147398.html
Copyright © 2011-2022 走看看