美文网首页
node启动https服务

node启动https服务

作者: liuniansilence | 来源:发表于2017-11-30 15:34 被阅读0次

    node.js可以在安装了http-server后,在本地起服务。但只能启动http服务,启动https服务需要密钥和证书。

    生成密钥、证书

    第一步,为服务器端和客户端准备公钥、私钥

    // 生成服务器端私钥
    openssl genrsa -out server.key 1024
    // 生成服务器端公钥
    openssl rsa -in server.key -pubout -out server.pem
    // 生成客户端私钥
    openssl genrsa -out client.key 1024
    // 生成客户端公钥
    openssl rsa -in client.key -pubout -out client.pem
    

    第二步,生成 CA 证书

    // 生成 CA 私钥
    openssl genrsa -out ca.key 1024
    // X.509 Certificate Signing Request (CSR) Management.
    openssl req -new -key ca.key -out ca.csr
    // X.509 Certificate Data Management.
    openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt
    

    在执行第二步时会出现:

    ➜ keys openssl req -new -key ca.key -out ca.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]:shanghai
    Locality Name (eg, city) []:shanghai
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:My CA
    Organizational Unit Name (eg, section) []:
    Common Name (e.g. server FQDN or YOUR name) []:localhost
    Email Address []:

    注意,这里的 Organization Name (eg, company) [Internet Widgits Pty Ltd]: 后面生成客户端和服务器端证书的时候也需要填写,不要写成一样的!!!可以随意写如:My CA, My Server, My Client。

    然后 Common Name (e.g. server FQDN or YOUR name) []: 这一项,是最后可以访问的域名,我这里为了方便测试,写成 localhost,如果是为了给我的网站生成证书,需要写成 barretlee.com。

    第三步,生成服务器端证书和客户端证书

    // 服务器端需要向 CA 机构申请签名证书,在申请签名证书之前依然是创建自己的 CSR 文件  
    openssl req -new -key server.key -out server.csr  
    // 向自己的CA机构申请证书,签名过程需要CA的证书和私钥参与,最终颁发一个带有CA签名的证书
    openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
    // client 端
    openssl req -new -key client.key -out client.csr
    // client 端到 CA 签名
    openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt
    

    完成这三步后,文件夹下会有以下文件:

        ├── ca.crt
        ├── ca.csr
        ├── ca.key
        ├── ca.srl
        ├── client.crt
        ├── client.csr
        ├── client.key
        ├── client.pem
        ├── server.crt
        ├── server.csr
        ├── server.key
        └── server.pem
    

    启动服务

    将文件放到某个文件夹下,新建记事本start.bat。
    将路径指向想要发布的目录,修改证书和秘钥所在位置。

    cd D:\workspace\project-foo\webapp
    http-server --cert d:\openssl-keys\server.crt --key d:\openssl-keys\server.key --ssl --cors -p 443
    
    适用场景:

    对于前后端分离的开发,如果页面由后端做渲染,且页面访问为https协议,可以在联调时候由前端起https服务,后端host切至前端的IP地址,可以直接访问前端的静态资源。

    参考: http://www.barretlee.com/blog/2015/10/05/how-to-build-a-https-server/

    相关文章

      网友评论

          本文标题:node启动https服务

          本文链接:https://www.haomeiwen.com/subject/hybvbxtx.html