美文网首页
使用 HTTPS 访问 Leanote 站点

使用 HTTPS 访问 Leanote 站点

作者: yibuyisheng | 来源:发表于2018-08-10 23:46 被阅读313次

原文地址

在上一篇文章《群晖 Docker 搭建自有 Leanote 服务》中,介绍了如何在群晖 Docker 中部署 Leanote 服务,最终做到了在浏览器中通过 HTTP 协议访问服务。

但是 HTTP 并不安全,对于我们博客站点,比较蛋疼的缺陷就是运营商会在页面注入广告,这不能忍。

那么切换到 HTTPS 就很有必要了。

准备证书

群晖 DSM 系统很贴心,已经为我们提供了默认证书,同时也可以用图形化界面的方式生成证书。

进入“控制面板->安全性->证书”,即可看到有哪些信息:

image

这块的基本配置过程比较简单,此处不赘述。

反向代理服务器

实际上,配置成功之后,我们期望用户的请求处理流程是这样的:

  • HTTPS 请求进入反向代理服务;
  • 反向代理服务通过配置得到该请求的目标服务器(Docker 容器)信息,然后用 HTTP 方式向目标服务器发起请求;
  • 目标服务器响应反向代理服务的请求,发送 HTTP 响应报文;
  • 反向代理服务器拿到 HTTP 响应报文后,将其转换为 HTTPS 响应报文,发送给用户。

调整 Docker 容器及 Leanote 配置

由于配置成功后,我们还想使用之前的 9000 端口来访问服务,因此不能直接在 Docker 处做端口映射,停掉 Docker 服务,然后删掉之前配置的 9000 端口映射即可。

另外,/data/leanote/conf/app.confsite.url 也要改成 https 形式。

调整完之后,启动容器。

配置反向代理规则

进入“控制面板->Synology 应用程序门户->反向代理服务器”,可以在这里管理反向代理规则。

点击“新增”按钮,填上如下配置:

image

由于 HTTP2 有多路复用优化,所以此处启用了 HTTP2。

HSTS 主要是让 HTTPS 更加安全。因为现在处于 HTTP -> HTTP2 的过度时期,很多时候访问服务器的不会一上来就声明采用 HTTPS 方式。比如用户在地址栏里面输入:www.baidu.com,实际上浏览器会首先将这个地址补全为 http://www.baidu.com,然后执行后续流程,但是 www.baidu.com 这边又只提供了 HTTPS 服务,这个时候就需要将 HTTP 转换成 HTTPS。

问题是,在这个过程中,浏览器怎么知道应该转换呢?在之前,有一种方案:

  • 浏览器将 http://www.baidu.com 请求发给服务器;
  • 服务器收到请求之后,返回一个重定向响应(3xx),让浏览器重新发起一个 HTTPS 请求。

很明显,这个过程会存在中间人攻击风险(SSL 剥离攻击)。于是有人提出了另一种方案:

  • 浏览器将 http://www.baidu.com 请求发送给服务器,服务器直接返回错误页面;
  • 用户通过某种途径(可能手动地址栏输入,可能点击了某个其他站点的链接),发送 https://www.baidu.com 到服务器,服务器在响应头中包含 Strict-Transport-Security 字段,告诉浏览器,在之后多长时间内,浏览器将相关域名的 HTTP 请求,全部转换成 HTTPS,而不是直接向服务器发送 HTTP 请求。

这样一来,就有效规避了 SSL 剥离攻击。

Enjoy yourself

配置完毕,在浏览器地址栏中输入:https://test.synology.me:9000,尽情享用吧!

别忘了调整客户端

由于之前配置客户端的时候,写的“自建服务地址”是使用 HTTP 协议的,改成 HTTPS 后,这些客户端也要做相应的调整。

相关文章

  • 使用 HTTPS 访问 Leanote 站点

    原文地址 在上一篇文章《群晖 Docker 搭建自有 Leanote 服务》中,介绍了如何在群晖 Docker 中...

  • 使用HTTPS让你的GitHub Pages站点更安全

    你可以强制HTTPS为访问你的站点增加一个安全层,如果你的站点使用了github.io 域名的话。 HTTPS 启...

  • Https实现机制详解

    Https请求 一、访问HTTPS站点 两种方法来模拟发送HTTP请求,访问HTTP站点。一种方式是通过java....

  • 站点配置方法

    name: 表示站点名称。访问站点就是使用站点名称。appBases: 表示站点根目录 站点和网站的关系?一个站点...

  • docker 安装 leanote

    docker 安装 leanote 下载 leanote 安装包在 https://github.com/lean...

  • ajax和jsonp解决跨域问题

    实战情景:A站点为HTTP 域名站点;其中业务逻辑需要访问第三方站点B,B站点是HTTPS域名(没有透露站点的IP...

  • 使用letsencrypt实现https站点

    原文发表在我的个人博客 - 使用letsencrypt实现https站点 最近想把我的博客弄成https安全加密模...

  • 使用https访问kubernetes

    使用https访问kubernetes的方式 本文介绍三种使用https协议访问kubernetes集群的方式:(...

  • 使用WKWebView访问Https

    开发的项目需要政府网站,网站实用的是Https,而且网页上提示首次使用请下载证书,想了好多方法,最后发现可以通过W...

  • 五.Github Pages 搭建网站

    个人站点 访问:https://用户名.github.io 搭建步骤 ①创建个人站点新建仓库(注:仓库名必须是[用...

网友评论

      本文标题:使用 HTTPS 访问 Leanote 站点

      本文链接:https://www.haomeiwen.com/subject/lrrrbftx.html