nodejs从http升级到https(阿里云证书的使用)

 https://home.cnblogs.com/u/lhyxq/
 
改天买一个域名自己试试.

升级原因

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端口

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

命令行输入

1
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了

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

 
 
标签: node阿里云

[转帖学习] 使用阿里云证书 升级https的更多相关文章

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

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

  2. [网站公告]3月10日23:00-4:00阿里云SLB升级,会有4-8次连接闪断

    大家好,阿里云将于3月10日23:00-4:00对负载均衡服务(SLB)做升级操作,升级期间SLB网络连接会有约4-8次闪断.由此给您带来麻烦,敬请谅解! 阿里云SLB升级公告内容如下: 尊敬的用户: ...

  3. 配置阿里云SLB全站HTTPS集群

    配置阿里云SLB全站HTTPS集群(以下内容仅为流程,信息可能有些对应不上) 1 登录阿里云购买两台实例 1.1 按量付费购买两台实例 1.2 配置网络可以不选择分配外网 1.3 自定义密码 1.4 ...

  4. nodejs从http升级到https(阿里云证书的使用)

    升级原因 1.各大搜索引擎中,https的网页的权重比一般的http的网页权重要高. 2.从用户体验的角度,一个老是被浏览器提醒该网页不可信的网页,总不会让用户感到安心 所以将网站从http升级为ht ...

  5. [云上天气预报-有时有闪电]2月3日23:00-4:00阿里云SLB升级期间网络会闪断

    大家好,2月3日23:00-2月4日4:00,阿里云将对SLB(负载均衡)进行升级,在升级期间,SLB会有约4-8次的网络闪断.由此给您带来麻烦,望谅解! 阿里云官方公告内容如下: 尊敬的用户: 您好 ...

  6. [网站公告]23:00-05:00阿里云SLB升级会造成4-8次每次10秒的闪断

    大家好,阿里云将于今天夜里(7月29日23:00-7月30日05:00)对负载均衡服务(SLB)进行升级操作,升级期间我们使用的SLB实例会有4-8次的闪断,每次闪断时间10秒左右.闪断期间会造成网站 ...

  7. openssl CA 自签证书,阿里云配置tomcat https

    <一,openssl CA自签发证书> 1,生成私钥 openssl genrsa 1024 > private.key;

  8. nginx+腾讯云免费ssl证书+阿里云ECS实现Https配置

    1. 申请SSL证书: 首先我们需要到腾讯云那边申请一个ssl证书,对于个人博客类型的,建议采用免费版本,土豪除外 申请地址:https://console.cloud.tencent.com/ssl ...

  9. 阿里云申请免费https证书 + IIS服务器安装

    参考: 阿里云免费SSL证书申请与安装使用(IIS7)

随机推荐

  1. 人脸检测——MTCNN

    人脸检测——MTCNN .

  2. 【HNOI2014】江南乐

    题面 题解 知识引入 - \(SG\)函数 任何一个公平组合游戏都可以通过把每个局面看成一个顶点,对每个局面和它的子局面连一条有向边来抽象成这个"有向图游戏".下面我们就在有向无环 ...

  3. bzoj 2238 Mst

    显然先求出最小生成树 如果删的是非树边就不用管,还是能取最小生成树 如果删的是树边就有非树边可以替代它 反向考虑,每条非树边可以替代最小生成树上一条路径的边 所以树剖加线段树,对每条非树边在树上更新对 ...

  4. Kali2.0可用国内源更新sources.list

    vim /etc/apt/sources.list #中科大 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contri ...

  5. 并行Linq

    有时候我们对大批量数据进行处理,此时并行linq就起作用了. 并行查询 对于以下查询可以耗时会非常大,如下: ; var r = new Random(); , arraySize).Select(x ...

  6. django套用模板404报错小结

    首先,我的项目名是MyProject.每次当我运行,然后测试页面的时候,总是弹出 其实根据stackoverflow上某大佬的解释大意就是在setting.py和urls.py的匹配上出了问题 此处放 ...

  7. File System Object(FSO对象)B

    一.实例FSO获取当前路径下的文件 Sub Fsotest() Dim Fso As New FileSystemObject, Path As String, File Path = ThisWor ...

  8. MySQL(MariaDB)基础之一:编译安装

    一.cmake介绍 cmake的重要特性之一是其独立于源码的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译影响,因此在同一个源码树上可以进行多次不同 ...

  9. 第十一次ScrumMeeting博客

    第十一次ScrumMeeting博客 本次会议于11月29日(三)22时整在3公寓725房间召开,持续30分钟. 与会人员:刘畅.辛德泰张安澜.赵奕.方科栋. 1. 每个人的工作(有Issue的内容和 ...

  10. 自制session

    原理 1.面向对象中通过索引的方式访问对象,需要内部实现 __getitem__ .__delitem__.__setitem__方法 2.Tornado框架中,默认执行Handler的get/pos ...