免费给网站接入https证书

684 阅读5分钟

背景

Marsview 开源马上三个月,反馈良好,越来越多的小伙伴加入,参与代码贡献和产品反馈,最近有大佬给我提建议接入https,我其实一开始有点抵触,因为当前网站既没有接入微信登录,又没有接入微信支付,同时我对服务器证书配置稍微有点外行,所以接入https意愿不是很高。

后来思考了一下,当前开源项目如火如荼,未来如何发展都有很多的不确定性,https按道理应该是基础能力,为了网站的安全和后期微信登录的接入,我决定尝试给Marsview接入https

推荐

钢铁侠给我发了一个接入的网站:httpsok.com ,经过10分钟使用后,发现极其简单,这应该是我接触以来最简单的免费证书接入网站了(我相信还有更自动化的简单方式,但在我的认知里面,我目前只会这个,也只觉得这个是最简单的)。

image.png

由于marsview.cc在线上运行,为了避免操作失败,给用户带来不好的体验,我新开了一个域名做尝试,可以看到网站通过https加载并正常解析。

接入过程

登录网站

  1. 登录:httpsok.com/login
  2. 进入首页,点击免费申请

image.png 3. 配置域名

image.png

注意:该域名必须是本人名下的域名,输入完域名后,会生成主机记录和记录值,如果没有生成,说明这个域名有问题。

  1. 打开云厂商,配置DNS解析

image.png

  • 无论你是百度云、阿里云还是腾讯云,找到域名管理,添加解析。
  • 记录类型选择CNAME记录。
  • 复制第三步生成的主机记录,对应的粘贴主机记录文本框内。
  • 复制第三步生成的记录值,对应的粘贴到记录值文本框内。
  1. 回到httpsok,点击验证域名

DNS解析完成后,回到httpsok,点击验证域名,此时应该能验证通过。

  1. 等待下发证书

image.png

下发完成后,就可以去配置证书了,证书申请这个过程还是非常简单的,基本没有任何阻碍点。

登录服务器

我是nginx部署,所以,我就只讲解nginx的配置。

1. 使用ssh root@106.xx.xx.xx 登录服务器。
2. 创建新域名配置
# 进入nginx配置目录
cd /etc/nginx/vhost
# vhost目录下我存放了各个二级域名的配置解析
# 直接复制一个
cp www.marsview.conf www.marsview.com.cn.conf

当前配置如下:


server {

  listen 80;

  server_name www.marsview.com.cn;

  root /marsview/dist/editor;

  index index.html;

  

  location / {

    root /marsview/dist/editor;

    if ($request_filename ~* \.html?$) {

      add_header Cache-Control "no-cache";

    }

    try_files $uri $uri/ /index.html;

  }

  location ^~/api {

    proxy_pass http://1xx.xx.xx.xx:1000;

  }

  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {

    root /marsview/dist/editor;

    expires 7d;

  }

  location ~ .*\.(js|css)?$ {

    root /marsview/dist/editor;

    expires 7d;

  }

}
3. 添加证书解析

如何修改上面的server配置呢?如果不看文档,我也不会,但幸运的是,文档写的非常清楚,把代码都贴给我们了。直接点开文档如下: 配置文档

image.png

我们只需要复制文档上面圈起来的配置,粘贴到我们的server下面即可。但是需要注意的是,要把里面对应的httpsok.xyz替换成自己的域名,那我的举例子,最终变成下面这样:

server {

    listen  443 ssl;

    server_name marsview.com.cn;

    ssl_certificate /etc/nginx/certs/marsview.com.cn.pem;

    ssl_certificate_key /etc/nginx/certs/marsview.com.cn.key;

    ssl_session_timeout 5m;

    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

    ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

    ssl_prefer_server_ciphers on;

    add_header Strict-Transport-Security "max-age=31536000";

    access_log /var/log/nginx/marsview.com.cn.https.log;

  # listen 80;

  # server_name www.marsview.com.cn;
}  

我们只需要把listen 90server_name这两行配置注释,然后复制的指令粘贴到上面,把里面的域名替换成自己的域名就OK了。

/etc/nginx/certs/marsview.com.cn.pem 这个路径其实就是证书的路径,我们还没有下载证书,第四步会下载证书放到这个位置即可。

4. 下载和更新证书

第三步只是增加了证书的配置,实际上我们申请的证书还没有更新到服务器里面,我们还需要下载证书才可以。

复制安装脚本

image.png

在服务器中执行

进入到/etc/nginx目录执行复制的命令

cd /etc/nginx

curl -s https://get.httpsok.com/ | bash -s QOApIyZzZ89

** 下载和安装成功 **

image.png

最终会在当前目录生成.pem.key证书,这两个文件刚好是上面server里面配置的ssl_certificatessl_certificate_key对应的路径。

重启服务
nginx -s reload

其实证书下载完成后,会自动重启nginx

打开网站

  1. 输入:marsview.com.cn,回车,会自动变成 https://www.marsview.com.cn/

  2. 查看证书

image.png

总结

  • 如果你对https有需求,不妨试试这种方式。
  • 当前证书有效期三个月,到期需要手动更新,当然这个地方有人可能会吐槽。
  • 默认只送三张,后续可能需要收费,但,我觉得这样好用的产品,我还是愿意付费使用。

号外

  • Marsview点赞Star三个月内突破 1.1K
  • 后端代码迁出独立仓库:github.com/JackySoft/m…
  • 开源三个月来,用户访问量突破 25
  • 平台创建项目突破2000,平台创建页面突破2500,平台自定义组件突破500

欢迎体验最新版本在线低代码平台:

未来会上线docker版方案,支持快捷的私有化部署。