最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 给你的网站配置https

    正文概述 掘金(隐冬)   2021-01-11   892

    https证书有四种,这里我们只介绍最简单并且免费的,域名证书。

    写这篇文章的原因很简单,上一篇文末我说要使用WebRTC进行屏幕录制或者是远程桌面分享,必须要使用https,可能有很多人还不太会配置https,今天就来介绍一下。

    这里会介绍两种服务器的https配置,一种nginx,一种node。nginx的安装和配置不了解的同学可以参考我之前写的nginx文章,还是比较通俗易懂的。

    首先需要准备https域名证书和服务器环境,如何获取证书和配置我们下面会详细介绍

    https证书获取

    这里我们介绍三种https免费证书的获取方式。首先第一种如果你使用的是阿里云的服务器,并且在阿里云购买的域名,那就比较方便了。

    阿里云获取证书

    登录阿里云之后,在搜索栏搜索ssl证书,选中ssl证书(应用安全)控制台,打开证书列表页面。

    给你的网站配置https

    在证书列表页面,点击购买证书。

    给你的网站配置https

    2021年起阿里云证书将以资源包的形式开放(说实话,更麻烦了),需要点击证书资源包中进行下单。

    给你的网站配置https

    选择免费证书扩容包20个,支付金额为0元,下单就可以了。

    给你的网站配置https

    选择左侧证书资源包选项卡,然后在剩余证书数量中点击证书申请。

    给你的网站配置https

    申请一个。

    给你的网站配置https

    在下面新增的这条信息中点击申请证书,会要求填写一些信息,比如网站域名,证书所有人,比较简单,看一眼都会的。

    给你的网站配置https

    登记之后就会出现下载按钮,在弹出的弹框中选择需要对应的环境就可以了,一般我这里下载的证书会配置在nginx中,所以下载nginx的。

    给你的网站配置https

    这样我们下载下来的文件夹中就会包含key和pem两个文件。

    给你的网站配置https

    node的mkcert模块获取证书

    第二种获取证书的方式是通过本地服务自动生成。首先需要安装node的mkcert模块。

    npm install -g mkcert
    

    然后通过下面代码生成证书的公钥和私钥,也就是key和pem。

    const mkcert = require('mkcert');
    const fs = require('fs');
    
    const start = async () => {
        // create a certificate authority
        const ca = await mkcert.createCA({
            organization: 'Hello CA',
            countryCode: 'NP',
            state: 'Bagmati',
            locality: 'Kathmandu',
            validityDays: 365
        });
    
        // then create a tls certificate
        const cert = await mkcert.createCert({
            domains: ['127.0.0.1', 'localhost'], // 域名地址
            validityDays: 365,
            caKey: ca.key,
            caCert: ca.cert
        });
        fs.writeFile(`${__dirname}/test.key`,cert.key, (error) => {
            console.log(error)
        });
        fs.writeFile(`${__dirname}/test.pem`,cert.cert, (error) => {
            console.log(error)
        });
    }
    
    start();
    

    执行之后就可以在我们写入的文件位置${__dirname}/test.key找到我们生成的证书。key文件和pem文件。

    mkcert工具获取证书

    第三种方式是使用mkcert工具,区别于npm工具,注意和npm的mkcert进行区分,同时安装两个工具会造成使用冲突。

    首先使用brew安装mkcert工具,然后初始化安装CA的根证书安装根证书。最后使用mkcert生成域名证书就可以了。这样同样会在本地生成key和pem两个文件。

    // 安装mkcert
    brew install mkcert
    // 安装根证书
    mkcert ---install
    // 生成本地签名,假设域名为123.com
    mkcert 123.com
    

    配置证书

    nginx 服务

    首先介绍的是nginx服务,将之前下载好的key和pem文件放在自己需要的位置,我一般是习惯在nginx的配置目录中新建一个certs的文件夹,然后将这两个文件copy进去。

    给你的网站配置https

    紧接着打开nginx的配置文件, 这里还是看你自己的nginx配置情况,默认是/usr/local/nginx/conf/nginx.conf文件。

    https使用的是443端口号,默认情况下nginx是注释了这块代码区域的,记得放开,然后将key和pem分别配置在ssl_certificate和ssl_certificate_key中,注意后面的路径,我这里nginx.conf和certs文件夹在同一个目录,所以我使用/certs/xxxx.key找到文件。

    给你的网站配置https

    当然如果你安装了http2模块也可以顺便开启h2, 只需要在listen后面添加个个http2就可以了。非常的简单。listen 443 ssl http2;

    配置好之后重启nginx,再使用https访问我们的网站就可以访问了。

    nginx -s reload
    

    node服务

    如果你的网站是一个node服务器,那配置起来就特别简单了,就是基于https模块搭建启动服务,然后监听443端口。

    首先需要安装https模块。

    npm install https --save-dev
    

    创建服务的方式和http模块基本一致,也是使用createServer方法,不过这里需要传入key和pem,最后监听的端口需要使用443。

    const https = require('https');
    const fs = require('fs');
    const app = https.createServer({
        key: fs.readFileSync('./xxxx.key'),
        cert: fs.readFileSync('./xxxx.pem')
    }, (req, res) => {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('https');
    }).listen(443, '0.0.0.0');
    

    至此网站升级https就做完了,说实话我还是倾向于第一种nginx的方式,无论你是搭建企业应用还是个人博客,nginx都是不可缺少的。或许很多人觉得nginx距离前端很远是运维的东西,其实不然,他时时刻刻都在我们身边。用户访问网站所经过的第一关就是nginx。感兴趣的同学可以看看我之前写的,针对前端同学的nginx, 先点个赞再传送,谢谢~。


    起源地下载网 » 给你的网站配置https

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元