详解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


相关推荐: 如何在IIS管理器中快速创建并配置网站?  JavaScript如何实现继承_有哪些常用方法  如何快速建站并高效导出源代码?  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  文字头像制作网站推荐软件,醒图能自动配文字吗?  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  西安专业网站制作公司有哪些,陕西省建行官方网站?  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  详解jQuery停止动画——stop()方法的使用  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  如何快速打造个性化非模板自助建站?  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  如何快速生成凡客建站的专业级图册?  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  微信小程序 input输入框控件详解及实例(多种示例)  Laravel如何创建自定义Facades?(详细步骤)  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  Laravel如何使用模型观察者?(Observer代码示例)  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  HTML 中动态设置元素 name 属性的正确语法详解  七夕网站制作视频,七夕大促活动怎么报名?  Python高阶函数应用_函数作为参数说明【指导】  如何在建站之星网店版论坛获取技术支持?  如何用wdcp快速搭建高效网站?  Laravel安装步骤详细教程_Laravel环境搭建指南  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  香港网站服务器数量如何影响SEO优化效果?  java ZXing生成二维码及条码实例分享  如何用JavaScript实现文本编辑器_光标和选区怎么处理  java中使用zxing批量生成二维码立牌  Firefox Developer Edition开发者版本入口  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  昵图网官方站入口 昵图网素材图库官网入口  linux top下的 minerd 木马清除方法  PHP正则匹配日期和时间(时间戳转换)的实例代码  Linux网络带宽限制_tc配置实践解析【教程】  JavaScript如何实现路由_前端路由原理是什么  PHP 500报错的快速解决方法  Java解压缩zip - 解压缩多个文件或文件夹实例  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  Laravel如何为API编写文档_Laravel API文档生成与维护方法  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  音乐网站服务器如何优化API响应速度?  🚀拖拽式CMS建站能否实现高效与个性化并存?  网站页面设计需要考虑到这些问题