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

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

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

  • 相关阅读:
    关于CSS自文档的思考_css声明式语言式代码注释
    html5中contenteditable属性如果过滤标签,过滤富文本样式
    web前端工程化/构建自动化
    Python连载19-装饰器
    Java连载1-概述&常用的dos命令
    HTML连载18-id选择器与class区别&class选择器使用思路&后代选择器
    Python连载18-closure闭包解释及其注意点
    HTML连载17-id选择器&类选择器
    Python连载17-排序函数&返回函数的函数
    HTML连载16-颜色控制属性2&标签选择器
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6147398.html
Copyright © 2011-2022 走看看