探究Notes插件签名校验机制及安全预置第三方已签名插件解决方案

伴随着 Eclipse 富客户端平台(Rich Client Platform,RCP)的普及,越来越多的功能以插件的形式出现。这使得企业除了可以自行开发插件之外,也可以选择使用第三方提供的插件。但是互联网上的插件五花八门,如何保证插件来源的安全成为企业所面临的问题。基于公共密钥基础设施(Public Key Infrastructure,PKI)的数字签名技术为该问题提供了一个很好的解决方案。插件提供机构对其所开发的插件利用其私人密钥(Private key)进行数字签名(即加密过程),而使用机构则利用提供机构所公开的公共密钥(Public Key)对插件签名进行校验(即解密和验证过程),这样在技术上既能够保证该插件确实是由该受信任的机构所提供,同时也保证了插件内容未被恶意篡改,即完整性。

IBM Notes 中的插件签名校验机制

Notes 的插件签名校验机制在借鉴了 Eclipse 实现的同时,也根据自身的产品特点进行了相应的扩展。在 Notes 中,插件签名校验的流程为:

从已签名的插件中
获取签名证书数据,构建内存证书对象。 根据所处的不同阶段(Notes 安装中或者安装后),加载相应的证书库。

在 Notes 中,以下两种情况会触发插件签名安全检验:

一、在 Notes 安装过程中,所有位于安装包中的插件在默认情况下必须被受信任的实体所签名,否则将导致该插件安装失败。Notes 版本制作小组(Build Team)在生成 Notes 安装包过程中已经预置了该过程所需要的所有证书,因此在安装由 IBM 提供的默认的 Notes 安装包中的插件时不会存在任何的安全警告,因为它们的签名都是可以被校验通过的。以 Windows 安装包为例,该过程所涉及的证书库文件为安装包的 deploy 目录下的 .keystore.IBM_J9_JVM.install;

二、在 Notes 安装完成之后,如果此时客户希望部署自己开发或者第三方开发的插件时,则需要利用安装 / 更新(Install/Update)来完成。以 Windows 为例,该过程涉及的证书库文件为 Notes 自带的 JVM 中的证书库文件,具体路径为安装目录下 \Notes\jvm\lib\security\cacerts,其默认密码为“changeit”,且证书库类型为“jks”。Notes 中的安装 / 更新界面默认是隐藏的,可以通过修改以下文件来启用,即 Notes 的用户数据目录下 \Data\workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings\com.ibm.notes.branding.prefs,设置其 enable.update.ui 为 true,则可以在 File\Application 中看到隐藏的菜单项。如果 com.ibm.notes.branding.prefs 不存在,则需要新建该文件,并且设置其内容为“enable.update.ui=true”。

在证书库中进行签名校验,如果签名校验通过,则校验完成,可以继续插件的安装过程。 如果步骤 3)中签名校验未通过,Notes 则会
查找预置的插件签名校验失败处理策略,根据策略的设置,进行后续的相应处理。

客户可以在安装包中的 deploy\ plugin_customization.ini 配置文件中设置相应的策略,根据对应的值来指定相应的处理方式。例如,当指定 com.ibm.rcp.security.update/UNTRUSTED_SIGNATURE_POLICY 为 PROMPT 时,如果该插件的签名不被信任,则会弹出相应的安全警告提示框供用户自行选择,也可以将上述项目设置为 DENY,那么一旦签名不被信任时,则直接拒绝其安装,不再进行提示。默认情况下,该项目的值为 PROMPT。

定制 Notes 安装包预置第三方插件的需求

客户在购买了 Notes 之后,除了使用 Notes 本身提供的开箱即用功能,例如邮件之外,往往会基于 Notes 底层 Java 平台(即 Lotus Expeditor)所提供的强大的平台功能来进行二次开发,即以 Notes 为基础开发满足企业自身需求的各种功能插件。此时,相应的问题也随之而来,尽管 Lotus Domino 可以实现对各个 Notes 客户端的中心管理功能,但是却仅限于在策略配置级别的管理,无法通过 Domino 的策略下发插件,那么如何才能将企业自行开发或者购买的第三方功能插件安全快速的部署在所有的 Notes 客户端上呢?此时,定制 Notes 的安装包,预置企业自行开发或者第三方的插件成为一种选择。在该过程中,插件来源的安全性显然不能被忽视,因此在了解了 Notes 的插件签名校验机制后,对于上述需求,我们可以直接利用 Notes 提供的插件安全校验机制来确保我们所做的各种配置是足够安全的。

定制 Notes 安装包来安全预置第三方插件的完整解决方案

以下就以一个测试的被自签名证书所签署的插件为例,了解下定制 Notes 安装包,安全预置第三方插件的完整解决方案。

先决条件

下载并安装 Java 2 Standard Edition(Java Development Kit)V5 及更新版本

下载并安装 IBM IBM Notes V8.5.3

下载 IBM Lotus Expeditor Toolkit V6.2.3

下载 Eclipse 3.4 或以上版本并安装 Expeditor Toolkit 以准备 Notes 开发调试环境

在 Eclipse Foundation 上可以找到相应的 Eclipse 平台(Eclipse3.4 或以上版本),并且通过 Eclipse 的“帮助 \ 软件更新 \ 查找并安装”菜单来安装 Expeditor Toolkit V6.2.3,配置好 Notes 的 Java 开发和调试环境。具体的配置过程可以参见 Developerworks 中 Expeditor Toolkit 的产品文档。

时间: 2024-09-17 01:39:07

探究Notes插件签名校验机制及安全预置第三方已签名插件解决方案的相关文章

IBM Notes插件签名校验机制及其应用

引言 伴随着 Eclipse 富客户端平台(Rich Client Platform,RCP)的普及,越来越多的功能以插件的形式出现.这使得企业除了可以自行开发插件之外,也可以选择使用第三方提供的插件.但是互联网上的插件五花八门,如何保证插件来源的安全成为企业所面临的问题.基于公共密钥基础设施(Public Key Infrastructure,PKI)的数字签名技术为该问题提供了一个很好的解决方案.插件提供机构对其所开发的插件利用其私人密钥(Private key)进行数字签名(即加密过程),

Android5.1.1 - APK签名校验分析和修改源码绕过签名校验

Android5.1.1 - APK签名校验分析和修改源码绕过签名校验 作者:寻禹@阿里聚安全 APK签名校验分析 找到PackageParser类,该类在文件"frameworks/base/core/java/android/content/pm/PackageParser.java"中.PackageParser类的collectCertificates方法会对APK进行签名校验,在该方法会遍历APK中的所有文件,并对每个文件进行校验.下面是该方法的部分源码: APK是一个ZIP

DB2 UDB安全性:使用 GSS-API安全机制(SPKM/LIPKEY)的安全插件

简介 DB2 UDB 提供一种框架,用于编写定制的安全插件,管理员可使用这些插件进行 DB2 UDB 身份验证. 该框架是在 DB2 UDB V8.2 中引入的,也支持基于通用安全服务应用程序编程接口(Generic Security Service Application Programming Interface,GSS-API)的插件身份验证. 许多 DB2 UDB 管理员利用 GSS-API 插件进行基于 Kerberos 的身份验证.由于 NFS V4(Network File Sys

BrnShop开源网上商城第三讲:插件的工作机制

原文:BrnShop开源网上商城第三讲:插件的工作机制 这几天BrnShop的开发工作比较多,所以这一篇文章来的晚了一些,还请大家见谅呀!还有通知大家一下BrnShop1.0.312版本已经发布,此版本添加了报表统计等新功能,需要源码的园友可以点此下载.好了,我们现在进入今天的正题.关于BrnShop插件内容比较多,所以我分成两篇文章来讲解,今天先讲第一部分内容:插件的工作机制. 对于任意一种插件机制来说,基本上只要解决以下三个方面的问题,这个插件机制就算成功了.这三个方面如下: 插件程序集的加

Android签名机制介绍:生成keystore、签名、查看签名信息等方法_Android

Android独有的安全机制,除了权限机制外,另外一个就是签名机制了.签名机制主要用在以下两个主要场合起到其作用:升级App和权限检查. 升级App 用户在升级一款已经安装过的App时,如果程序的修改来自于同一来源,则允许升级安装,否则会提示签名不一致无法安装的提示. 权限检查 我曾在Android Permission权限机制的具体使用一文中提过,对于申请权限的  protection level 为 signature 或者 signatureOrSystem 的,会检查权限申请者和权限声明

jQuery form 表单验证插件(fieldValue)校验表单_jquery

jQuery form表单验证相关知识,在做项目中经常会用到,其实也不算复杂,下面通过一段代码给大家介绍jQuery form 表单验证插件(fieldValue)校验表单的相关知识,感兴趣的朋友一起学习吧 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>jQuery form插件的使用--使用 fieldValue

刚开始学OPENSSL , 请问rsa加密解密和验证签名有关系吗? 为什么需要验证签名。

问题描述 刚开始学OPENSSL , 请问rsa加密解密和验证签名有关系吗? 为什么需要验证签名. 我只想知道具体的工作过程,不必知道里面的算法是怎么实现的. 知道怎么去用就可以了,感觉自己越看与糊涂了. 求助 谢谢 解决方案 因为RSA算法是用的公钥,私钥机制来进行加解密,而私钥另一个用途就是验证身份,所以RSA加密本身也能用在身份验证,数字签名等场合. 这相当于RSA的多个用途 解决方案二: 公钥和私钥是一对的,这对密钥由个人向认证机构申请,最后由认证机构颁发私钥给你并在其网站上公布你的公钥

win8系统第三方inf签名无效该怎么办?

  win8系统出现第三方inf签名无效问题,需要设置高级启动选项来解决,在win7系统中都是系统默认的,但是在win8中有所改变,值得注意. 1.将鼠标放到电脑右下角,待右侧隐藏工具栏出现,找到设置; 2.点击设置进入下一个界面,找到右下角的"更改电脑设置"; 3.然后进入下一步,找到"更新和恢复"; 4.进入下一步,找到"恢复",点击看到高级选项,然后点击"重启"; 5.重启后进入下一个界面,"选择一个选项&qu

启用已签名和未签名的activeX控件

  故障现象: 电脑没有提示控件安装或者打开看家宝视频一直在加载. 原因分析: 这个可能是用户签名的activeX控件没有安装或者启用. 解决方案: 1. 按下键盘的ALT键,选择"工具"---"Internet选项"; 2. 打开"安全"---"自定义级别"; 3. 将里面的"已签名的activeX控件"和"未签名的activeX控件"都启用.