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。结果如下:

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

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

  • 相关阅读:
    linux多线程下载工具mwget
    mysql性能优化学习笔记-参数介绍及优化建议
    mongodb 基础知识
    cas 单点登录出现org.jasig.cas.client.util.CommonUtils.getResponseFromServer
    mysql性能优化学习笔记-存储引擎
    mysql性能优化学习笔记
    (Code) Python implementation of phrase extraction from sentence
    论文笔记:Siamese Cascaded Region Proposal Networks for Real-Time Visual Tracking
    论文笔记:ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware
    论文笔记:DARTS: Differentiable Architecture Search
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6147398.html
Copyright © 2011-2022 走看看