深入理解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服务就搭建成功了。


目录
相关文章
|
19天前
|
网络协议 安全 网络性能优化
|
2月前
|
搜索推荐 Android开发 iOS开发
安卓与iOS系统的用户界面设计对比分析
本文通过对安卓和iOS两大操作系统的用户界面设计进行对比分析,探讨它们在设计理念、交互方式、视觉风格等方面的差异及各自特点,旨在帮助读者更好地理解和评估不同系统的用户体验。
31 1
|
2月前
|
网络协议 Linux Shell
搭建虚拟机的网络布局类型和配置操作
搭建虚拟机的网络布局类型和配置操作
|
1月前
|
编解码 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)1
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)
62 1
|
14天前
|
数据采集 存储 JSON
【专栏】网络爬虫与数据抓取的基础知识,包括爬虫的工作原理、关键技术和不同类型
【4月更文挑战第27天】本文介绍了网络爬虫与数据抓取的基础知识,包括爬虫的工作原理、关键技术和不同类型。通过实例展示了如何构建简单爬虫,强调实战中的环境搭建、目标分析及异常处理。同时,文章探讨了法律、伦理考量,如尊重版权、隐私保护和合法用途,并分享了应对反爬策略。最后,倡导遵守数据抓取道德规范,以负责任的态度使用这项技术,促进数据科学的健康发展。
|
1月前
|
编解码 开发工具 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
37 2
|
3天前
|
运维 Linux 虚拟化
Docker详解(十四)——Docker网络类型详解
Docker详解(十四)——Docker网络类型详解
16 0
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
【AI 初识】神经网络有哪些不同类型?
【5月更文挑战第2天】【AI 初识】神经网络有哪些不同类型?
|
11天前
|
存储 数据处理 数据库
|
11天前
|
存储 安全 算法