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 安全套接层),及其继任 ...
随机推荐
- background url base64
各自含义:data: ----获取数据类型名称image/gif; -----指数据类型名称base64 -----指编码模式AAAAA ------指编码以后的结果. background-imag ...
- JavaScript学习-2循环
文章目录 ----------①console函数 ----------②for循环 ----------③跳出循环 ----------④练习题:口诀表 ----------⑤练习题:幼兔 ---- ...
- 搭建mxnet-gpu docker的pyhon remote kernel
起因 最近看mxnet的东西,打算给实验室的机器装一个mxnet的环境,无奈实验室里面机器已经装了tensorflow,运行了好久了,环境比较老.而mxnet可是支持最新的cuda9.1和cudnn7 ...
- 2018面向对象程序设计(Java)第18周学习指导及要求
2018面向对象程序设计(Java) 第18周学习指导及要求(2018.12.27-2018.12.30) 学习目标 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设 ...
- springcloud-知识点总结(一):Eureka
1.Spring Cloud简介 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载 ...
- MYSQL分组合并函数
MySQL中group_concat函数完整的语法如下:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符' ...
- logrotate-日志切割示例
logrotate是linux系统自带的工具,它可以自动对日志进行截断(或轮循).压缩以及删除旧的日志文件. 1)配置文件示例# cat /wls/wls81/bin/weblogic/wls/app ...
- [leetcode]18. 4Sum四数之和
Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums s ...
- makefile中一些编译器选项
Libraries Static Libraries a collection of ordinary object files (目标文件的集合) loaded at program link ti ...
- windows下webstorm调试react native
安装请参考:http://www.cnblogs.com/wjx0912/p/5662457.html webstorm在2016.10.20的版本才正式增加react native的调试支持,所以w ...