详解Nginx服务器和iOS的HTTPS安全通信

发布时间 - 2026-01-11 02:04:57    点击率:

详解Nginx服务器和iOS的HTTPS安全通信

简介

在网络通信中,使用抓包软件可以对网络请求进行分析,并进行重放攻击,重放攻击的解决方案一般是使用一个变化的参数,例如RSA加密的时间戳,但考虑到网络传输时延,时间戳需要有一定的误差容限,这样仍然不能从根本上防止重放攻击。想要较好的解决重放攻击问题,应考虑使用HTTPS通信,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

实现

对于用浏览器访问的网站,需要向CA申请证书才能保证HTTPS的网页被正常的浏览,否则会被警告是不安全或者未认证的网站,而对于一些后台数据的传输,使用自签署的证书即可。

服务端的配置

生成证书

在服务器的命令行下进行如下操作

①生成服务端的私钥,需要输入一个4~8191位的密码

openssl genrsa -des3 -out server.key 2048

②去除key文件的密码,这里需要输入①中填写的密码

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

③生成csr文件,这一步要求输入多种信息,可以全部按回车跳过

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

④生成crt文件,这一步中的-days后为有效期,可以写长一点

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

⑤合并crt与key制作pem,用于后面生成cer以供客户端验证

cat server.crt server.key > server.pem

⑥用pem生成cer,cer文件存放在客户端用于验证

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

2.修改nginx配置文件

如果不知道配置文件的路径,使用下面的命令来打印。

nginx -t

这个命令可以用来测试配置文件是否正确,同时也会打印出路径。

根据打印的内容,打开nginx.conf,可以发现其中有一个http { … } 配置标签,在http标签中添加一个server配置标签。

server {
listen    443;
server_name localhost;

# 配置网站的根目录和首页的文件名和类型

index index.html index.htm index.php;
root <这里填写网站的根目录>
ssl         on;
ssl_certificate   <这里填写crt文件server.crt的全路径>
ssl_certificate_key <这里填写私钥key文件server.key的全路径>

# 下面是对php的配置,如果不配置,将无法正常解析php文件,这段配置是从nginx对HTTP的80端口配置中复制过来的,如果这段配置不能正常工作,请从自己的服务器对80端口的配置文件中复制过来。

location ~ .*\.(php|php5)?$
{
  #fastcgi_pass unix:/tmp/php-cgi.sock;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
  expires 30d;
}
location ~ .*\.(js|css)?$
{
  expires 1h;
}

# 这里如果不知道如何填写,请参考80端口的配置文件

include <nginx的conf目录路径>/rewrite/default.conf;
access_log <nginx服务器日志的路径>/default.log;
}

3.更新配置

nginx -t #测试配置文件是否正确
nginx -s reload #重新加载配置文件

到这里,服务端的配置就结束了。

客户端的配置

如果是CA颁发的证书,直接使用HTTPS请求即可,但我们是自签署证书,如果直接访问会报错,下面介绍一下使用AFN来配置自签署证书的HTTPS请求的方法。

1.将上文提到的cer证书导入到App的Bundle中

将server.cer导入bundle

2.在使用AFN进行请求前,先进行如下配置

AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
policy.allowInvalidCertificates = YES;
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.securityPolicy = policy;
// 下面使用manager进行HTTPS请求即可。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Nginx服务器和iOS的HTTPS安全通信  # iOS的HTTPS安全通信  # IOS-MVC层读取服务器接口JSON数据  # ios 服务器端推送证书生成的方法  # iOS APP 多服务器环境分离的方法  # iOS将相册中图片上传至服务器的方法  # Java使用NioSocket手动实现HTTP服务器  # iOS视频压缩存储至本地并上传至服务器实例代码  # IOS用AFN发送字符串形式的Json数据给服务器实例  # iOS 使用AFN上传视频到服务器示例代码  # IOS开发教程之put上传文件的服务器的配置及实例分享  # IOS利用CocoaHttpServer搭建手机本地服务器  # 配置文件  # 重放  # 服务端  # 客户端  # 这段  # 是否正确  # 自己的  # 放在  # 也会  # 是由  # 有一定  # 是从  # 这一步  # 希望能  # 较好  # 考虑到  # 报错  # 谢谢大家  # 介绍一下  # 首页 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  如何在景安服务器上快速搭建个人网站?  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  原生JS实现图片轮播切换效果  iOS中将个别页面强制横屏其他页面竖屏  文字头像制作网站推荐软件,醒图能自动配文字吗?  如何用PHP工具快速搭建高效网站?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Laravel如何使用withoutEvents方法临时禁用模型事件  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  如何快速搭建虚拟主机网站?新手必看指南  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何用y主机助手快速搭建网站?  公司网站制作价格怎么算,公司办个官网需要多少钱?  Laravel怎么实现模型属性的自动加密  微信公众帐号开发教程之图文消息全攻略  Laravel distinct去重查询_Laravel Eloquent去重方法  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Python文件流缓冲机制_IO性能解析【教程】  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  制作企业网站建设方案,怎样建设一个公司网站?  怎么用AI帮你为初创公司进行市场定位分析?  如何快速搭建高效香港服务器网站?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  什么是javascript作用域_全局和局部作用域有什么区别?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  详解CentOS6.5 安装 MySQL5.1.71的方法  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  如何在IIS中配置站点IP、端口及主机头?  jQuery中的100个技巧汇总  如何在建站之星绑定自定义域名?  如何在IIS7上新建站点并设置安全权限?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  Laravel如何升级到最新版本?(升级指南和步骤)  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  C语言设计一个闪闪的圣诞树  如何在腾讯云服务器上快速搭建个人网站?  如何将凡科建站内容保存为本地文件?  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  如何在万网自助建站中设置域名及备案?  Laravel安装步骤详细教程_Laravel环境搭建指南  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  Android使用GridView实现日历的简单功能  如何用西部建站助手快速创建专业网站?  bing浏览器学术搜索入口_bing学术文献检索地址