[系统设计/开发] APP密钥签发服务器
公司的信息安全制度要求对产线的APP进行严格的签发管理,确保密钥、密码的安全。
之前的做法是:
- 建立一台独立的签发主机;
- 密钥放在签发主机上,由专人管理;
- 构建系统每构建出一个产线APP,都要手动拷贝到该台主机上,人工输入密码进行签发,签好后再把APP拷出去
这个做法比较安全,但是有明显的缺点:
- 不方便,构建系统每构建出一个产线APP,都要找专人去拷贝APP、输入密码、拷出APP,很麻烦;
- 造成持续集成环境的脱节,之前,开发维护代码、构建系统下载代码、构建系统构建APP、发布到内部FTP、测试人员测试都是持续的过程,但是现在到了构建产线APP这一步就脱节了;
为了解决这个问题,部门领导让我重新设计一台签发服务器。经过多次收集需求,做了较长时间的分析,我给出了下述方案:
. 需求概述
1.1 持续集成
CI上的APP构建系统在构建产线APP时,能自动连接签发服务器进行签发,使签发过程加入到持续集成环境;
1.2 减少人工干预
签发服务器在运行期间只需要输入一次签发密码,可随时、连续签发构建系统指定的APP,直到签发服务器重启后才需要重新输入签发密码;
1.3 安全保障
签发服务器做最大化安全设置,签发密钥和密码不落地、系统仅允许构建系统访问;
2. 概要设计
2.1. 签发服务器启动过程
2.2.
签发程序工作流程
2.2.
说明
2.2.1
持续集成的实现
签发程序自动从内存读取加密的密钥和密码,不需要人工输入,实现不间断签发;
CI通过参数控制构建系统是否构建产线版本,构建系统决定是否连接签发服务器:
如果CI要求构建系统构建产线版本,则构建系统自动连接签发服务器,并用产线的密钥签发;否则,构建系统用测试环境的密钥签发;
签发服务器自动从FTP服务器下载未签发APP、上传已签发APP
2.2.2
密码问题的解决
用户启动加密程序将密钥和密码注入到内存中,签发程序签发APP时自动从内存读取加密的密钥和密码,替代人工输入;
内存中加密的密钥和密码在重启服务器后被清空。
2.2.3
安全保障
签发服务器仅允许构建服务器访问;
签发密钥和密码加密注入内存、不落地;
有了这套方案,实现起来就比较简单了。其中一定会有一个问题:
密钥文件、密码是怎么注入内存的?
其实,我是在签发服务器上建立了redis服务,首先禁止它往本地写dump,使它只能把数据存在内存里;然后通过各种redis接口,把数据加密后放进去,以后取出来也是非常方便的。
另外,这个方案假定APP构建服务器是安全的,允许它访问签发服务器,因此,必须做好APP构建服务器的安全工作。
[系统设计/开发] APP密钥签发服务器的更多相关文章
- 《PHP开发APP接口》笔记
PHP开发APP接口 [TOC] 课程地址 imooc PHP开发APP接口 学习要点 APP接口简介 封装通信接口方法 核心技术 APP接口实例 服务器端 -> 数据库|缓存 -> 调用 ...
- Web程序员开发App系列 - 开发我的第一个App,源码下载
Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...
- Web程序员开发App系列 - 认识HBuilder
Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...
- Android学习系列(7)--App轮询服务器消息
这篇文章是android开发人员的必备知识. 1.轮询服务器 一般的应用,定时通知消息可以采用轮询的方法从服务器拿取消息,当然实时消息通知的话,建议采用推送服务. 其中需要注意轮询的频率 ...
- 开发APP不搞清楚这20个问题,必然沦为一场灾难
移动经济的高速增长极大刺激了企业和个人的APP开发热情,从卖野山鸡的到卖无人机的,从老大妈到小正太都跃跃欲试,更不要说那些传统企业的信息主管们了. 面对今天如过江之鲫的APP市场,很少有人意识到,移动 ...
- mui开发app之html5+,5+Runtime,5+sdk,native.js
说说几个名词 html5:目前最新的html规范,w3c联盟制定,手机端主要由webkit实现规范,对用户来说就是浏览器实现了它 html5+:所谓"+",扩充了html5原本没有 ...
- mui开发app之联网应用传输数据
手机的app分为,在线和单机,在线就是类似于C/S模式,能与服务器与他人共享数据的程序,单机就是在没有网络下可以玩转的app. 目前互联网盛行的时代,99%的程序都是联网环境下工作的.那么如何开发本地 ...
- mui开发app之cropper裁剪后上传头像的实现
在大多数app项目中,都需要对用户头像的上传,之前做web开发的时候,我主要是通过input type=file的标签实现的,上传后,使用php对图片进行裁剪,这种方式比较传统简单. 此次app开发中 ...
- HTML5 开发APP(打开相册以及图片上传)
我们开发app,常常会遇到让用户上传文件的功能.比如让用户上传头像.我公司的业务要求是让用户上传支付宝收款二维码,来实现用户提现的功能.想要调用相册要靠HTML Plus来实现.先上效果图 基本功能是 ...
随机推荐
- bootstrap之消息提示
<!DOCTYPE html><html> <head> <title>Bootstrap</title> < ...
- EXCEPT差集运算
EXCEPT差集运算在逻辑上先删除两个输入多集中的重复行,把多集变成集合,然后返回只在第一个集合中出现,在第二个集合中不出现的所有行.可以看下面示意图.
- iOS开发Swift篇—(八)函数(2)
iOS开发Swift篇—(八)函数(2) 一.函数类型 函数类型也是数据类型的一种,它由形参类型和返回值类型组成,格式是 (形参类型列表) -> 返回值类型 func sum(num1: Int ...
- 【lattice软核】MICO8流程
The LatticeMico System software is composed of three bundled applications: Mico System Builder (MS ...
- ros使用rplidar hector_mapping建地图
ros中建地图方式有两种: 首先1.首先下载hector_slam包到你工作空间的src下 命令: cd ~/catkin/src git clone https://github.com/tu-da ...
- sscanf函数
sscanf函数用法举例 #include <stdio.h> #include <string.h> #define N 512 int main() { char buf[ ...
- 使用url下载网络图片以及流介绍
使用url下载网络图片的时候,首先需要建立一个URL对象,然后使用一个输入流获取该URL中的内容.之后使用读取该输入流的内容,使用一个输出流写到本地文件中.最后关闭输入和输出流.下面是一个简单的下载代 ...
- jQueryMobile控件之ListView
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 利用Scrollow写一个下拉刷新
利用scrollView滑动的2个监听方法实现 //滑动结束时候 出发的方法 - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView ...
- Android Studio实现页面跳转(新页面或者网站)
一,跳转到另一个页面 百度了好久,好像好多种方法,从中挑选了一中比较方便的一中方法 利用Intent类进行实现 1,首先在firstActivity中添加相应的跳转命令代码 例如一下示例代码 if ( ...