AFNetworking+Python+Flask+pyOpenSSL构建iOS HTTPS客户端&服务器端

对于HTTPS我在网上找了一堆资料看了下, 各种协议和证书已经有点晕了

最后我现有的感觉是, 在HTTP服务器上放一个证书, 在原本的HTTP访问之前客户端先检查证书是否正确

如果客户端证书检查正确, 说明对 这个服务器就是我要连接的那个server

不对, 就说明这个server是个假冒的

同样也可以在客户端放一个证书, 服务器端检查客户端传来的证书

如果服务器检查证书正确, 就说明这个客户端是我的小弟 我允许他连接进来

不对, 就说明这个客户端是"卧底", 不能放他进来

好了 不扯犊子, 说说我搭建的过程

证书哪里搞?

可以在网上找, 有收费的 也有免费试用的, 也能自己做

看了下不想折腾, 就自己做一个吧

这个就要用上pyOpenSSL了, 方法如下

1. 安装pyOpenSSL

sudo easy_install pyOpenSSL

安装好就可以开始自己做证书了

2. 生成一个Privatekey

openssl genrsa -des3 -out server.key 1024

3. 生成.csr

openssl req -new -key server.key -out server.csr

4.生成.key

cp server.key server.key.org openssl rsa -in server.key.org -out server.key

5.生成.crt

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

好了, 这样在当前目录就有server.key & server.crt, 这两个可以直接给服务器用

服务器我是用Python+Flask, 提供一个例子代码:

1 from flask import Flask, jsonify
2 app = Flask(__name__)
3
4 @app.route(‘/test‘, methods=[‘GET‘])
5 def method():
6     return jsonify({‘Result‘: ‘OK‘})
7
8 app.run(port=8100,ssl_context=(‘/Users/jackey/Downloads/BackHomeServer/server.crt‘, ‘/Users/jackey/Downloads/BackHomeServer/server.key‘))

好了, 上面这些就差不多做了个简单的HTTPS server

用浏览器测试了下, 要手动设置信任这个证书才可以正常连接

接下来就是配置客户端了

在这之前要先把crt证书转换成cer格式, 同样用openSSL代码如下:

openssl x509 -in server.crt -out server.cer -outform der

这样当前目录就多了一个server.cer

把server.cer拖到项目中, 记得Copy item if needed跟Targets都要勾上, 不然会报错

然后就用AFNetworking连接就好了, 只是比一般HTTP连接多了设置证书部分

给个例子:

 1 manager = [AFHTTPSessionManager manager];
 2
 3 AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
 4 securityPolicy.allowInvalidCertificates = YES;
 5 manager.securityPolicy = securityPolicy;
 6
 7 [manager GET:@"https://localhost:8100/test" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable    responseObject) {
 8         NSLog(@"pass");
 9 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
10         NSLog(@"fail");11 }];

这样一个简单的HTTPS链就完成了, 不过如果对安全性要求比较高

就要在证书跟验证方式上面调整了

时间: 2024-12-24 20:01:00

AFNetworking+Python+Flask+pyOpenSSL构建iOS HTTPS客户端&服务器端的相关文章

Python Flask 快速构建高性能大型web网站项目实战

Python Flask 快速构建高性能大型web网站项目实战视频[下载地址:https://pan.baidu.com/s/1cUggNbUvptYz5vvwBhsdrg ] 作为最最流行的Python Web开发的微框架,Flask独树一帜.它不会强迫开发者遵循预置的开发规范,为开发者提供了自由度和创意空间.突然发现这个对自动化运维开发非常有用,发上来,给大家! Python Flask 快速构建高性能大型web网站项目实战视频 project.zip 第1章 课程介绍1.1-1.2课程导学

Python Flask构建微信小程序订餐系统

call--->q-2304636824-q 第1章 <Python Flask构建微信小程序订餐系统>课程简介 本章内容会带领大家通览整体架构,功能模块,及学习建议.让大家在一个清晰的开发思路下,进行后续的学习.同时领着大家登陆https://food.54php.cn(使用微信扫码二维码体验下哦横须)一起来演示一下项目.本次课程是严格按照商业系统进行架构开发的,从PC管理员端到小程序会员端,从项目搭建到部署上线,通俗易懂.... 1-1 导学--Python Flask 构建微信小程

Python Flask+Bootstrap+Jinja2 构建轻量级企业内部系统平台框架

1.最近公司运维需求,学习python flask 满足环境治理系统的开发;入门如下;    环境类型:      Python 2.7.5         获取地址:https://www.python.org/downloads/       Flask  1.0.2               pip 安装使用模快如下:           flask==1.0.2           request==1.0.2           Jinja2==2.10           Flas

iOS socket Stream 服务器端 及 客户端 演示

iOS socket Stream 测试环境,mac osx 10.8 一:建立服务器端 由于mac osx10.8 已经集成 python2和 Twisted,我们可以直接利用此,构建一个简单的socket 服务器 如下测试一个简单的聊天 socket 并,定义,加入聊天时发送:iam:用户名 发送信息时:msg:信息 终端:vim server.py  回车,copy入如下代码 from twisted.internet.protocol import Factory, Protocol f

Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)

Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享)  点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJKN-MzscalsJKRoL5w 提取码:88hj 免费分享,如若链接失效请加群 其它资源在群里,私聊管理员即可免费领取:群——517432778,点击加群,或扫描二维码 免费课程资料领取目录:  Python Flask构建微信小程序订餐系统 Python分布式爬虫必学框架Scrapy打造搜索引擎

Python Flask 狗书电子版pdf

Python Flask 狗书电子版pdf 链接:https://pan.baidu.com/s/197PUp5jXLnDRnkpr3VfHJw 提取码:87xx 内容简介 · · · · · · 本书不仅适合初级Web开发人员学习阅读,更是Python程序员用来学习高级Web开发技术的优秀参考书. 学习Flask应用的基本结构,编写示例应用: 使用必备的组件,包括模板.数据库.Web表单和电子邮件支持: 使用包和模块构建可伸缩的大型应用: 实现用户认证.角色和个人资料: 在博客网站中重用模板.

Python Flask环境搭建

Python Flask环境搭建 尽管之前多次部署过Python的Flask环境,由于没有做文档输出工作,导致后面部署时每次都得重新去填之前填过的坑,为了方便自己,也为了工作效率的提升,于是自己花了一点时间重新实验并且整理出来部署的文档,包括一键部署Flask环境脚本install.sh,和Flask环境需要的扩展的安装包packages.txt! 全部贴在代码区域! 下面是一键安装脚本install.sh #! /usr/bin/bash #version v1.0 # by andy.zhu

Python Flask 在Sina App Engine (SAE)上安家

早就听说了Python的大名,随着的编程语言的理解加深,越发觉得动态语言的威力--真大呀. 趁这段时间不忙,我也用Python写了一个应用,并且将其部署到Sina App Engine (SAE).SAE确实是一个好地方,它支持Python,对于开发者,其使用费用几乎为0. 更重要的是,如果我的这个app不会半路夭折,等它长大后,这个平台也能给予足够的支持. 虽然,整个过程都很简单,但是对于一个新手,特别是从传统C#, Asp.net, IIS阵营过来的开发人员来说,什么都是第一次接触.希望我的

[Python][flask][flask-login]关于flask-login中各种API使用实例

本篇博文跟上一篇[Python][flask][flask-wtf]关于flask-wtf中API使用实例教程有莫大的关系. 简介:Flask-Login 为 Flask 提供了用户会话管理.它处理了日常的登入,登出并且长时间记住用户的会话. 直白的讲,flask-login包为用户管理了涉及到用户登录相关的缓存(Session)管理. Posted by Alima | cnblogs. 一.安装(Install) PC环境:Windows 7,Python 3.5.2. PS:此次配置环境阶