APP密钥签发服务器

公司的信息安全制度要求对产线的APP进行严格的签发管理,确保密钥、密码的安全。

之前的做法是:

  1. 建立一台独立的签发主机;
  2. 密钥放在签发主机上,由专人管理;
  3. 构建系统每构建出一个产线APP,都要手动拷贝到该台主机上,人工输入密码进行签发,签好后再把APP拷出去

这个做法比较安全,但是有明显的缺点:

  1. 不方便,构建系统每构建出一个产线APP,都要找专人去拷贝APP、输入密码、拷出APP,很麻烦;
  2. 造成持续集成环境的脱节,之前,开发维护代码、构建系统下载代码、构建系统构建APP、发布到内部FTP、测试人员测试都是持续的过程,但是现在到了构建产线APP这一步就脱节了;

为了解决这个问题,部门领导让我重新设计一台签发服务器。经过多次收集需求,做了较长时间的分析,我给出了下述方案:

1. 需求概述

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构建服务器的安全工作。

时间: 2024-10-11 13:10:48

APP密钥签发服务器的相关文章

Secure和Xshell设置密钥登陆服务器

一.Secure客户端通过密钥登陆服务器: 1.Secure客户端设置 生成密钥 点击下一步: 选择加密类型: 输入登陆密码,点击下一步: 加密长度(默认1024),下一步: 下一步: 生成路径,完成: 确定是否为本客户端的全局公钥,如果没有别的公钥,就点是,否则点否: 2.服务器客户端设置: 写入公钥 在生成的密钥里面有两个文件,一个公钥文件(Identity.pub),一个私钥(Identity). 需要把Identity.pub内的内容写入到Linux服务器的特定文件中:~/.ssh/au

Android学习系列(7)--App轮询服务器消息

这篇文章是android开发人员的必备知识. 1.轮询服务器     一般的应用,定时通知消息可以采用轮询的方法从服务器拿取消息,当然实时消息通知的话,建议采用推送服务.    其中需要注意轮询的频率设置,要在需求和性能中平衡. 2.独立进程     无论程序是否正在运行,我们都要能通知到客户,我们需要一个独立进程的后台服务.     我们需要一个独立进程的后台服务.     在AndroidManifest.xml中注册Service时,有一个android:process属性,如果这个属性以

开发直播APP选择云服务器的优点

开发者在开发直播app是都会用到服务器来辅助完成直播的相关业务.目前市场上,服务器的种类大致可以分为两种,一种是物理服务器,另一种是云服务器.但是目前适合直播业务的非云服务器不选. 首先,小编先来跟大家阐述下,什么是云服务器? 是一种简单高效.安全可靠.处理能力可弹性伸缩的计算服务.其管理方式比物理服务器更简单高效. 那么,开发直播app选择云服务器的好处是什么? 1.节省空间 传统的物理服务器需要专门的机房进行管理操作,但是云服务器不需要单独的机房进行管理,只需要找到相关的服务商进行购买即可.

[.net]手机APP与IIS服务器联调配置

前端时间写过一段时间接口,在后期的时候,出现了一些无法通过查看日志来找出问题所在的bug.于是,将手机APP连接到IIS服务器上进行调试,下面是配置的具体步骤 1. 配置IIS  添加网站,将物理路径配置为你项目的文件路径,IP地址设置为APP调用API的地址,其他的默认. 2.配置Visual Studio 选中项目,右键选择属性,并在弹出的页面中选择Web:   关键的一步,将原来默认的IISExpress修改为本地IIS, 并修改项目URL为上一步的IP地址,点击创建虚拟目录: 保存设置.

利用缓存实现APP端与服务器接口交互的Session控制

与传统B/S模式的Web系统不同,移动端APP与服务器之间的接口交互一般是C/S模式,这种情况下如果涉及到用户登录的话,就不能像Web系统那样依赖于Web容器来管理Session了,因为APP每发一次请求都会在服务器端创建一个新的Session.而有些涉及到用户隐私或者资金交易的接口又必须确认当前用户登录的合法性,如果没有登录或者登录已过期则不能进行此类操作.我见过一种“偷懒”的方式,就是在用户第一次登录之后,保存用户的ID在本地存储中,之后跟服务器交互的接口都通过用户ID来标识用户身份. 这种

小蚂蚁学习APP接口开发(7)—— APP接口实例——服务器定时缓存的方式开发接口

基本的思路:服务器只负责定时更新缓存.请求进来只需要读取缓存就可以了. 服务器定时执行生成缓存的代码: <?php  /******************************** * *   crontab 定时生成缓存文件 * * * * * * /usr/bin/php /app/crontab.php *   学php的小蚂蚁 *   原创博客 http://my.oschina.net/woshixiaomayi/blog * ***************************

TortoiseGit使用密钥连接服务器

git是个好东西,tortoisegit也是个好东西.在Windows下使用tortoisegit用的比较多,而对命令行的时候比较少. 对于tortoisegit可以支持使用密钥有两种,一种是支持openssh的密钥,一种是支持putty的密钥.但是这两种不同,对于Linux的ssh一般都使用openssh,但是没关系,我们可以转换. 使用putty的密钥: 1.在安装TortoiseGit的时候其实会让你选择默认使用的ssh客户端,默认情况下是使用TortoiseGitPlink这个客户端.

Android 关于后台杀死App之后改变服务器状态的一些尝试

前言: 如题,我的需求是:我需要在App在后台运行(未退出),调出最近运行记录,杀死App服务时,程序能够向服务器发送一条指令,以此达到我想要的目的. Android方面刚刚才开始玩,我一开始想的是可不可以在Activity中监听到,比如onDestroy()方法,但是打Log看了之后是没有的.度娘是万能的,百度一波后,我在逼乎上找到了另一个思路,那就是创建一个Server,很多人的博客中也都指出了,App在后台被杀死时,Service的onTaskRemoved()方法是可以监听到的. Ser

xshell密钥登录服务器

其实很简单 1 xshell 生成pub key . 在工具 -> 用户密钥管理. 生成 .另存为id_rsa_1024.pub 2.服务器上ssh-keygen 3.将生成的文件id_rsa_1024.pub 上传到服务器. mv id_rsa_1024.pub /root/.ssh/authorized_keys chmod 600 /root/.ssh/authorized_keys 4.vim /etc/ssh/sshd_config 重启sshd PasswordAuthenticat