express启用https使用小记

微信小程序的服务器域名只支持https和wss,我用nodejs的express作为后端服务,经百度和折腾,成功启用https服务。

总结以下几步,供参考。

1.申请SSL证书

笔者用的是腾讯云,申请的是为期一年免费的证书,具体申请步骤不展开介绍,颁发证书后,得到文件:

需要用到的文件在文件夹IIS中。

2.将证书放到项目中

将后缀为.pfx的证书文件放到express项目的静态文件夹中,笔者放在项目根目录下的public文件夹下。

3.在express的index.js中引用证书

import express from 'express';
import fs from 'fs';
import path from 'path';
import bodyParser from 'body-parser';
// 引入history模块
import history from 'connect-history-api-fallback';
import https from 'https';
const app = express();
const options = {
  pfx: fs.readFileSync(path.join(__dirname, 'public','www.****.***.pfx')),
  passphrase: '***********'
};
//options有两个选项,一个是证书本体,一个是密码(刚刚的IIS文件夹的keystorePass.txt文件中)
let server = https.createServer(options,app);
app.use(history());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));
app.use("/static/file",express.static(path.join(__dirname, 'public')));
app.use(function (req, res, next) {
  var err = new Error('Not Found');
  err.status = 404  next(err)});
// error handler
app.use(function (err, req, res, next) {
  res.status(err.status || 500);
  console.log(err);
  res.send(err.message)
});
// 设置监听端口
const SERVER_PORT = 3000;
server.listen(SERVER_PORT, (req, res) => {
  console.info(`服务已经启动,监听端口${SERVER_PORT}`)
})
export default app

引入https模块,设置options配置。

如上述代码,options有两个选项,一个是证书本体,一个是密码(刚刚的IIS文件夹的keystorePass.txt文件中)

之后定义server,传入option和express实例app,设置监听端口即可。

4.启动服务

将后端项目部署到服务器中,启动express,可正常访问https服务。

后言

笔者大四下,很遗憾之前完成毕业设计那段时间没有坚持写文章。

目前全栈开发了一款微信小程序,刚上线不久。还写了一款桌面程序,不过引入微信支付不太顺利。

希望能把自己的经验和遇到的坑多多写成文章记录下来,对同样有兴趣的朋友提供参考。也希望大家多多支持我们。

(0)

相关推荐

  • Express的HTTP重定向到HTTPS的方法

    我本地测试时, HTTP使用3000端口, HTTPS使用443. 同时监听HTTP和HTTPS 参考上一篇文章Express本地测试HTTPS 转发所有GET请求 httpApp.get("*", (req, res, next) => { let host = req.headers.host; host = host.replace(/\:\d+$/, ''); // Remove port number res.redirect(`https://${host}${req

  • nodejs express配置自签名https服务器的方法

    在nodejs中使用express来搭建框架可以说是非常的简单方便,但是一般默认创建的都是http服务器,也就是只能通过http协议进行访问.如今https已经是发展趋势,我们应该顺应时代的潮流.在本篇文章中,我们将会来使用自签名的方式创建证书,然后使用express框架来搭建https服务器,最后让浏览器或者客户端使用https协议进行访问. 首先我们要生成证书文件: (1)生成私钥key文件(下面的pathway表示你要保存的文件路径位置) openssl genrsa 1024 > /pa

  • Express本地测试HTTPS的示例代码

    我的环境 亚马逊(AWS)的一个ubuntu虚拟机. node openssl 生成证书 输入如下命令会在你的当前文件夹生成localhost.key和localhost.cert. openssl genrsa -out localhost.key 2048 openssl req -new -x509 -key localhost.key -out localhost.cert -days 3650 -subj /CN=localhost 其中localhost为域名. 想要换成别的域名就直

  • express启用https使用小记

    微信小程序的服务器域名只支持https和wss,我用nodejs的express作为后端服务,经百度和折腾,成功启用https服务. 总结以下几步,供参考. 1.申请SSL证书 笔者用的是腾讯云,申请的是为期一年免费的证书,具体申请步骤不展开介绍,颁发证书后,得到文件: 需要用到的文件在文件夹IIS中. 2.将证书放到项目中 将后缀为.pfx的证书文件放到express项目的静态文件夹中,笔者放在项目根目录下的public文件夹下. 3.在express的index.js中引用证书 import

  • win2003架设证书服务器及让IIS6启用HTTPS服务

    现在到处是劫持网址加广告的,这样通过https访问,就不用担心了,比较适合对安全级别要求高的网站,当然老站更需要开启https了. 无废话图文教程,教你一步一步搭建CA服务器,以及让IIS启用HTTPS服务. 一.架设证书服务器(CA服务) 1.在系统控制面板中,找到"添加/删除程序",点击左侧的"添加/删除windows组件",在列表中找到"证书服务",安装之. 2.CA类型,这里有四种选择,这里以"独立根CA"为介绍. 3

  • SpringBoot2.0如何启用https协议

    SpringBoot2.0之后,启用https协议的方式与1.*时有点儿不同,贴一下代码. 我的代码能够根据配置参数中的condition.http2https,确定是否启用https协议,如果启用https协议时,会将所有http协议的访问,自动转到https协议上. 一.启动程序  package com.wallimn.iteye.sp.asset; import org.apache.catalina.Context; import org.apache.catalina.connect

  • 在服务器上启用HTTPS的详细教程

    现在,你应该能在访问https://konklone.com的时候,在地址栏里看到一个漂亮的小绿锁了,因为我把这个网站换成了HTTPS协议.一分钱没花就搞定了. 为什么要使用HTTPS协议: 虽然SSL并不是无懈可击的,但是我们应该尽可能提高窃听成本 加密通讯不应心存侥幸,所有连接都应被加密 福利: 使用了HTTPS之后,如果网站的访客是从其他已经使用了HTTPS的网站上跳转过来,你就能在Google Analytics中获取更完整的来源信息(比如Hacker News). 本文将为您说明,如何

  • startssl申请SSL证书 并且配置 iis 启用https协议

    先在 startssl.com 这个站点上申请一个免费的1年的 ssl证书 申请步骤比较简单, 你要先验证一个使用这个证书的域名, 会把验证码发送到域名注册邮箱里. 接下来是输入完整域名来验证SSL 证书, 我填写的是一个二级域名 然后就填写证书签名, Certificate Signing Request 然后可以下载一个 startcomtool.exe 这个工具 点击generate CSR 然后将右侧的信息复制粘贴到 StartCom申请站点里,就完成了证书的申请,然后进入下载页面选择你

  • 网站启用https后的SSL的安全配置和检测

    现在的网站通常开启SSL已经是标配了,不过,配置好了SSL后,还需要判断一下服务器部署的是否安全,如果没有配置好的话,会带来很多安全隐患. SSL/TLS 系列中有六种版本:SSL v2,SSL v3,TLS v1.0,TLS v1.1.TLS v1.2.TLS v1.3: SSL v2 是不安全的,不能使用. 当与 HTTP(POODLE 攻击)一起使用时,SSL v3 是不安全的,当与其他协议一起使用时,SSL v3 是弱的.它也是过时的,不应该被使用. TLS v1.0 也是不应该使用的传

  • springboot 同时启用http/https的配置方法

    1. 启用HTTPS 修改配置 application.yml server: # port: 80 port: 443 ssl: enabled: true key-store: /key_store.jks key-store-password: key_store_pwd 2. 添加http协议连接器 增加JAVA配置 @Bean public ServletWebServerFactory servletWebServerFactory() { TomcatServletWebServe

  • ASP.NET Core 1.0 部署 HTTPS(.NET Core 1.0)

    最近要做一个项目,正逢ASP.Net Core 1.0版本的正式发布.由于现代互联网的安全要求,HTTPS加密通讯已成主流,所以就有了这个方案. 本方案启发于一个旧版的解决方案: ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1) http://www.cnblogs.com/qin-nz/p/aspnetcore-using-https-on-dnx451.html?utm_source=tuicool&utm_medium=referral  在

  • 详解Nginx服务器中配置全站HTTPS安全连接的方法

    HTTPS就等于HTTP加上TLS(SSL),HTTPS协议的目标主要有三个: 数据保密性.保证内容在传输过程中不会被第三方查看到.就像快递员传递包裹时都进行了封装,别人无法知道里面装了什么东西.     数据完整性.及时发现被第三方篡改的传输内容.就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收.     身份校验.保证数据到达用户期望的目的地.就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方. 启用

  • Nginx服务器配置HTTPS nginx.config 配置文件(教程)

    目录位置: /usr/local/www/nginx/conf(仅供参考) server { listen 443 ssl; server_name localhost; ssl_certificate server.crt; # cert.pem; ssl_certificate_key server.key; # cert.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL

随机推荐