使用数字签名保护基于IBM Lotus Forms的应用程序的安全
安全始终是应用程序的主要关注点,尤其是对于那些使用表单捕获数据进行决策的应用程序而言。 IBM®Lotus®Forms支持行业标准的数字签名技术,该技术可以保持表单中包含的数据以及表单本身在传输过程中不受篡改的影响。 此解决方案说明了一种端到端方法,包括设计表单,对表单签名和验证签名。
图1.解决方案图
让我们更详细地看一下图1。
- 设计师。 在此处安装Lotus Forms Designer。 您可以在此处创建表单。 有关Lotus Forms Designer安装的更多信息,请参考Lotus Forms信息中心 。
- 查看者签名者。 在这里安装Lotus Forms Viewer; 您可以在此处签名表格。 用户的数字证书需要在此系统上安装,并且此操作的说明将在本文后面介绍。 有关Lotus Forms Viewer安装的更多信息,请参考Lotus Forms Information Center 。
- Web表单签名者。 在此处安装Microsoft®Internet Explorer; 您也可以在此处签名表格。 用户的数字证书必须安装在此系统上,有关安装的说明将在后面说明。 Web表单签名者可以与Viewer Signer共享同一物理系统。
- 查看器签名验证程序。 在这里安装Lotus Forms Viewer; 您可以在此处验证已签名的表单。 根证书必须安装在此系统上,并且稍后说明如何安装。 有关Lotus Forms Viewer安装的更多信息,请参考Lotus Forms Information Center 。
- Web表单签名验证程序。 在此处安装Internet Explorer; 您也可以在此处验证已签名的表单。 由于签名验证是在服务器端完成的,因此无需在该系统上安装任何证书。
- Web表单服务器。 安装Lotus Forms Web表单服务器; 您可以在此处存储和处理所有表格。 根证书需要在此系统上安装,有关此操作的说明将在后面说明。 有关Lotus Forms Web表单服务器的安装,请参考Lotus Forms信息中心 。
制备
Lotus Forms支持许多不同的签名。 在此解决方案中,我们使用基于PKI的数字签名,因为它是可靠的且被广泛使用。 要签署表格,您需要数字证书。 通常,证书是由证书颁发机构(CA)颁发的。 证书颁发机构偶尔会出于测试目的而提供短期证书。 请与您选择的证书颁发机构联系,以确定它是否提供短期证书。 在本文的示例中,我们应用了Thawte提供的测试证书。 您也可以申请IBM证书 。
在查看器签名者上安装用户证书
在您签署表单之前,必须在系统上安装用户数字证书。 您可以在两个证书存储上安装证书:Internet Explorer证书存储和Mozilla Firefox证书存储。 您可以选择这两种方法之一。
要将用户数字证书安装到Internet Explorer证书存储中,请按照下列步骤操作:
- 双击证书文件(通常是扩展名为.p12的文件)。
- 将显示“证书导入向导”窗口,如图2所示。
图2.证书导入向导
- 点击下一步。
- 在“文件名”字段中输入文件名及其位置。 您可以浏览以选择文件名。 点击下一步。
- 在“密码”字段中,输入保护私钥的密码。 通常,在您应用证书时设置密码。 点击下一步。
- 如果尚未选择,请选择默认设置,根据证书的类型自动选择证书存储。 点击下一步。
图3.完成证书导入向导
- 确认显示在图3所示窗口中的证书设置。单击“完成”以导入证书。
- 显示安全警告。 单击是。
- 出现一个窗口,指出“导入成功。” 单击确定。
您可以查看您导入的证书。 启动Internet Explorer,然后选择“工具”“ Internet选项”。 选择Content选项卡,然后单击Certificates按钮,如图4所示。将显示一个窗口,其中列出了您的证书。
图4. Content选项卡
在Firefox证书存储中安装用户数字证书
要在Firefox证书存储区中安装用户数字证书,请按照以下步骤操作:
- 启动Firefox,然后选择“工具”“选项”。
- 单击Advanced,然后选择Encryption选项卡,如图5所示。
图5.加密选项卡
- 单击查看证书按钮。 显示如图6所示的“证书管理器”窗口。
图6.证书管理器
- 单击导入,然后选择证书文件。
- 输入保护私钥的密码。 单击确定。
- 将显示一个窗口,显示以下消息:“已成功还原您的安全证书和私钥”。 单击确定。
您的证书如图7所示。
图7.“证书管理器”窗口中的证书列表
在Web表单签名者上安装用户证书
您还需要安装用户数字证书,然后才能使用Web表单服务器签署表单。 步骤与“在查看器签名者上安装用户证书”部分中所述的步骤相同,但是您需要将用户证书导入Internet Explorer证书存储中。 如果使用同一系统,并且Internet Explorer证书存储中已经存在用户证书,请跳过安装用户数字证书的步骤。
注意:不支持Firefox在Web表单服务器中签名表单,因此请勿在Firefox上安装用户证书。
在查看器签名验证程序上安装根证书
要验证签名的表单,请在运行查看器的系统上安装颁发了用于对表单进行签名的用户证书的证书颁发机构的根证书。 您也可以在Internet Explorer证书存储或Firefox证书存储中安装根证书。 您可以选择这两种方法之一。
要在Internet Explorer证书存储中安装根证书,请按照下列步骤操作:
- 启动Internet Explorer,然后选择“工具”“ Internet选项”。
- 选择内容选项卡,然后单击证书。
- 在显示的“证书”窗口中,单击“导入”。 将打开“证书导入向导”。 浏览到根证书文件,该文件通常是扩展名为.crt的文件。 点击下一步。
- 单击浏览以查看证书存储的列表,如图8所示。选择显示物理存储选项。
图8.选择证书存储窗口
图9.选择证书存储
- 选择“受信任的根证书颁发机构-注册表”,如图9所示。单击“确定”。
- 显示如图10所示的证书导入向导。 确保为此窗口中显示的证书选择的位置与您在上一步中选择的位置匹配。 参见图10。单击Next。
图10.证书位置
图11.确认证书设置
- 确认显示在“证书导入向导”窗口中的证书信息,如图11所示,然后单击“完成”。
- 出现一个窗口,指出“导入成功。” 单击确定。
要将根证书安装到Firefox证书存储中,请按照下列步骤操作:
- 启动Firefox,然后选择“工具”“选项”。
- 单击“高级”,然后选择“加密”选项卡。
图12.加密选项卡
- 单击查看证书按钮,如图12所示。
- 在显示的“证书管理器”窗口中,单击“权限”选项卡。
- 选择根证书文件,然后单击导入。
图13.下载证书窗口
- 在显示的“下载证书”窗口中,选择以下选项,如图13所示:
- 信任此CA来标识网站。
- 信任此CA来标识电子邮件用户。
- 信任此CA以确定软件开发人员。
- 单击确定。
证书已成功导入。
在Web表单服务器上安装根证书
要在Web表单服务器中验证已签名的表单,请在运行Web表单服务器的系统上安装颁发了用于对表单进行签名的用户证书的CA的根证书。 步骤与“在查看器签名验证程序上安装根证书”部分中所述的步骤相同,但是您必须将根证书导入Internet Explorer证书存储中。
注意:不支持Firefox在Web表单服务器中验证签名表单,因此请勿在Firefox上安装根证书。
设计具有数字签名功能的表单
使用Lotus Forms Designer,您可以轻松创建具有数字签名功能的表单。 您可以通过设置一系列签名过滤器来设计每个签名以对表单的特定部分进行签名。 签名过滤器使用“保留”或“省略”过滤器指定表单的哪些部分进行特定签名签名。
请按照以下步骤使用Lotus Forms Designer创建数字签名:
- 启动Lotus Forms Designer(如果尚未运行),然后在附件中打开SampleForm.xfdl表单。 该表单包含一个Sign Here按钮,如图14所示。
图14.个人信息窗口
- 单击“在此处签名”,选择“属性视图”,然后将按钮的类型设置为签名。
- 右键单击该按钮,然后从上下文菜单中选择“签名向导”。
签名向导启动。 在第一步中,询问您签名是在完整表单还是表单的一部分上签名。 见图15。
图15.签名向导的步骤1
- 如果选择签署完整的表格,则在步骤2中要求您选择一种签名。从此列表中选择一个选项:
- 通用RSA
- 加密API
- Clickwrap
- 认证的Clickwrap
- 单击完成以创建签名按钮。
如果您选择在第一步上对表单的各个部分进行签名,则会要求您定义签名过滤器是保留还是省略项目。 使用keep过滤器,您可以指定要签名的项目; 省略过滤器使您可以指定不想签名的项目。 省略过滤器是一种更好的做法,因为它提供了更高的安全性。 省略过滤器可以防止您意外排除应签名的项目以及在签名后添加项目。
要使用omit过滤器使用Lotus Forms Designer创建数字签名,请遵循以下步骤:
- 在“签名向导”的步骤1中选择“不签名的项目”选项。 点击下一步。
- 选择不由签名签名的页面。 参见图16。在此示例中,我们不想省略整个页面,因此单击Next。 见图16。
图16.使用省略过滤器
- 然后,您可以使用控件指定不签名的项目。 例如,要将所有项目从“已签名”移动到“未签名”,请单击>>>按钮。 要将单个项目从“已签名”移动到“未签名”,请从列表中选择项目,然后单击>。 您还可以使用图17所示的手形指针按钮从画布中选择项目。 完成此步骤后,单击“下一步”。
图17.使用指针按钮
- 和以前一样,选择一种签名。 在此解决方案中,我们正在使用基于PKI的数字签名,因此选择“通用RSA”并单击“完成”。
您已成功创建具有数字签名功能的表单。 接下来,我们在Lotus Forms查看器和Web表单服务器中测试对表单进行签名。
将设计的表单部署到Web表单服务器
在您的系统上安装Web表单服务器后,它可以自动提供示例Web表单Web应用程序。 默认访问URL是:http://您的服务器名称:8085 / Samples / FormListServlet。
您希望将上面设计的表单部署到示例应用程序,以便您可以从客户端浏览器中看到它,并使用查看器或Web表单服务器将其打开。
您可以将表单放入Web表单服务器上的以下目标目录中:
WebSphereProfileFolder\installedApps\ProfileName\WebformSampleApp.ear\Samples.war\SampleForms
此位置的示例可以是:
E:\IBM\WebSphere\profiles\wp_profile\installedApps\lwpcn\WebformSampleApp.ear\Samples.war\SampleForms
返回客户端,并使用示例提供的访问URL打开Internet Explorer或Firefox。 默认页面应如图18所示。
图18.默认页面
单击左侧的图标
单击右侧的图标
签署表格
在执行以下步骤之前,请确保已成功导入用户证书。
在表单查看器中签名表单
要在表单查看器中签名表单,请按照下列步骤操作:
- 启动Internet Explorer或Firefox,然后在Web表单服务器上输入列表表单servlet的URL。
- 导航到要签名的表单。
- 单击显示箭头的按钮以使用查看器打开表单。
- 输入数据,然后单击“添加签名”按钮以对表单签名。
- 在图19所示的Digital Signature Viewer窗口中,单击Sign。
图19. Digital Signature Viewer窗口
- 单击“签名”以使用导入的用户证书对表单进行签名。
- 单击确定以锁定所有字段。 您现在不能更改任何字段。
- 单击提交以将签名的表单提交到服务器。
您打开签名的表单,并稍后使用查看器和Web表单服务器在其他系统上验证签名。
在Webform Server中签名表单
在执行以下步骤之前,请确保已将用户证书成功导入到Internet Explorer证书存储中。 不支持Firefox在Webform Server中签名表单。
要在Webform Server中签名表单,请按照下列步骤操作:
- 启动Internet Explorer。
- 导航到要签名的表单。
- 单击显示圆圈的按钮,以使用Web表单服务器打开表单。 系统提示您安装WebformSignatures插件应用程序的ActiveX控件。 选择信任并安装。
- 输入数据,然后单击“添加签名”以对表单签名。
- 单击签名。 该表单是用导入的用户证书签名的,如图20所示。
图20.签署表单
- 单击确定以锁定所有字段。
- 单击提交以将签名的表单提交到服务器。
我们打开已签名的表单,并稍后使用查看器和Web表单服务器在其他系统上验证签名。
验证签署的表格
无论在何处签名,都可以在查看器和Web表单服务器中验证签名的表单。 此功能非常重要,因为它使用户可以灵活地选择用于签名和验证表单的产品。 用户不必担心交叉验证问题; 他们可以签名一次,到处验证。
在表单查看器中验证签名的表单
在执行以下步骤之前,请确保已成功导入根证书。
要在表单查看器中验证签名表单,请按照下列步骤操作:
- 启动Internet Explorer或Firefox,然后在Web表单服务器上输入列表表单servlet的URL。
- 导航到您与查看器签署的表单。
- 单击带有箭头的按钮以使用查看器打开表单。
- 单击签名按钮以验证签名。 图21显示了显示的窗口。
图21.有效的签名信息
- 导航到您使用Web表单服务器签名的表单。
- 单击带有箭头的按钮以使用查看器打开表单。
- 单击签名按钮。 您可以看到签名仍然有效。 单击确定。
验证Web表单服务器中的签名表单
在执行以下步骤之前,请确保已将根证书成功导入到运行Web表单服务器的系统上的Internet Explorer证书存储中。 不支持Firefox在Webform Server中验证签名表单。
要验证Webform Server中的签名表单,请按照下列步骤操作:
- 启动Internet Explorer。 输入Web表单服务器上的列表表单servlet的URL。
- 导航到您使用Web表单服务器签名的表单。
- 单击显示圆圈的按钮,以使用Web表单服务器打开表单。
- 单击签名按钮。 您可以看到签名是有效的。
- 导航到您与查看器签署的表单。
- 单击显示圆圈的按钮以使用Web表单浏览器打开表单。
- 单击签名按钮。 您可以看到签名仍然有效。
验证已被篡改的签名表格
让我们看看如果表单被篡改会发生什么。 在文本编辑器中打开签名的表单并进行修改,然后保存更新的版本。
验证在查看器中被篡改的签名表单
跟着这些步骤:
- 启动Internet Explorer或Firefox,然后在Web表单服务器上输入列表表单servlet的URL。
- 导航到被篡改的表单。
- 单击显示箭头的按钮以使用查看器打开表单。
- 将打开一个窗口,显示消息“发生错误”,以通知您数字签名无效。 单击关闭。
- 单击签名按钮。 您可以看到签名无效。
验证已被Web表单服务器篡改的签名表单
跟着这些步骤:
- 启动Internet Explorer,然后在Web表单服务器上输入列表表单servlet的URL。
- 导航到已被篡改的表单。
- 单击显示圆圈的按钮,以使用Web表单服务器打开表单。
- 打开一个窗口,显示消息“一个或多个数字签名无效”。 单击确定。
- 单击签名按钮。 您可以看到签名无效。
结论
在本文中,您学习了如何使用Lotus Forms产品和数字签名来确保表单安全。 本文介绍了一种业务场景,其中涉及在Lotus Forms中应用安全性机制。 它还向您展示了如何在不同平台上的查看器和Web表单服务器签名器中安装证书,以及在查看器和Web表单服务器验证器上安装根证书。 本文还演示了如何设计一个包含Lotus Forms Designer中签名功能的简单表单。 最后,它向您展示了如何在查看器和Web表单服务器上签名表单并验证它们(包括被篡改的表单)。
翻译自: https://www.ibm.com/developerworks/lotus/library/forms-signatures/index.html