深入理解HTTPS及在iOS系统中适配HTTPS类型网络请求(二)

简介: 深入理解HTTPS及在iOS系统中适配HTTPS类型网络请求

四、搭建一个本地的HTTPS服务


   使用Node.js可以快速的搭建前端服务,我们这里使借助Express框架来搭建本地的HTTPS服务,用于测试我们后边将要进行HTTPS通讯。Express搭建搭建项目模板的过程在以前的一篇博客中有详细的介绍,这里就不再重复了,地址如下:


使用Express搭建前端项目:https://my.oschina.net/u/2340880/blog/794928


   根据前面所述,搭建HTTPS服务需要有证书凭证,两种证书我们可以选择,一种是CA机构签发的证书,还有一种是我们自己制作的自签名证书,在Mac电脑上打开钥匙串访问应用,打开其中的证书助理,如下图所示:


image.png


选择其中的为您自己创建证书选项,如下图:


image.png


在之后的界面中,输入证书的名称,选择证书类型,如下图所示:


image.png


上面,我把证书的名字创建成了珲少,身份类型选择的是自签名的根证书,证书类型选择SSL服务器,之后点击创建即可完成证书的创建。


   创建完成后,在钥匙串访问的登录证书中,可以看到已经有了珲少这个自签名的证书,如下图:


image.png


在证书上点击右键,选择导出选项,名字我将其取名为huishao,文件类型要选择.p12,如下图所示:

image.png



点击存储后,需要设置一个访问密码,这个密码将来将用于从.p12文件中获取证书和密钥,如下图所示:


image.png


之后,系统有可能会让你再次输入一个密码,将入下图所示,注意,这里需要输入的是系统的登录密码:


image.png


完成上面操作后,我们已经将一个.p12文件导出到了桌面。那么这个.p12文件到底是个什么东西呢,它和证书之间又有什么关系呢,其实.p12文件一个复合文件,其中包装了私钥与证书信息,使用OpenSSL工具可以将其中的信息进行提取,搭建一个HTTPS的服务器需要两个文件,分别问证书文件和私钥文件,下面我们来从.p12文件中提取这些需要的文件。


    打开终端,cd到huishao.p12文件所在的目录下,使用如下命令可以将.p12文件中的私钥分解出来:


openssl pkcs12 -in huishao.p12 -nocerts -out privateKey.pem -nodes

之间会要求输入导出.p12文件时所设置的密码。


使用如下命令将.p12文件中的证书分解出来:


openssl pkcs12 -in huishao.p12 -nokeys -out cert.pem -nodes

之间也会要求输入导出.p12文件时所设置的密码。完成上面两部操作后,可以看到当前文件夹下多了两个文件,分别为cert.pem与privateKey.pem,他们分别是证书文件与密钥文件,将他们拷贝到Express项目的bin文件夹下,使得Express项目的结构看起来如下图所示:


image.png


下面我们来配置Express项目。


     在生成好的Express项目中的www文件的末尾添加如下代码:


/*

HTTPS

*/

var fs = require('fs');

var https = require('https');

/*

密钥文件

*/

var privatekey = fs.readFileSync('./privateKey.pem', 'utf8');  

/*

证书文件

*/

var certificate = fs.readFileSync('./cert.pem', 'utf8');  

var options={key:privatekey, cert:certificate};  

var serverHttps = https.createServer(options, app);  

/*

绑定端口

*/

serverHttps.listen(8080,function () {

   console.log('Https server listening on port ' + 8080);

});

用终端在bin文件夹下运行 node www,效果如下:


image.png


在浏览器打开:https://localhost:8080/users,如果服务器搭建成功,Chrome中会出现如下效果:


image.png


点击高级,点击其中的继续访问,可以正常获取到服务器返回的数据。到此,我们的HTTPS服务就搭建成功了。


目录
相关文章
|
11月前
|
机器学习/深度学习 算法 机器人
【PID】基于人工神经网络的PID控制器,用于更好的系统响应研究(Matlab&Simulink代码实现)
【PID】基于人工神经网络的PID控制器,用于更好的系统响应研究(Matlab&Simulink代码实现)
1273 16
|
11月前
|
机器学习/深度学习 数据采集 传感器
具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)
具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)
684 0
|
12月前
|
数据采集 存储 算法
MyEMS 开源能源管理系统:基于 4G 无线传感网络的能源数据闭环管理方案
MyEMS 是开源能源管理领域的标杆解决方案,采用 Python、Django 与 React 技术栈,具备模块化架构与跨平台兼容性。系统涵盖能源数据治理、设备管理、工单流转与智能控制四大核心功能,结合高精度 4G 无线计量仪表,实现高效数据采集与边缘计算。方案部署灵活、安全性高,助力企业实现能源数字化与碳减排目标。
422 0
|
9月前
|
Ubuntu 网络协议 网络安全
解决Ubuntu系统的网络连接问题
以上步骤通常可以帮助解决大多数Ubuntu系统的网络连接问题。如果问题仍然存在,可能需要更深入的诊断,或考虑联系网络管理员或专业技术人员。
2082 18
|
9月前
|
监控 安全 网络协议
Cisco Identity Services Engine (ISE) 3.5 发布 - 基于身份的网络访问控制和策略实施系统
Cisco Identity Services Engine (ISE) 3.5 发布 - 基于身份的网络访问控制和策略实施系统
831 1
Cisco Identity Services Engine (ISE) 3.5 发布 - 基于身份的网络访问控制和策略实施系统
|
9月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
11月前
|
安全 KVM 虚拟化
Cisco Identity Services Engine (ISE) 3.4 - 基于身份的网络访问控制和策略实施系统
Cisco Identity Services Engine (ISE) 3.4 - 基于身份的网络访问控制和策略实施系统
604 2
Cisco Identity Services Engine (ISE) 3.4 - 基于身份的网络访问控制和策略实施系统
|
10月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
624 2
|
11月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
683 18

热门文章

最新文章