升级原因

1.各大搜索引擎中,https的网页的权重比一般的http的网页权重要高。

2.从用户体验的角度,一个老是被浏览器提醒该网页不可信的网页,总不会让用户感到安心

所以将网站从http升级为https是很有必要的

用户配置

首先介绍一下这次升级的网站

使用阿里云的ecs服务器(不是广告)

nodejs+express网站后台

使用的证书为阿里云提供的免费证书

证书申请

首先你要将网站升级为https那么你得有权威机构发给你的证书(自己签发的证书可能会有问题在此不提)

但是一般的证书签发机构都是要收费的,那么不想花钱的小伙伴们怎么办呢?

免费的证书当然是有的,如果你恰好也是阿里云的用户,其他服务商可能也有,但是没有用过,不过大概流程应该是类似的

首先登录你的阿里云,然后进入控制台选择产品与服务

往下滑你会看到在安全分类中有证书

进入后可以购买免费证书,由于我已经购买所以在此就不做示范了

点击下载

这里选择下载nginx的版本

请注意这里的证书只有是系统自动给你生成的才能够改后缀

改后缀的原因在下面会讲到

然后打开下载的文件 将.pem后缀的文件修改为.crt

修改完成后就可以开始nodejs服务器的配置了

Node配置

我们都知道node创建服务器是通过http.createSever创建的

那么我们要将服务器设置为https访问就需要使用https.createSever来创建服务器

这个方法接收的参数如下

第一个参数为整数的配置信息

key为.key后缀的文件

cret为.crt后缀的文件

这里用fs模块读取即可

代码如下

const https = require('https'),
app = express(),
fs = require('fs'); //省略express配置的部分 https.createServer({
key: fs.readFileSync('./module/1536605146003.key'),//证书文件的存放目录
cert: fs.readFileSync('./module/1536605146003.crt')
},app).listen(443,'0.0.0.0');//https默认是443端口

首先本地测试一下

启动node服务器

输入https://localhost

如果正常你会看到浏览器给你的警告,因为你的证书是颁发给你的域名的,你在本地环境使用相当于冒用了你网站的证书所以浏览器会给出如下警告

在这里为了验证服务是否正常启动

点击高级

然后继续前往(平时访问网站请不要这么搞,炸了请勿找我)

然后你会看到你项目的正常页面,这里我就不展示我的项目了

如果能看到你项目的正常页面说明访问成功

下一步可以配置到服务器上了

服务器配置(centos7)

首先通过xftp将修改后的node配置传输到服务器上

修改完成后重启服务器,不出意外的话是无法访问的,因为你的服务器很有可能没有开启443端口

所以我们先看一下当前哪些端口是开启的

命令行输入

firewall-cmd --zone=public --list-ports

 这里看到我已经开启了443端口

如果没有打开的小伙伴依次如输入

firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload

再次执行最上面的命令应该即可以看到开放了443端口

开放过后应该就可以通过https的方式访问你的网站了

网站重定向

虽然在上方的操作完成后我们已经可以用https访问你的网站了

但会存在一些问题

比如你以前的用户并不知道你升级到了https或者你还有其他域名指向同一个网站

就比如我有两个域名都指向这同一个网站并且都解析在80端口

所以我需要将所有域名都指向我的新https的域名,并且让使用http访问的用户也能访问到升级过后的网站

所以我还需要写一个nodejs服务器帮我监听原来的80端口,并让它重定向到我的新网址

这里直接贴出代码

const http = require('http');

let sever = http.createServer(function (req,res) {
res.writeHead(301,{'Location':'https://已签发证书的网址'});
res.end();
}); sever.listen(80,'0.0.0.0');

然后丢到服务器上,并启动这样就可以将我们的网站平滑地过渡到https了

有需要的小伙伴,将代码中的 ‘已签发证书’ 替换为你的域名即可

nodejs从http升级到https(阿里云证书的使用)的更多相关文章

  1. https阿里云证书购买与apache环境配置

    1.在阿里云云盾安全->CA证书购买 2.下载证书解压文件,一般有四个文件 3.在/etc/apache2  下创建一个文件夹cert 放入以上四个文件(路径可自己任意选择) 4.$sudo a ...

  2. [转帖学习] 使用阿里云证书 升级https

    nodejs从http升级到https(阿里云证书的使用)  https://home.cnblogs.com/u/lhyxq/   改天买一个域名自己试试. 升级原因 1.各大搜索引擎中,https ...

  3. 网站http配置https -- 阿里云 nginx

    通过阿里云领取免费证书可将网站配置为https 步骤为下: 登陆阿里云点击sll证书,然后点击购买证书 选择免费的 然后立即购买 购买后会让你填写一些域名信息 然后提交签发证书 签发后点击下方下载 选 ...

  4. Spring Boot使用阿里云证书启用HTTPS

    1.到阿里云下载证书页面下载证书 2.根据页面内容,可以使用2种证书:PFX JKS 把对应证书放到src/main/resources目录下 在application.properties文件中加入 ...

  5. 三步解决fiddler升级后https无法通过证书验证问题

    有时候使用fiddler时,https页面会出现错误提示,我们可以这样设置来避免错误 第一步:去掉https的抓取 Tools>Option 去掉Capture HTTPS CONNECTs 的 ...

  6. Ubuntu16下apache2安装ssl阿里云证书

    1.用下面的命令确保ssl模块已经加载进apache: a2enmod ssl 如果你看到了“Module ssl already enabled”这样的信息就说明你成功了,如果你看到了“Enabli ...

  7. 阿里云免费ssl,https证书的申请和校验

    其实写这个之前一直在考虑要不要写出来 ,真的官方文档实在太强大了,连视频都给你录好了,配不好的,是不是可以考虑不用写程序了, 忽然想到第一次使用微信测试号,进行域名认证的时候,因为后台返回“echar ...

  8. 【故障公告】升级阿里云 RDS SQL Server 实例故障经过

    昨天晚上,我们使用的阿里云 RDS SQL Server 2008 R2 实例突然出现持续 CPU 100% 问题,后来我们通过重启实例恢复了正常(详见故障公告).但是在恢复正常后发现了新问题,这台 ...

  9. 在阿里云购买SSL证书,让网站支持HTTPS

    SSL简介 引自:https://baike.baidu.com/item/ssl/320778?fr=aladdin SSL SSL(Secure Sockets Layer 安全套接层),及其继任 ...

随机推荐

  1. jenkins Manage and Assign Roles使用

    1.安装插件  Role-based Authorization Strategy 2.使用插件 3.进入 Manage and Assign Roles  配置Pattern 匹配项目, 如果要匹配 ...

  2. python 装饰器的理解以及类装饰器

    python装饰器的作用就是在不改变原有函数结构的情况下给该函数增加一个新功能,就是不入侵到原来函数里面修改代码给其增加一个新功能 先看代码 def out(fn): def inner(*args, ...

  3. 【原】 The Linux Command Line- pwd,cd,ls,file,less

    pwd - print name of current working directory. cd - change directory ls - list directory contents fi ...

  4. 原生js实现Base64编码解码

    注:ie10+ var str = window.btoa("liusong"); console.log(str); var s = window.atob("bGl1 ...

  5. Django提交文件的方式

    以上传图片为列, 提交图片文件后能在不刷新页面的前提下显示图片 首先写出一个简单的提交文件的页面: <h>文件上传</h> 选择文件<input type="f ...

  6. JDK、JRE、JVM的区别

    JDK: JDK(Java Development Kit)顾名思义它是给开发者提供的开发工具箱,是给程序开发者用的.它除了包括完整的JRE(Java Runtime Environment),Jav ...

  7. Python开发【第八篇】:socket网络编程

    服务端: import socket server = socket.socket() #绑定要监听的端口 server.bind(('localhost',6969)) #监听 server.lis ...

  8. easyui 改变单元格背景颜色

    另外一种方法:https://www.cnblogs.com/raitorei/p/9989649.html easyui的datagrid改变整行颜色:https://www.cnblogs.com ...

  9. 写jsp文件时需要注意的一些小细节

    ①jsp文件的最开始的部分: <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  10. 优化linux,安装node环境

    就是这样我的心爱的云主机就被攻击了,反正我是很久没宠幸过她,肯定不是我去攻击人家,但是吧昨天就突然来了封邮件,小白一个查不出什么,用了 netsat -na显示所有连接到服务器的活跃的网络连接数,发现 ...