我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Web 开发学习笔记(3) --- 申

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Web 开发学习笔记(3) --- 申

简介

  • 现在已经进入 HTTPS 的时代, HTTPS 证书 目前应用广泛, 发展迅速. 相较于明文传输的 HTTP, HTTPS 更加安全.


  • HTTPSHypertext Transfer Protocol Secure, 由于其安全层使用的是 TLS/SSL, 因此 HTTPS 也可以称为 HTTP over TLSHTTP over SSL. 关于 HTTPS 证书的分类, 可以参考这篇博客


  • HTTPS 证书 需要向国际公认的证书证书认证机构 Certificate Authority (CA) 申请.


  • 接下来, 我们将使用自动化证书管理工具 acme.sh 为我们的域名申请 Let's Encrypt 颁发的 HTTPS 证书, 然后将其部署在我们的网站上.


  • 本文假设我们的域名为 www.awesome.com


开发环境

  • 在前文的基础上, 我们只需增加 acme.sh 这个工具. 它的中文文档在这里. 安装 acme.sh 的过程很简单, 在 Terminal 中输入如下命令 acme.sh 即可.


    curl  https://get.acme.sh | sh


生成证书

  • 我们可以使用 http 方式来验证我们对域名的所有权.


    • 如果只申请单域名证书 (Single Domain Certificate, 如单域名 www.awesome.com ), 那么在 Terminal 中运行如下命令即可


      acme.sh  --issue  -d  www.awesome.com  --standalone

      acme 会在当前目录生成一个验证文件, 然后运行一个监听 80 端口的 server, 如果 Let's Encrypt 成功地通过域名下载了这个文件, 就验证了我们对域名的所有权, 就可以签发证书了.


      我们也可以运行一个 file server 监听 80 端口


      cd ~/webapp
      python3 -m http.server 80

      然后在另一个 Terminal 里输入如下命令


      cd ~
      acme.sh  --issue  -d  www.awesome.com  --webroot  ~/webapp
  • 我们也可以通过 dns 方式来验证我们对域名的所有权. 如果要申请通配符证书 (Wildcard Certificate, 如 *.awesome.com 形式的通用域名), 则需要用 dns 方式进行验证.


    • 首先我们在 Godaddy 上申请开发者 API key & secret, 然后参考 acme.sh 的文档 readme 和 dnsapi, 执行如下命令


      export GD_Key="xxxxxxxx"
      export GD_Secret="yyyyy"
      acme.sh  --issue  --dns dns_gd -d "*.awesome.com" -d awesome.com

      如果一切顺利, 我们会发现 Godaddy 的 DNS txt record 中多了一条 _acme-challenge 记录. 接下来acme 会先等待 120s 以待新的纪录生效, 然后通知 Let's Encrypt 验证我们对域名的所有权, 验证通过后, Let's Encrypt 会为我们签发证书.


  • 下一节, 我们将讲述如何安装和部署证书


安装和部署证书

  • 对于单域名证书, 根据 acme 的文档, 我们需要执行以下命令, 将证书和公钥放到 ~/ssl/ 文件夹中


    acme.sh  --installcert  -d  www.awesome.com  --key-file  ~/ssl/server.key  --fullchain-file  ~/ssl/server.cer
  • 对于通配符证书, 操作也是类似的, 把域名换成 "*.awesome.com" 就好了


    acme.sh  --installcert  -d  "*.awesome.com"  --key-file  ~/ssl/server.key  --fullchain-file  ~/sslwebsite/server.cer
  • 然后, 在之前编写的 server 中, 我们需要引入证书和公钥, 从而将明文的消息用 ssl/tls 包裹起来. 根据 Stack Overflow, 这篇文章下面的 Comments, 以及 werkzeug docs, 我们需要在 app.run() 中加上 ssl_context=('~/ssl/server.cer', '~/ssl/server.key') 参数, 再把监听端口改为 443 即可:


    # class IndexHandler(...):
    #     ...
    
    if __name__ == '__main__':
        app.add_url_rule('/', view_func=IndexHandler.as_view('index'))
        context = ('./server.cer', './server.key')
        app.run(port=443, host='0.0.0.0', debug=True, threaded=True, ssl_context=context)
  • 至此, 我们的 HTTPS 证书已经申请和部署完成了. 但是我们的 server 目前还存在一个问题, 就是只能访问 https://www.awesome.com, 而原来的 http://www.awesome.com 已经无法访问了, 因为我们的 server 现在只能监听 443 端口而不能监听 80 端口. 下一篇文章, 我们将解决这个问题, 方法是另外写一个 server 来监听 80 端口, 并通过 redirecthttp 服务重定向为 https. 同时, 我们还将学习如何使用 HSTS, 使浏览器默认以更安全的 https 的方式访问我们的网站.


参考链接

  • https://imququ.com/post/letse...
  • https://github.com/Neilpang/a...

    https://github.com/Neilpang/a...

    https://github.com/Neilpang/a...

  • https://letsencrypt.org/
  • https://stackoverflow.com/que...

    http://flask.pocoo.org/docs/1...

    http://flask.pocoo.org/snippe...

    http://werkzeug.pocoo.org/doc...

    http://werkzeug.pocoo.org/doc...

  • https://jjayyyyyyy.github.io/...

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Web 开发学习笔记(3) --- 申

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Web 开发学习笔记(3) --- 申

简介现在已经进入 HTTPS 的时代, HTTPS 证书 目前应用广泛, 发展迅速. 相较于明文传输的 HTTP, HTTPS 更加安全. HTTPS 即 Hypertext Transfer Protocol Secure, 由于其安全层
2023-01-31

《Flask Web开发》学习笔记

前言:想熟练掌握一门web框架,为以后即将诞生的测试工具集做准备。为什么选择flask要做熟练掌握的一门框架,而不是其他的,最主要的原因是可以随意定制。  特别提醒:这本书的代码会提交在github,有基础的人可以直接看github的代码来
2023-01-30

Web 开发学习笔记(1) --- 搭

简介Flask 是一个轻量级的 Web 框架, 如果要学习 Web 开发, Flask 非常适合作为我们学习的起点.通过接下来的这一些列的博客, 我们将学习如何利用 Flask 以及其他工具, 搭建一个简单的网站. We'll build
2023-01-31

学习笔记3

一文件查找和压缩1文件查找locate 搜索依赖于数据库,非实时搜索,搜索新建文件需手动更新,适于搜索稳定不频繁修改文件 find 实时搜索,精确搜索,默认当前目录递归搜索 find用法 -maxdepth l
2023-01-31

学习笔记(3)

1.* 匹配零个或多个字符(通配符中)2.ls 的-d选项不仅仅可以显示指定目录的信息,还可以用来表示不递归子文件夹。  # ls -dl /etc 显示/etc目录的信息  # ls -d /etc/* 显示/etc下面的文件和文件夹,并
2023-01-31

OSPF 学习笔记3

ospf特殊区域减少LSA洪泛,达到优化路由表的目的sub区域特点1、过滤了LSA4/52、通过ABR的LSA3学习到一条到达域外的缺省路由(O*IA)3、区域内所有的路由器都得设置为stub路由器4、stub区域内不能有ASBR5、stu
2023-01-31

CCNP学习笔记(3)

一、RIPv2:Routing Information Protocol 路由信息协议 1.特性: ①属于“距离矢量”路由协议 ②定期发送路由更新(30S一次,路由表中所有路由) ③依据“跳数”衡量路径好坏  //跳数(hop):route
2023-01-31

cisco学习笔记(3)

1. 交换机支持的命令:交换机基本状态: switch: ;ROM状态, 路由器是rommon>hostname> ;用户模式hostname# ;特权模式hostname(config)# ;全局配置模式hostname(config-i
2023-01-31

perl学习笔记(3)

条件结构:if(...){      ...;}elsif(...){      ...;}else{      ...;}数值关系运算符 ==,>,<,>=,<=,!=字符串关系     eq,gt,lt,ge,le,ne逻辑运算 与&&
2023-01-31

GEF学习笔记3

八、创建嵌套的视图 前面的步骤,创建了公司视图,下面再创建一个国家视图用来容纳公司视图。这就需要按前面的方法把MVC都重新创建一遍。ModelView(Figure)Control(EditPart)注意重写红框中标识的getModelCh
2023-01-31

python学习笔记(3)

在大概了解了程序之后,我也买了本python书学习一下,因为现在新版的python3.4.0已经不再兼容2.x.x的内容,书虽然很新,但是有些例子还是用的过去的。1.比如在3.0中print 42不能再产生输出了,要改成print(42)>
2023-01-31

PowerShell 学习笔记(3)

获取对象的过程中,最好先筛选出对象,再进行操作。(即筛选在排序左边)不区分大小写get-process | where {$_.handles –ge 1000}使用where获取所有对象,用对象执行大括号里的代码,如果结果为rue,则返回
2023-01-31

PHP 学习笔记 (3)

昨天笔记2说道了PHP的标记以及短标记,今天记录下如何吧PHP从HTML分离手册参考:http://www.php.net/manual/zh/language.basic-syntax.phpmode.phpPHP手册告诉我们,PHP凡是
2023-01-31

shell 学习笔记3

####shell结构#!指定执行脚本的shell#注释行命令和控制结构 第一步:创建一个包含命令和控制结构的文件 第二步:修改这个文件的权限使它可以执行,chmod u+x 第三步:执行./example(或sh example,使用此方
2023-01-31

shell学习笔记(3)

一、if基础1、单分支1.1 语法if语句语法 单分支结构语法: if [条件]; then 指令 fi 或 if [条件] then 指令 fi1.2
2023-01-31

python学习笔记(开课介绍3)

学PYTHON有没有前途?美国python工程师工资情况:8-11W美元中国,以北京为例,2013年时全国范围内只有30个python职位,地域差别很大。编程语言排名:2013年,python排第八2015排到第四codeeval网站调研,
2023-01-31

Python学习笔记(3)--- Fla

在安装flask前,首先安装pip安装地址:https://pip.pypa.io/en/stable/installing.html#install-pip下载(保存):在dos命令下执行 python get-pip.py安装然后 执行
2023-01-31

Python 3 学习笔记:Excel

安装模块OpenPyXL 模块是一个第三方模块,所以需要使用 pip 工具安装,pip install openpyxl文件结构首先,我们需要了解一下 Excel 文件的基本结构,一个 Excel 文件被称为一个工作薄,工作薄中可以包含多个
2023-01-31

MySQL学习笔记(3):SQL

本文章更新于2020-06-14,使用MySQL 5.7,操作系统为Deepin 15.9。目录DDL语句创建数据库删除数据库修改数据库创建表删除表修改表创建索引删除索引创建视图修改视图删除视图存储过程和函数创建事件修改事件删除事件创建触发器删除触发器DML语
MySQL学习笔记(3):SQL
2022-04-25

solaris学习笔记3:mount

mount学习 1.文件系统基本概念,UFS,ZFS,VxFS,WAFL 2./etc/vfstab 预定义挂载文件系统;   /etc/mnttab 已挂载文件系统 3.man mount   man mount_ufs   man mo
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录