nodejs从http升级到https(阿里云证书的使用)
升级原因
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(阿里云证书的使用)的更多相关文章
- https阿里云证书购买与apache环境配置
1.在阿里云云盾安全->CA证书购买 2.下载证书解压文件,一般有四个文件 3.在/etc/apache2 下创建一个文件夹cert 放入以上四个文件(路径可自己任意选择) 4.$sudo a ...
- [转帖学习] 使用阿里云证书 升级https
nodejs从http升级到https(阿里云证书的使用) https://home.cnblogs.com/u/lhyxq/ 改天买一个域名自己试试. 升级原因 1.各大搜索引擎中,https ...
- 网站http配置https -- 阿里云 nginx
通过阿里云领取免费证书可将网站配置为https 步骤为下: 登陆阿里云点击sll证书,然后点击购买证书 选择免费的 然后立即购买 购买后会让你填写一些域名信息 然后提交签发证书 签发后点击下方下载 选 ...
- Spring Boot使用阿里云证书启用HTTPS
1.到阿里云下载证书页面下载证书 2.根据页面内容,可以使用2种证书:PFX JKS 把对应证书放到src/main/resources目录下 在application.properties文件中加入 ...
- 三步解决fiddler升级后https无法通过证书验证问题
有时候使用fiddler时,https页面会出现错误提示,我们可以这样设置来避免错误 第一步:去掉https的抓取 Tools>Option 去掉Capture HTTPS CONNECTs 的 ...
- Ubuntu16下apache2安装ssl阿里云证书
1.用下面的命令确保ssl模块已经加载进apache: a2enmod ssl 如果你看到了“Module ssl already enabled”这样的信息就说明你成功了,如果你看到了“Enabli ...
- 阿里云免费ssl,https证书的申请和校验
其实写这个之前一直在考虑要不要写出来 ,真的官方文档实在太强大了,连视频都给你录好了,配不好的,是不是可以考虑不用写程序了, 忽然想到第一次使用微信测试号,进行域名认证的时候,因为后台返回“echar ...
- 【故障公告】升级阿里云 RDS SQL Server 实例故障经过
昨天晚上,我们使用的阿里云 RDS SQL Server 2008 R2 实例突然出现持续 CPU 100% 问题,后来我们通过重启实例恢复了正常(详见故障公告).但是在恢复正常后发现了新问题,这台 ...
- 在阿里云购买SSL证书,让网站支持HTTPS
SSL简介 引自:https://baike.baidu.com/item/ssl/320778?fr=aladdin SSL SSL(Secure Sockets Layer 安全套接层),及其继任 ...
随机推荐
- MySQL中IN子查询会导致无法使用索引
今天看到一个博客园的一篇关于MySQL的IN子查询优化的案例,一开始感觉有点半信半疑(如果是换做在SQL Server中,这种情况是绝对不可能的,后面会做一个简单的测试.)随后动手按照他说的做了一个表 ...
- Kb和KB的区别
- 获取MessageBox按钮本地字符串(OK、Cancel、Yes、No等)
问题仍然由定制MessageBox引发. 定制MessageBox,虽加入自定义些东西,但仍然希望,最大限度接近系统原生框.碰到的问题,就是其钮文本. 即如MessageBox.Show()之Mess ...
- JVM总括四-类加载过程、双亲委派模型、对象实例化过程
JVM总括四-类加载过程.双亲委派模型.对象实例化过程 目录:JVM总括:目录 一. 类加载过程 类加载过程就是将.class文件转化为Class对象,类实例化的过程,(User user = new ...
- JS-基础动画心得
写在前面的话:这两种动画方式主要在于对其中算法的理解,理解其中的向上和向下取整很关键.还有一个我犯的毛病,写样式的时候忘记给轮播图ul定位,导致效果出不来,所以有bug时记得排除下css 常用的三种动 ...
- 编译UNITY的MONO模块记录
起因 接收到一个UNITY文件处理的任务(c#逻辑代码存放的Assembly-CSharp.dll可热更等需求) 需要重新编译UNITY的mono模块 用于安卓环境下对DLL的定制处理 上网查阅了一些 ...
- ibatis (六) dynamic的用法
view plain copy print? dynamic可以去除第一个prepend="and"中的字符(这里为and),从而可以帮助你实现一些很实用的功能.具体情况如下: 1 ...
- 学习Acegi应用到实际项目中(4)
此节介绍:ConcurrentSessionFilter. 在Acegi 1.x版本中,控制并发HttpSession和Remember-Me认证服务不能够同时启用,它们之间存在冲突问题. 在一些应用 ...
- ABP框架系列之二十四:(Email-Sending-EF-电子邮件发送)
Introduction Email sending is a pretty common task for almost every application. ASP.NET Boilerplate ...
- 牛客练习赛42 C 反着计算贡献
https://ac.nowcoder.com/acm/contest/393/C 题意 给你一个矩阵, 每次从每行挑选一个数,组成一个排列,排列的和为不重复数字之和,求所有排列的和(n,m<= ...