使用python提供HTTPS服务

本文介绍了如何使用Python提供HTTPS服务,包括访问HTTPS网站的基本步骤,以及处理证书校验错误的方法。示例代码展示了如何在Python2.7中使用urllib2访问HTTPS网址,并在遇到证书错误时禁用证书校验。
部署运行你感兴趣的模型镜像

Python

Python 是一种面向对象的解释型计算机程序设计语言,在设计中注重代码的可读性,同时也是一种功能强大的通用型语言。Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。

 

在python上使用SSL有许多场景,本文主要介绍使用python提供HTTPS服务。(HTTPS是SSL在WEB上的应用之一)

一、使用python访问HTTPS网站

使用python做为客户端去访问公网上的网站,而这个网站为了传输安全(避免被劫持或者窃听)使用了HTTPS服务,传输过程内容都经过了SSL加密。下面来看下具体的python代码,这里使用的是python2.7.11,用的是python自带的urllib2。当然也可以使用requests或者pycurl等第三方库,都可以,原理都是一样的,只是实现的手段有些差异而已。

import urllib2

import ssl

if __name__ == ‘__main__’:

myurl=”https://www.baidu.com”

req = urllib2.Request(myurl)

try:

response = urllib2.urlopen(req)

print “HTTP return code:%d” % response.getcode()

strResult= response.read()

print strResult

except Exception ,ex:

print “Found Error :%s” % str(ex)

运行它,就可以得到这个网站上的内容了。并且传输过程都经过了加密。是不是很简单。整个的传输过程大概是这样的,客户端请求SSL连接握手(其中会跟服务器有些SSL协议之间的交互)服务器把自己的证书传给客户端,客户端对这个证书进行认证(每台客户端电脑上都会默认安装一些权威CA(证书签发机构)的证书,这个认证就是使用这些证书进行的,python的ssl模块会自动加载这些权威CA证书,当然也可以自己指定,确保这个证书是由可信的CA颁布的,之后就是利用证书交换密钥后,使用密钥对传输内容进行加密传输。ssl证书申请

CA证书即SSL证书(Secure Socket Layer的缩写)是Netscape设计开发的,用于保护服务器和客户端之间的在线交易。通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。

如果使用谷歌浏览器访问会提示用户:您的连接不是私密连接,如果你强制连接则会提示不安全

import urllib2

import ssl

if __name__ == ‘__main__’:

myurl=”https://127.0.0.1:8443″

req = urllib2.Request(myurl)

try:

response = urllib2.urlopen(req)

print “HTTP return code:%d” % response.getcode()

strResult= response.read()

print strResult

except Exception ,ex:

print “Found Error :%s” % str(ex)

运行这个就会出现错误:

提示证书校验错误。这时如果想要访问这样的网站就要把客户端的证书校验关闭。在前面加上一句:ssl._create_default_https_context = ssl._create_unverified_context即可

import urllib2

import ssl

ssl._create_default_https_context = ssl._create_unverified_context

if __name__ == ‘__main__’:

myurl=”https://127.0.0.1:8443″

req = urllib2.Request(myurl)

try:

response = urllib2.urlopen(req)

print “HTTP return code:%d” % response.getcode()

strResult= response.read()

print strResult

except Exception ,ex:

print “Found Error :%s” % str(ex)

当然也可以自己创建一个不校验的SSL上下文,然后引用这个上下文来打开url

ctx = ssl._create_unverified_context()

然后

response = urllib2.urlopen(req,context=ctx)

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值