转载注明出处: http://www.cnblogs.com/ityoung/p/8296088.html

自动化测试/持续集成/测试开发 QQ交流群: 70160503

服务端生成证书

进入 openssl 目录

$ cd /usr/lib/ssl

生成私钥

$ sudo openssl genrsa -des3 -out server.key 1024

生成 CSR 文件

$ sudo openssl req -new -key server.key -out server.csr -config openssl.cnf

其中必填项有:

* Country Name (2 letter code) [AU]:

* Common Name (e.g. server FQDN or YOUR name) []:

生成 CA (用于自签名)

  • 新建demoCA, demoCA/certs, demoCA/newcerts

$ sudo mkdir demoCA demoCA/certs demoCA/newcerts

  • 在 demoCAm 目录下新建空文件 index.txt

  • 在 demoCAm 目录下新建文件 serial, 内容是一个合法的 16 进制数字, 例如 0000

  • 返回 /usr/lib/ssl 目录, 执行如下命令生成 CA

$ sudo openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf

其中必填项有:

* Country Name (2 letter code) [AU]:

* Common Name (e.g. server FQDN or YOUR name) []:

签名

$ sudo openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

转载注明出处: http://www.cnblogs.com/ityoung/p/8296088.html


tornado 启动时加上 SSL 选项

  • 复制证书文件到 tornado server 目录下(可选)

  • 修改测试服务器代码 test.py


import tornado.ioloop
import tornado.web
import os class TestGetHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, World!") def make_app():
    return tornado.web.Application([
        (r"/", TestGetHandler),
    ]) if __name__ == "__main__":
    application = make_app()
    http_server = tornado.httpserver.HTTPServer(application, ssl_options={
           "certfile": os.path.join(os.path.abspath("."), "server.crt"),
           "keyfile": os.path.join(os.path.abspath("."), "server.key"),
    })
    http_server.listen(443)
    tornado.ioloop.IOLoop.instance().start()
  • 由于端口号小于1000, 因此需要使用 su 权限的用户运行脚本

$ sudo python test.py


客户端访问

浏览器

输入https://localhost直接访问

CURL

添加 -k 选项忽略 SSL 验证, 如下:

curl -k https://localhost

requests

添加verify=False选项, 如下:

requests.get(URL, verify=False)

转载注明出处: http://www.cnblogs.com/ityoung/p/8296088.html


参考

[1] 使用Tornado搭建HTTPS网站, yeolar, http://www.yeolar.com/note/2015/04/30/tornado-ssl-https/

[2] curl - 为什么不能识别自签名的SSL证书?, https://code.i-harness.com/zh-CN/q/10c8411

转载注明出处: http://www.cnblogs.com/ityoung/p/8296088.html

tornado SSL 证书获取与服务器配置的更多相关文章

  1. Let’s Encrypt Wildcard 免费泛域名SSL证书获取安装

    2018 年 1 月Let’s Encrypt CA 宣布免费提供通配符证书(Wildcard certificate).通配符证书是一种可被多个子域使用的公钥证书.这意味着,单个证书可用于提供多台服 ...

  2. 使用用户名密码或ssl证书获取zabbix-api token,批量操作管理zabbix-server

    概述 Zabbix API 允许你以编程方式检索和修改 Zabbix 的配置,并提供对历史数据的访问.它广泛用于: 创建新的应用程序以使用Zabbix: 将Zabbix与第三方软件集成: 自动执行常规 ...

  3. 实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题

    最近需要https这里看到一份不错的博客,收录一下! Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust ...

  4. 申请Let's Encrypt永久免费SSL证书

    Let's Encrypt简介 Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust.EFF等组织人员发起 ...

  5. 申请Let’s Encrypt永久免费SSL证书过程教程及常见问题

    配置证书https://easy.zhetao.com/   虽然目前Let’s Encrypt免费SSL证书默认是90天有效期,但是我们也可以到期自动续约,不影响我们的尝试和使用,为了考虑到文章的真 ...

  6. 转载免费的SSL证书

    目前我知道的有2种方式进行免费的SSL证书的获取 第一种:腾讯云申请 第二种:Let's Encrypt (国外在) 我一直使用第一种,还可以,有效期1年. 以下转载第二种: 实战申请Let's En ...

  7. 服务器配置ssl证书支持苹果ATS方法

    服务器配置ssl证书支持苹果ATS方法 发布日期:2016-12-14 苹果安全工程&架构部门主管Ivan Kristic表示ATS将在今年底成为App Sotre app的必要条件,这将大幅 ...

  8. Apache环境服务器配置Let's Encrypt免费SSL证书及自动续期方法

    如今越来越多的网站开始使用SSL证书,实现HTTPS网址形式,如果我们是英文网站更需要用到这样格式的HTTPS网址,因为根据谷歌搜索结果提示到如果用到SSL证书的在同等条件下排名结果是有靠前可能的.我 ...

  9. centos7利用acme.sh获取Let's Encrypt的永久免费ssl证书并配置网站域名https访问

    acme.sh介绍:https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E github:https://github.com/Neil ...

随机推荐

  1. 【CODEFORCES】 A. Dreamoon and Sums

    A. Dreamoon and Sums time limit per test 1.5 seconds memory limit per test 256 megabytes input stand ...

  2. Python笔记·第五章—— 列表(List) 的增删改查及其他方法

    一.列表的简介   列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li = ...

  3. ViewPager+Fragment 懒加载

    转载于: 作者:尹star链接:http://www.jianshu.com/p/c5d29a0c3f4c來源:简书   ViewPager+Fragment的模式再常见不过了,以国民应用微信为例,假 ...

  4. H5之前端操作文件

    js是否能够操作文件? js在HTML5以前浏览器端是无法操作文件的,但HTML5中给a标签增加了一个download属性,只要有这个属性,点击这个链接时浏览器就不在打开链接指向的文件,而是改为下载( ...

  5. NOIP2017day1游记

    NOIP 2017总结 Day1 Day1T1 第一眼看到瞬间慌掉,woc这玩意啥! 然后懵逼了两分钟 好的 我相信他是NOIP第一题 那我就打个表吧 然后花五分钟打了个暴力 玩了几组数据 哇!好像有 ...

  6. sudo 做不到的事

    本文是经验帖,以后遇到类似的情况会持续更新到这篇文章 普通用户使用sudo会遇到以下情况 1.字符流无法写入到 /var/log/messages /var/log/secure (实际上这些文件一旦 ...

  7. 解析JSON的两种方法eval()和JSON.parse()

    解析JSON 一种方法是使用eval函数. var dataObj = eval("("+json+")"); 必须把文本包围在括号中,这样才能避免语法错误,迫 ...

  8. 关于理解python类的小题

    今天看了python部落翻译的一篇<一道python类的小题>文章,感觉挺有启发性,记录下来: print('A') class Person(object): print('B') de ...

  9. 不解释,分享这个base.css

    @charset "utf-8"; /*! * @名称:base.css * @功能:1.重设浏览器默认样式 * 2.设置通用原子类 */ /* 防止用户自定义背景颜色对网页的影响 ...

  10. 树链剖分( 洛谷P3384 )

    我们有时候遇到这样一类题目,让我们维护树上路径的某些信息,这个时候发现我们无法用线段树或者树状数组来维护这些信息,那么我们就有着一种新的数据结构,树剖:将一棵树划分成若干条链,用数据结构去维护每条链, ...