牛牛截图控件与利洽远程控制产品升级-支持证书自动升级
今天我们来聊一聊浏览器控件的一个痛点!看看我们是如何解决他的。
背景信息
目前市面上存在多种浏览器,IE、Chrome、Firefox、Edge以及一众国产浏览器,这些浏览器中,IE支持ActiveX,部分国产浏览器支持npapi,而其他的浏览器这两者都不再支持,要如何做到一个浏览器插件,能够在所有的浏览器上都能够正常使用呢?
我们知道利洽科技的浏览器控件针对不同类型的浏览器,采用不同的技术方案,最终实现了浏览器的全覆盖支持!比如在Chrome及Edge等新版本浏览器中,我们采用WebSocket来进行浏览器页面与本地进程的通讯与交互,这个在https页面中使用,则需要本地进程应用正式的由CA机构颁发的有效SSL证书。
由于现在的SSL证书都只能签一年的有效期,导致在一年后又需要重新将新申请的证书打包到插件中,并在机器上重新安装才可使用;这给客户正常的业务使用带来非常大的困扰!
为了提升业务可持续性,同时减少用户下载安装的次数,我们实现了一套证书自动升级的机制,发布后,不再需要重新打包插件安装包,而只需要在指定的服务器上更新SSL证书即可,插件将自动下载新的证书并应用。
解决思路:
- 将证书存放到指定的http服务器上,比如http地址为:http://test.com/testcert/
- 在打包插件时,将证书打包到插件安装包中,同时指定证书更新地址为:http://test.com/testcert/
- 插件启动,检测打包的证书是否过期,未过期则直接应用
- 如果打包的证书过期,则下载证书更新地址中的证书进行使用,并保存到本地电脑中,供下次使用
实现效果

我们实现了牛牛截图控件以及利洽远程控制组件的Windows、Macos以及Linux国产化操作系统全系列的功能实现,全面支持证书的自动升级与应用,真正做到了一次部署,持续使用!
只需要运维人员定期的更新服务器上的SSL证书即可,如果再结合上服务端的证书自动续期与更新,就可以做到全自动了!
可以到这个页面进行体验:http://leeqia.com/screencapture/onlinedemo/
具体配置
接下来让我们一起来看看具体的配置何实现:
-
由客户在服务器上分出一个目录来存放要更新的证书,比如其对应的http地址为:http://test.com/testcert/
-
由客户在testcert目录下放入要更新的证书以及校验文件,具体如下:
文件名称 用途 备注 server.pem 证书文件 我们采用的是nginx类型的SSL证书,需要pem文件和key文件 server.key 证书私钥 我们采用的是nginx类型的SSL证书,需要pem文件和key文件 set.ini 用于给证书升级过程提供校验,比如记录证书和私钥文件的大小和md5值 set.ini示例内容如下:
[set] cert_file_name=server.pem cert_file_size=4121 cert_file_md5=ac989ee8f8f30317c39aef4be56faa8d key_file_name=server.key key_file_size=1700 key_file_md5=d1bfa0e6caa3054ecb268135dad1330e -
将http地址提供过来,我们打包插件的时候,将http://test.com/testcert/打包到插件中,即可完成所有的配置
注: 证书请勿使用泛域名证书,直接申请免费的单域名证书即可。
结语
牛牛截图控件作为目前使用体验最好,功能及兼容性最全面的一款截图控件,专为软件集成而生; 我们立足于为企业和个人提供小巧而精致的插件、产品;再微小的功能,在我们心中都是一个大的产品,从微小处入手,打造极致的产品应用体验!
相关文章:
牛牛截图控件与利洽远程控制产品升级-支持证书自动升级
今天我们来聊一聊浏览器控件的一个痛点!看看我们是如何解决他的。 背景信息 目前市面上存在多种浏览器,IE、Chrome、Firefox、Edge以及一众国产浏览器,这些浏览器中,IE支持ActiveX,部分国产浏览器支持npapiÿ…...
06-jQuery-DOM操作-属性操作-attr()\prop()\addClass()\toggleClass()等
一、通用属性操作 1、attr() 方法:主要用于获取或设置 HTML 元素的属性值,它接受一个参数或两个参数,当传递一个参数时,它返回指定属性名的属性值;当传递两个参数时,它设置指定属性名的属性值为指定的值。…...
接口自动化框架(Pytest+request+Allure)
前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱。 接口自动化包含2个部分,功能性的接口自动化测试和并发接口自动化测试。 本次文章着重介绍第一种,…...
2. 流程控制语句
2. 流程控制语句 2-1. prompt() 弹出一个对话框,用户可以输入内容,输入的内容可以通过变量接收 2-2. if…else if …else 语法: if(条件表达式1){ 条件表达式1为真执行 if(){ }else{ } }else { 条件表达式1为假执行 } if els…...
为了流量,何同学做了个“假B站”?
何同学是B站知名数码博主,凭借优秀的视频制作能力,内容创新获得广大年轻用户的喜欢。 2021年的时候,UP主老师好我叫何同学就发布了一条制作AirDesk的视频,随后迅速在社交媒体中引发了大量关注。 当时,该视频为B站全站…...
腾讯云图形验证码申请流程
目录 一、官方指引二、操作步骤1.步骤1:新建验证,获取验证码密钥2.步骤2:客户端接入验证码,展示验证页面3.步骤3:服务端接入验证码,调用票据校验 API 进行二次校验 一、官方指引 https://cloud.tencent.co…...
浅谈管网抢维修效率对产销差率的影响
1 背景 多年来,漏损治理工作一直围绕检漏、分区计量或压力管理等相关话题,却忽视了抢维修速度与质量对漏损治理成效的影响。实际上,不管是DMA分区计量,还是检漏,最终还是要通过抢维修来修复漏点达到控制漏损的目的。尽…...
java设备台账管理系统myeclipse定制开发mysql数据库网页模式java编程jdbc
一、源码特点 java设备台账管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助 mysql数据库,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 java设备台账管理系统myeclipse定制开发mysql 二、功能介绍 此次系统…...
ChatGPT帮你写简历找工作
随着随着毕业时间的到来,应届生将要面临求职问题,根据官方的统计,2023届高校毕业生预计达1158万人,就业市场竞争激烈,无论是校园招聘,招聘会,线上招聘除了自身的准备和个人能力,都会…...
CentOS 8.5和CentOS8.4安装-解决Error setting up base repository问题
CentOS 8 内核采用了python3.6,而CentOS 7还是python2.7,对于想要用GPU服务器进行机器学习方面的工作,还是用python3.6的内核更好些。 CentOS 8 的新特性 DNF 成为了默认的软件包管理器,同时 yum 仍然是可用的 使用网络管理器( nmcli 和 nmtui)进行网络配置,移除了网络脚…...
数据抓取使用HTTP隧道代码示例
以下是使用Python的requests库实现HTTP隧道的代码示例: python import requests # 设置代理服务器地址和端口号 proxy_host 127.0.0.1 proxy_port 8888 # 设置目标网站URL url Example Domain # 创建Session对象 session requests.Session() # 设置代理服务…...
vue3【使用axios并封装axios请求】
第一步:安装axios npm install axios 第二步:编写请求文件 新建request.js 简单的axios封装,里面相关提示信息,自己可以引入element-plus去添加 /**axios封装* 请求拦截、相应拦截、错误统一处理*/ import axios from axios; i…...
「实验记录」MIT 6.824 Raft Lab2C Persist
#Lab2C - Persist I. SourceII. My CodeIII. MotivationIV. SolutionS1 - 实现persist()S2 - 实现readPersist()S3 - 持久化三字段S4 - 在newRaft()中初始化nextIdxs和matchIdxsS5 - 适当缩短心跳时间 V. Result I. Source MIT-6.824 2020 课程官网Lab2: Raft 实验主页simviso…...
软件详细设计总复习(三)【太原理工大学】
题型及分值: 选择 30 分,填空 20 分, 判断 10 分,简答 20 分,综合设计 20 分。 文章目录 三、行为型模式1. 命令模式2. 迭代器模式3. 观察者模式4. 状态模式5. 策略模式 三、行为型模式 1. 命令模式 举个例子&#x…...
Vue3(一):创建vue3工程、setup、vue3响应式原理、computed和watch
Vue3:第一章 一、创建Vue3.0工程1.使用vue-cli创建2.使用vite创建 二、Vue3中的响应式1.拉开序幕的setup2.ref函数3.reactive函数4.vue3中响应式的原理(1)vue2中响应式原理(2)Vue3中的Proxy 5.reactive和ref的对比6.se…...
Spring中的@Value注解详解
Spring中的Value注解详解 概述 本文配置文件为yml文件 在使用spring框架的项目中,Value是经常使用的注解之一。其功能是将与配置文件中的键对应的值分配给其带注解的属性。在日常使用中,我们常用的功能相对简单。本文使您系统地了解Value的用法。 Value…...
YSL赢麻了?SMI社媒心智品牌榜Top20公布:YSL破局夺魁,国货品牌现后起之秀
全文速览 1.数说故事联合用户说从美妆、彩妆、护肤三板块全新发布《SMI社媒心智品牌榜》。 2.圣罗兰、兰蔻、欧莱雅等法国高端美妆大牌垄断美妆《SMI社媒心智品牌榜》前三甲。 3.彩妆Top20榜单中,底妆产品稳居前列,色彩美妆占据一席之地。 4.护肤TOP…...
链式哈希,一致性哈希,倒排表
在普通的查询中,通过关键码的比较进行查找,而哈希是根据关键码直接定位到数据项 哈希冲突:同一个关键码经过哈希函数后指向同一个记录集 链式哈希 using namespace std; #define M 13 typedef int KeyType; //typedef struct //{ // KeyTyp…...
Python操作XML教程:读取、写入、修改和保存XML文档
目录 导入所需模块解析XML文档获取元素遍历XML文档写入新的元素修改元素的内容和属性删除元素保存修改后的XML文档示例演示python操作xml的常用方法 XML是一种常见的数据交换格式,在许多应用中都被广泛使用。通过掌握Python操作XML的基础知识,您将能够轻…...
Oracle数据库中了locked1勒索病毒,用友nchome配置文件损坏该如何解除
随着互联网技术的不断发展,网络安全问题也越来越受到人们的关注。其中,勒索病毒是一种比较常见的网络安全威胁。最近很多集团企业在使用Oracle数据库的过程中,遭遇到了locked1勒索病毒的攻击,导致企业的用友nchome配置文件损坏&am…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...
篇章一 论坛系统——前置知识
目录 1.软件开发 1.1 软件的生命周期 1.2 面向对象 1.3 CS、BS架构 1.CS架构编辑 2.BS架构 1.4 软件需求 1.需求分类 2.需求获取 1.5 需求分析 1. 工作内容 1.6 面向对象分析 1.OOA的任务 2.统一建模语言UML 3. 用例模型 3.1 用例图的元素 3.2 建立用例模型 …...
