zoukankan      html  css  js  c++  java
  • 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了

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

  • 相关阅读:
    Hacker(22)----解除系统中的密码
    Hacker(21)----密码攻防之加密与解密基础
    Hacker(20)----手动修复Windows系统漏洞
    Hacker(19)----检测Windows系统漏洞
    Hacker(18)----了解Windows系统漏洞
    Hacker(17)----认识Windows系统漏洞
    Linux通过nfs挂载根文件系统失败:VFS: Unable to mount root fs via NFS, trying floppy.
    恶补各种知识(编程基础篇)
    恶补各种知识(操作系统篇)
    恶补各种知识(查找排序篇)
  • 原文地址:https://www.cnblogs.com/lhyxq/p/9675130.html
Copyright © 2011-2022 走看看