IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Grid computing  >

在 Java 技术中使用 Globus 网格安全基础设施

用 Java CoG Kit 1.1 生成网格凭证

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Vladimir Silva (vsilva@us.ibm.com), OGSA 开发承包商

2004 年 2 月 01 日

网格安全基础设施(Grid Security Infrastructure,GSI)使得计算机网络上的安全认证和通信成为可能。Globus Toolkit 的一个组件为网格提供了几种有用的服务,包括相互认证和单点登录。不过,在 Windows 环境中用 Globus Toolkit 3.0(GT3)生成网格证书是很麻烦的事。它一般要求系统管理员或者用户在 Linux 系统上安装 GT3 以使用命令行脚本生成证书。然后必须将这些证书转移到 Windows 系统中。本文展示了一种由 Java CoG Kit 提供的容易的替代方法:用一个 Java 类创建并签名网格代理和证书。

GSI 证书基础


网格安全基础设施(GSI)基于像公钥加密、X.509 证书和安全套接字层(Secure Sockets Layer,SSL)这样的经过实践证明的标准。对这些标准进行了扩展以实现单点登录和委派。

GSI 认证的一个主要概念是证书。每一个网格服务和用户都是通过证书来识别的,这个证书包含进行认证和识别这个用户或者服务所使用的信息。

GSI 证书包含这样的信息:

  • 一个主题(subject),它标识证书所代表的人员或者对象。
  • 属于这个主题的一个公钥。
  • 签发这个证书的认证机构(Certificate Authority,CA)的标识。CA 证明公钥和标识都属于这个主题。
  • 指定 CA 的数字签名。

一个第三方认证机构用于证明证书中公钥与主题之间的关系。要想了解 Globus Toolkit 安全基础设施的概况,请参阅本文 参考资料中列出的“Overview of the Grid Security Infrastructure”。





回页首


用 Java 类生成证书


在 GT3 中的 Java CoG Kit 1.1 构建的 API 可以生成用户证书或者证书请求、对证书签名和创建代理。如果不希望使用在 Globus Web 网站提供的基于 UNIX 的简单 CA,那么可以用这个证书作为 Java CA 实现的基础。 清单 1 展示了如何开始创建 CertificateGenerator 类。





回页首


创建自签名的用户证书和私钥


设置 GSI 的第一步是创建一个签名的用户证书和一个私钥。在后面要用这两个参数生成一个 Globus 凭证,也称为 代理(proxy),它提供了对网格资源的访问。

在 UNIX 系统中,脚本 $GLOBUS_LOCATION/bin/grid-cert-request.sh 会首先创建一个 证书请求(certificate request),必须将它提交给 Globus 认证机构(Globus Certificate Authority)进行签名。

CA 证明您就是您所宣称的那个人。在这个示例类中,我们将使用 COM.claymoresystems.cert.CertRequest 类制作一个“自签名”的用户证书和用用户密码加密的私钥。 清单 2展示了这种技术。

一个对 CertRequest.generateKey("RSA", 512, Pwd, bw, true); 类的调用可以完成这个技巧。这个调用的参数的意义如下:

  • 用于生成 (RSA) 的密码。
  • 以位计的证书密钥的强度 (512)。
  • 用于加密私钥的密码。
  • 缓存的 writer 用于存储私钥。

注: CertificateRequest 类包含在随 GT3 Java CoG kit 发布的 puretls.jar 压缩文档中。

这个调用将返回一个 KeyPair 对象,可以在后面的指令中用这个对象生成自签名的证书: CertRequest.makeSelfSignedCert(kp,makeGridCertDN(m_OrgUnit, m_CommonName), 31536000)

用户证书和私钥都以 64 PEM 格式加密。更多信息请参阅 java.security.* 类和 writePEM 函数。





回页首


从用户证书创建凭证


有了用户证书和私钥,我们就可以创建代理了。注意包 org.globus.security.* 已被弃用(deprecated)并为 org.globus.gsi.* 所替代,后者使用了开放源代码网格安全服务(Grid Security Services,GSS)。更多细节请参阅本文 参考资料中的“Security Library Compatability”。

清单 3中的方法将创建一个与 GT3 或者 GT 2.2x 兼容的凭证。

如果有一个(从您的 UNIX 系统中下载的)PEM 加密的代理文件,那么可以用 清单 4 中的一个工具方法构建一个 GlobusCredential 对象。





回页首


创建证书请求


您可能希望将证书提交给另一个 CA 进行签名。 清单 5中的函数展示了创建它的方法。

我们的证书生成器是用 清单 6中的工具函数实现的,它可用于以下任务:

  • 以 PEM 格式编码证书字节。
  • 创建通用目的的 X.509 名或者 DN。




回页首


创建证书生成器主函数
清单 7 提供了展示如何创建 CertificateGenerator 主函数的代码。

清单 7 中的代码需要在您的 classpath 中有以下 JAR 文件(它们都随 GT3 发布):

  • cog-jglobus.jar
  • cryptix32.jar
  • cryptix-ans1.jar
  • jce-jdk13-117.jar
  • log4j-core.jar
  • puretls.jar

运行这个类会生成 清单 8中的输出。





回页首


结束语


本文给了您一个理解网格安全基础设施工作过程的一个出发点。可以修改这里展示的 java 代码以实现自己的安全或者证书认证服务。这些 API 基于像 PKI 和 X.509 这样经过验证的开放源代码标准。更多信息请参阅 Globus 站点的 GSI页。



参考资料



关于作者

Vladimir Silva 出生在厄瓜多尔的基多。他于 1994 年从陆军工学院(Polytechnic Institute of the Army)获得系统分析员(System's Analyst)学位。同年,他作为交换学生来到美国,在中田纳西州立大学(Middle Tennessee State University)学习计算机科学。毕业后,他加入了 IBM "Web-Ahead" 技术智囊团。他的兴趣包括网格计算、神经网络和人工智能。他还拥有包括 OCP、MCSD 和 MCP 在内的众多 IT 证书。可以通过 vsilva@us.ibm.com与 Vladimir 联系。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款