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

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

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

  • 相关阅读:
    JSP指令简介(转)
    test markdown
    10个值得前端收藏的CSS3动效库(工具)
    停止不必要的UI动效设计
    UI新手学配色
    改网页鼠标指针、改指定元素指针(2)——小白也能自绘指针
    CSS改网页鼠标指针、改指定元素指针(1)——代码部分
    更高的效率、管理你的文件:Listary!!
    对js操作html的实践【2】——随机标题与滚动标题
    对js操作html的实践【1】——实现网页假崩溃吸引网友注意力
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6147398.html
Copyright © 2011-2022 走看看