分类标签归档:HTTPS

Python requests库的一些实用经验


Python的requests库应该是Python里最常用也是最好用的HTTP库。相较于之前的urllib、httplib等库,requests的封装更友好,上手更加容易。

show me the code

使用requests库完成一次http请求非常简单,代码如下:

import requests

url = "https://www.baidu.com"
resp = requests.get(url)

requests库在拥有高级封装的同时,也提供了一些有用的request hooks。它们可以帮助我们更好的处理请求中出现的问题。

request hooks

当我们在调用一个第...

Read more

解决MacOS: certificate verify failed: unable to get local issuer certificate的问题


最近将工作的操作系统从Ubuntu切换到了MacOS。在运行爬虫脚本时,如果抓取HTTP的页面,则没有报错,但是当遇到HTTPS页面时,就出现了这么一个报错:

certificate verify failed: unable to get local issuer certificate (_ssl.c:1045)

出现这个问题的原因是给这个网站的签发证书的CA证书没有在操作系统的root证书列表里。这里有2个可能:

  1. 证书是自签名证书(类似于之前的12306)
  2. CA是一个新的CA,操作系统里没有更新对应的CA证书

对于这个问题可以有2个解决办法:

  1. 在脚本中不校验服务端证书有效性;...

Read more

HTTP学习笔记08 - 如何申请HTTPS证书


根据签发证书的CA的不同,证书可以分为2种:

  1. 由自己创建的CA签发的证书,通常叫做自签名证书;
  2. 由PKI的CA签发的证书,具有普遍可信的证书。

自签名证书

之前12306的证书就是一个自签名证书,所以浏览器第一次打开12306的官网时,会被提示不安全。但是现在已经改为由PKI签发的证书,可以正确通过浏览器的证书检查了。 但是,这并不意味着自签名证书就没有用。比如在内网中,为了测试或者部署内部服务,为了成本考虑,可以签发一些自签名证书,由于时内网环境,我们已经100%确认对方的身份,所以就不需要PKI来帮助我们校验证书是否正确。

使用openssl创建自签名证书:

制作CA证书:

1....

Read more

HTTP学习笔记07 - HTTPS证书介绍


什么是TLS/SSL证书

SSL证书跟驾照有点类似。在驾照里,关键信息有几点:

  1. 我是谁
  2. 驾照是谁颁发的
  3. 驾照是否过期

在SSL证书里也是类似的:

  1. 我是谁(域名、实体是谁)
  2. 证书是由谁签发的
  3. 证书是否过期

所以,一个SSL证书可以这么定义:由无条件信任的机构颁发给实际使用者来提供身份认证的一段数据编码。

证书的编码

X.690定义了ASN.1用到的几种编码格式:

  1. Basic Encoding Rules(BER)
  2. Canonical Encoding Rules(CER)
  3. Distinguished Encoding Rules(DER)

其中: BER是最基本的编码格式。CE...

Read more

HTTP学习笔记06 - 安全的HTTP的好帮手


SSL协议背景

在互联网设计之初,设计者并没有太过于考虑安全方面的问题,因此,在网络上传输的数据都是明文的,也就意味着,任何一个恶意的攻击者都可以得到我们提交的任何数据,这会带来3类风险:

  1. 数据窃听(eavesdropping): 第三方可以获知信息内容
  2. 数据篡改(tampering): 第三方可以修改通信内容
  3. 身份冒充(pretending): 第三方可以冒充他人身份参与通信

SSL&TLS协议的出现正是为了解决这3类问题,希望可以达到:

  1. 所有信息都是加密传输,第三方无法窃听
  2. 具有校验机制,一旦被篡改,通信双方会立刻发现
  3. 具备身份证书,防止身份被冒充 从而实现在“不安全”...

Read more

本站支持HTTPS了


今天用letsencrypt的certbot给本站加上了HTTPS证书。

同时,也对本站添加了HTTP请求自动跳转到HTTPS请求的路由规则,因此,后续本站的所有流量都是HTTPS了。

希望baidu之前说的HTTPS站点的收录会比HTTP更友好是真的。

最后,Hello, The HTTPS world. :)

Read more