跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

这是您第一次登陆到 developerWorks,已经自动为您创建了您的概要文件。 选择您概要文件中可以公开的信息的信息(如姓名、国家/地区,以及公司),这些信息同时也会与您所发布的内容相关联。 您可以随时更新您的 IBM 账号。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

使用 WebSphere Application Server Community Edition V2.0 设置公钥基础设施

Author photo
Vamsavardhana Reddy Chillakuru是位于印度班加罗尔的 IBM India Software Labs 的一名顾问软件工程师。他在 Apache Geronimo 和 WebSphere Application Server Community Edition 的支持团队工作。您可以通过 vamsic007@in.ibm.com 与 Vamsi 联系。
(An IBM developerWorks Contributing Author)
Manu T. George (mageorge@in.ibm.com), 软件工程师, IBM
Manu T. George 是位于印度班加罗尔的 IBM India Software Labs 的一位软件工程师。他是 Apache OpenEJB 项目的参与者,也是 IBM WebSphere Application Server Community Edition Level 3 Support Team 的成员。他在 2001 年获得了 College of Engineering Trivandrum 的应用电子学士学位。

简介: 学习设置公钥基础设施的基础知识,特别是如何使用 IBM® WebSphere® Application Server Community Edition V2.0 设置公钥基础设施,它是一个免费使用的 Java™ EE 5 认证应用服务器。

发布日期: 2008 年 2 月 14 日
级别: 中级
访问情况 : 1719 次浏览
评论: 


引言

使用数字证书的客户机身份验证可以帮助克服凭据被破坏的问题,从而让您对应用程序的安全性更加有信心。一般而言,由于应用服务器通常不颁发数字证书,因此需要从外部证书颁发机构获取数字证书。在此方面,IBM WebSphere Application Server Community Edition V2.0 与其他应用服务器相比显示了其突出优势,因为该版本可以提供证书颁发机构 (CA) 功能。

IBM WebSphere Application Server Community Edition V2.0(以下称为 Community Edition) 是一个基于 Apache Geronimo 2.0.1 的免费使用的 Java Platform, Enterprise Edition 5.0 (Java EE 5) 认证应用服务器,可以提供 Certification Authority Portlet 和 CA Helper 应用程序,用于执行一般 CA 可以执行的一系列任务。本文介绍如何使用 Community Edition 方便地设置公钥基础设施 (PKI),以及如何从 Web 浏览器请求和下载数字证书。

为完成本教程中的任务,您需要有 WebSphere Application Server Community Edition V2.0(或更高版本)和一个支持 KEYGEN 表单标记的浏览器,以便使用 CA Helper 应用程序请求和下载数字证书。


数字证书

最常见的数字公钥证书(通常称为数字证书或简称为“证书”)的用途是验证发送消息的用户是他们要求发送的用户,并为接收者提供对回复进行编码的方法。此功能用于在 HTTPS 协议(基于 SSL)上对 Web 服务器和客户机进行身份验证。下面概括了数据证书通常的工作方式:

  1. 希望发送加密消息的实体将创建公钥-私钥对,并从证书颁发机构申请数字证书。
  2. CA 发送数字证书,其中包含申请者(通常称为主题)的公钥、主题的标识、CA 的标识、序列号、有效期和各种其他身份标识信息。
  3. CA 通过公开输出的方式提供自己的公钥。

两个广泛使用的公钥加密算法是 RSA(根据其发明者 Rivest、Shamir 和 Adleman 命名)和 DSA(数字签名算法)。使用最广泛的数字证书标准是 X.509。Community Edition 目前对于生成密钥对而言仅支持 RSA 算法(请参阅参考资料)。


管理控制台

管理控制台提供了一种便利的、用户友好的方式,用以管理 Community Edition 中的许多方面的内容。它使用多个 Portlet(如 Application Portlet、Keystore Portlet 和 Certification Authority Portlet)来执行密钥管理任务。管理控制台还提供其他 Portlet,如 Information portlet、JVM Portlet 和 DB Info Portlet,管理员可以通过它们监控和查看服务器的状态。

在启动 Community Edition 之后,您可以通过以下网址访问管理控制台(图 1):http://localhost:8080/console,缺省登录名为 system,密码为 manager


图 1. 管理控制台 - 欢迎面板
图 1. 管理控制台 - 欢迎面板
  • Keystore Portlet

    Keystore Portlet 支持使用 Java™ 密钥存储库文件管理 Community Edition 中的证书和私钥。通过在管理控制台中单击 Console Navigation 窗格中的 Keystores 链接启动 Keystore Portlet(图 2)。



    图 2. Keystore Portlet
    图 2. Keystore Portlet

    Community Edition 中的所有密钥存储库都在该 Portlet 中列出。Keystore File 列显示密钥存储库文件的名称;在图 2 中,有一个名为“geronimo-default”的密钥存储库,它是 Community Edition 附带的缺省密钥存储库。EditableAvailable 列显示该密钥存储库是被锁定还是未被锁定(分别对应于编辑和可用性)。单击锁定图标(显示在 Editable 列中),并提供在创建密钥存储库时使用的密码来取消锁定该密钥存储库。类似地,可以通过在相应列中单击未锁定图标(显示在 Available 列中),您可以针对编辑和可用性锁定一个密钥存储库。当取消锁定密钥存储库使之可以进行编辑时,Keystore File 列将提供一个可单击的链接,通过该链接可以查看或更换密钥存储库的内容。您还可以单击 New Keystore 来创建一个新的密钥存储库。

    密钥存储库文件存储在 <WASCE_HOME>/var/security/keystores 目录下(其中 <WASCE_HOME> 是指安装 Community Edition 的目录)。JKS 和 PKCS12 是密钥存储库的常见类型;Community Edition 目前仅支持 JKS 类型的密钥存储库。(请参阅参考资料,以了解有关使用 Keystore Portlet 的详细信息。)

  • Application Portlet

    在管理控制台中提供了多个 Application Portlet,它们列在 Console Navigation 窗格中的 Applications 标题下(图 1)。通过这些 Portlet,您可以部署新的 Web、EJB 和 Java EE 应用程序,以及应用程序客户端、Java EE 连接器等等。您还可以启动、停止和卸载现有的应用程序、连接器等等。

    Web App WAR Portlet(图 3)列出了 Community Edition 中部署的所有 WAR;您可以从此 Portlet 中启动、停止、重新启动和卸载这些应用程序。Portlet 还提供了一个 URL,它包含用于访问运行的 Web 应用程序的上下文根。在本文中,您将使用 Web App WAR Portlet 启动 CA Helper 应用程序。

    要启动 Web App WAR Portlet,请单击 Console Navigation 下方的 Web App WARs(图 1)。



    图 3. Web App WAR Portlet
    图 3. Web App WAR Portlet

  • Certification Authority Portlet

    Certification Authority (CA) Portlet(图 4)可让管理员为 CA 设置密钥对和自签名证书、锁定/取消锁定以及访问 CA 功能。CA Portlet 中的可用链接可能有所不同,具体取决于是否已启动 CA,以及在启动时,CA 是否锁定。

    要启动 CA Portlet,请在 Console Navigation 窗格中选择 Certificate Authority 链接(图 1)。图 4 显示了 CA 启动之前的 CA Portlet。



    图 4. Certification Authority Portlet - 欢迎面板
    图 4. Certification Authority Portlet - 欢迎面板

    在从此 Portlet 中选择 Setup Certification Authority 后,将创建 CA 的密钥对和自签名证书。您会看到,CA 的密钥对和自签名证书是使用此 Portlet 中的 Setup Certification Authority 功能创建的。在启动 CA 后,对 CA Portlet 的任何后续访问都将显示进一步选项(图 5):



    图 5. Certification Authority Portlet - 功能
    图 5. Certification Authority Portlet - 功能

    在启动 CA 后从 CA Portlet 可以使用的功能:

    • Lock CA:锁定 CA,禁止访问 CA 功能。在选择此选项时,将锁定 CA 并显示如图 6 所示的面板。
    • View CA Details:显示 CA 的详细信息
    • Publish CA Certificate:在 CA 的证书存储库中存储 CA 的证书。
    • Requests to be verified:显示从 Web 浏览器提交的需要进行验证的证书签名请求 (CSR) 列表。
    • Requests to be fulfilled:显示已经验证的 CSR 列表以及证书的未决问题。
    • Issue New Certificate:使用 CSR 文本直接从 Portlet 发布新证书。
    • View Issued Certificate:搜索以前发布的证书。


    图 6. Certification Authority Portlet - 已锁定
    图 6. Certification Authority Portlet - 已锁定

    在锁定 CA 时,将无法使用 CA 的功能。通过单击 Unlock CA 链接并提供在设置 CA 时使用的密码,可以取消锁定 CA。

稍后将详细讨论这些功能。


公钥基础设施

公钥基础设施 (PKI) 是将公钥与使用证书颁发机构 (CA) 的相应用户标识进行关联的一种方法。PKI 使用户能够不用提前联系进行相互身份验证,即可作为受信任的第三方接受 CA。CA 本身可以由另一 CA 认证,也可以使用自签名证书。当 CA 使用自签名证书时(称为根 CA),该 CA 通常公开发布其自签名证书详细信息,因此用户可以确定该 CA 的真实性。希望由 CA 认证的用户通常将其证书签名请求 (CSR) 发送到注册机构 (RA),然后该机构验证该请求的真实性,验证无误后,CA 将颁发数字证书。

每个颁发的证书都含有一个序列号,由一个 CA 颁发的证书不会有相同的序列号。如果有对证书的任何请求,CA 将使其颁发的证书可用。CA 还可以吊销其颁发的证书(通常根据证书接收方的请求),定期发布一个证书吊销列表 (CRL),而且还提供一个界面(通常是一个网站),用户通过该界面可以提交 CSR 和下载颁发的证书。

缺省情况下,Community Edition 证书颁发机构使用一个自签名证书。如果您需要使用其他 CA 认证的 Community Edition CA,则可以从 Community Edition CA 的密钥对(使用 Keystore Portlet)生成可以发送到外部 CA 进行处理的 CSR。在处理之后,就可以使用外部 CA 颁发的证书,而不使用 Community Edition CA 的自签名证书。Community Edition CA 在基于磁盘的文件上使用一个证书存储库和一个证书请求存储库。

以下各部分介绍如何使用 CA Portlet 和 CA Helper 应用程序来设置 PKI。


CA Helper 应用程序

Community Edition 中的 CA Helper 应用程序(图 7)提供了一个界面,可供您使用 Web 浏览器来请求数字证书、下载和安装由 CA 颁发的证书,并将 CA 证书安装到您的浏览器中。

在完成 CA 的设置后,可以通过单击与 org.apache.geronimo.configs/ca-helper-tomcat/2.0.1/car 对应的 Start 链接启动 CA Helper,该链接位于 Web App WAR Portlet 中的 Commands 下方(图 3)。您可以在以下位置访问该应用程序:http://localhost:8080/CAHelper。


图 7. CA Helper 应用程序 - 欢迎面板
xxx

CA Helper 的欢迎面板显示三个选项:

  • Request Certificate:可让您使用 Web 浏览器提交 CSR,它为您生成一个密钥对。通过此方式提交的 CSR 存储在 CA 的 CertificateRequestStore 中,并随时显示在 CA Portlet 中,以方便处理该请求。
  • Download your Certificate:让您根据先前提交的 CSR 来下载和安装 CA 颁发的证书。
  • Download CA Certificate:让您查看 CA 的详细信息,并将 CA 的证书安装到 Web 浏览器。

下面将详细介绍这些选项。


证书颁发机构

让我们看一下 CA 所需的初始设置的详细信息,以及如何通过每个主要关联的活动颁发数字证书:

  1. 设置 CA 密钥对和自签名证书

    要生成密钥对,请执行下列操作:

    1. 启动 Community Edition 并访问管理控制台。
    2. 通过选择 Console Navigation 下方的 Certificate Authority 链接导航到 CA(图 1)。
    3. 选择 Setup Certification Authority(图 4)。

      图 8. CA 设置 - 步骤 1
      图 8. CA 设置 - 步骤 1

      CA 设置面板(图 8)中的重要字段包括:

      • Common Name (CN):CA 的常用名。
      • Division/Business/Unit(OU)、Company/Organization(O)、City/Locality(L) 和 State/Province(ST):反映 CA 标识的字段。
      • Country Code(2 char) (C):反映 CA 的国家/地区的双字符 ISO 3166 国家/地区代码。
      • Alias:用于在密钥存储库中标识此密钥对的名称。
      • Key Algorithm:用于生成密钥对的私钥算法。(Community Edition 目前仅支持 RSA)。
      • Key Size:RSA 密钥的模块的长度,以位为单位。密钥越长,密钥对越安全。管理控制台支持的密钥长度为 512、1024 和 2048。
      • Password/Confirm Password:用于保护 CA 的私钥和密钥存储库的密码。(在取消锁定 CA 时需要此密码。)
      • Certificate Serial Number:CA 的自签名证书的序列号。以后由此 CA 颁发的任何证书的序列号将从下一号码开始。
      • Valid From Date:CA 证书有效期的开始日期。
      • Valid To Date:CA 证书有效期的结束日期。
      • Signature Algorithm:签署自签名证书所使用的算法。(Community Edition 支持 MD2withRSA、MD5withRSA 和 SHA1withRSA。)

      为这些字段输入或选择下列值:

      • Common Name (CN): CE Dev CA
      • Division/Business Unit (OU):您所在的部门
      • Company/Organization (O):您所在的公司
      • City/Locality (L):您所在的城市
      • State/Province (ST):您所在的省/市/自治区
      • Country Code (2 char) (C):您所在国家/地区代码
      • Alias: cedevca
      • Key Algorithm: RSA
      • Key Size: 1024
      • Password: cedevca
      • Confirm Password: cedevca
      • Certificate Serial Number: 0
      • Valid From Date(mm/dd/yyyy): 10/01/2007
      • Valid To Date(mm/dd/yyyy): 10/01/2017
      • Signature Algorithm: MD5withRSA

      单击 Review CA Details



      图 9. CA 设置 - 步骤 2
      图 9. CA 设置 - 步骤 2

    4. 在 Review and Confirm CA Details 对话框(图 9)中,确认您输入的值,然后选择 Setup Certification Authority 完成 CA 设置。Community Edition 将创建一个名为“ca-keystore”的新密钥存储库,并生成一个新密钥对和一个自签名证书。密钥存储库和密钥对使用密码“cedevca”进行保护。现在,Keystore Portlet 将在密钥存储库列表中包括 ca-keystore。如果设置成功,将会显示 CA 详细信息屏幕和“CA Setup is successful!”消息(图 10)。



      图 10. CA 设置成功
      图 10. CA 设置成功

      图 10 还显示了 CA 的自签名证书的详细信息:

      • Highest Serial Number:反映由此 CA 颁发的任何证书的最高位实际序列号。由于本例中对 CA 的自签名证书使用序列号“0”,因此此字段显示的值为 0。
      • Finger prints:显示 CA 证书的 SHA1 和 MD5 指纹。
      • Certificate Text:显示 Base64 编码格式的证书。此数据显示在清单 1 中,还在下载资料的 ca-cert.txt 文件中提供。


      清单 1. Community Edition 的 CA 证书
                                      
      -----BEGIN CERTIFICATE-----
      MIICQjCCAa2gAwIBAgIBADALBgkqhkiG9w0BAQQwaTESMBAGA1UEAxMJQ0UgRGV2IENBMRcwFQYD
      VQQLEw5Tb2Z0d2FyZSBHcm91cDEMMAoGA1UEChMDSUJNMRIwEAYDVQQHEwlCYW5nYWxvcmUxCzAJ
      BgNVBAgTAktBMQswCQYDVQQGEwJJTjAeFw0wNzA5MzAxODMwMDBaFw0xNzA5MzAxODMwMDBaMGkx
      EjAQBgNVBAMTCUNFIERldiBDQTEXMBUGA1UECxMOU29mdHdhcmUgR3JvdXAxDDAKBgNVBAoTA0lC
      TTESMBAGA1UEBxMJQmFuZ2Fsb3JlMQswCQYDVQQIEwJLQTELMAkGA1UEBhMCSU4wgZ8wDQYJKoZI
      hvcNAQEBBQADgY0AMIGJAoGBAINePu4Rep4LBSlfdIQWBWtTY3N29N9H5rHDp9uurHjJI/k2EWvQ
      FDJRaWnH4zyJvULouWti24wCfrApQK8WUbhUut4u1OQL07bnEZiMHDmNs3hVqHWXSzVpNxlHx1rX
      VEyEaw/k4gnj0ku4Oam+GfsjuO75GzArfkN4vQ3HD55XAgMBAAEwCwYJKoZIhvcNAQEEA4GBAB2/
      B5L922wdKsawXpc8QBey9HIysc84p6FhPAbH1+729KwJMfAOnOGYz68XVsSfNV9aAps1VwCvaFOh
      6ERI7OVok79obzyDBeBYZ5h/cZzu5v4PWPHdnXiUGw4XCmvk29+rYSKHEW2cFlA99KKdK1eXhb5K
      zWBTzDA4ZGTmbSFZ
      -----END CERTIFICATE-----
      

  2. 设置 CA 证书

    如果您决定获取由另一个外部 CA 认证的 Community Edition CA,而不使用自签名证书,则需要执行下列步骤:

    1. 为 Community Edition CA 生成 CSR

      您还记得,Community Edition 的 CA 密钥对存储在名为“ca-keystore”的密钥存储库中。使用 Keystore Portlet 取消锁定密钥存储库以便进行编辑/可用,并为密钥项“cedevca”生成 CSR,cedevca 是在设置 CA 时使用的别名(请参见图 8)。复制 CSR 文本并将其发送到要从中获得 Community Edition CA 证书的外部 CA。

    2. 导入外部 CA 的证书作为受信任的证书

      在导入外部 CA 颁发的证书之前,需要先导入外部 CA 颁发的证书,您需要将外部 CA 本身的证书作为受信任的证书导入 ca-keystore。要导入证书,请从 Keystore Portlet 访问 ca-keystore,并使用 Import Trusted Certificate 功能导入证书。这将在以后导入 CA 的回复后启用签名验证。

    3. 导入外部 CA 的回复

      在外部 CA 颁发证书之后,它将发送一个回复,该回复通常是一个 PKCS7 编码的证书。要将该证书用于 Community Edition CA,请将其导入 ca-keystore,方法是从 Keystore Portlet 访问 ca-keystore,并使用 Import CA Reply 功能将其导入,同时查看 cedevca 密钥项的详细信息。

    4. 发布 Community Edition 的 CA 证书

      在将新证书导入到 ca-keystore 之后,您需要将其发布到 CA 使用的证书存储库,以便 CA Helper 应用程序可以使用此新证书。要发布 CA 的证书,请访问 CA Portlet 并选择 Publish CA Certificate(图 5)。

  3. 处理使用 CA Helper 应用程序提交的 CSR

    前面已经提到,在 PKI 中收到 CSR 之后,RA 将验证 CSR,以确定该请求是否符合必要的标准,然后确定是否颁发证书。对于每个 PKI,标准可能各不相同,但在批准 CSR 之后,CA 将通过颁发证书来完成请求。

    在 CA Portlet 中,列出要验证的所有请求的页中显示了使用 CA Helper 应用程序提交的 CSR。通过该页,RA 可以查看每个 CSR 的详细信息。在批准后,CSR 将自动作为要完成的请求在 CA Portlet 中列出。CA 然后可以访问 CSR 以颁发证书。(在此示例中,CA 和 RA 实质上是同一个实体。)稍后将讨论如何使用该页完成此任务。

  4. 使用 CSR 文本颁发证书

    您可以使用 CA Portlet 中的 Issue New Certificate 功能向从 CA Helper 应用程序外部发送到 CA 的 CSR 颁发证书。例如,清单 2 显示了为缺省密钥存储库“geronimo-default”中别名为“geronimo”的缺省密钥项生成的 CSR。(此数据还在下载资料的 ca-cert.txt 文件中提供。)



    清单 2. 缺省的“geronimo”密钥对 CSR 文本
                            
    -----BEGIN CERTIFICATE REQUEST-----
    MIIBvDCCASUCAQAwfjEQMA4GA1UEBhMHVW5rbm93bjEQMA4GA1UECBMHVW5rbm93bjEQMA
    4GA1UEBxMHVW5rbm93bjEaMBgGA1UEChMRQXBhY2hlIEZvdW5kYXRpb24xEDAOBgNVBAsT
    B1Vua25vd24xGDAWBgNVBAMTD0FwYWNoZSBHZXJvbmltbzCBnzANBgkqhkiG9w0BAQEFAA
    OBjQAwgYkCgYEA2CeZHvvrqO2sGqj6ULttIRnrT1ggYNMDl4qRYtRsdxXvNpBlbDBtHH7B
    97g9QZ1rJJcloSgQo3kOc+ErBsUP16fydvBpUegMtjc3aW60uSfL/r6tnBGoCsuVY/lf/x
    mfGL9ze0d/YzQ8x1eyfh/MbMIZCQpVyy11A7miaIsCKwMCAwEAATANBgkqhkiG9w0BAQQF
    AAOBgQAiO5SFK/sMlflSUq92610G2NGqG/YngCJ+LCwzbWRvniMRDCtVqC5fw25Ar1ufmr
    NpZNhhS0MlcHg8fjgtQFj4kR+QwM6mm57u/VHmDtvXd1M36jno5DQO811b9PmwTisCmgA2
    ZVKP/NIIN7d/mA2r1mQcE07nqFRxQhxrOMHojQ==
    -----END CERTIFICATE REQUEST-----
    

    要为此 CSR 发送新证书,请按下列步骤操作:

    1. 通过在 Console Navigation 下选择 Certificate Authority 链接导航到 CA Portlet(图 1)。
    2. 如果 Unlock CA 链接可视(参见图 6),请单击该链接,使用密码 cedevca 取消锁定 CA,该密码是以前设置 CA 的密码。
    3. 单击 Issue New Certificate。这将显示图 11 中所示的面板。

      图 11. 颁发新证书 - 步骤 1
      图 11. 颁发新证书 - 步骤 1

    4. 在文本区输入 CSR 文本并选择 Process CSR



      图 12. 颁发新证书 - 步骤 2
      图 12. 颁发新证书 - 步骤 2

    5. 为图 12 中所示的字段输入或选择值:
      • Certificate Serial No:基于当前运行的序列号自动生成的值。(请回忆图 10 中 CA Details 面板中显示的 Highest Serial Number)。
      • Valid From Date:证书有效期的开始日期。
      • Valid To Date:证书有效期的结束日期。
      • Signature Algorithm:签署证书所使用的签名算法;在本例中为 MD5withRSA
    6. 选择 Review Client Cert Details 可以显示要颁发的证书的数据。根据需要,单击浏览器的Back 按钮编辑任何字段。
    7. 选择 Issue Certificate。这将显示类似于图 13 中的面板。

      图 13. 已成功颁发证书
      图 13. 已成功颁发证书

    现在已颁发一个证书响应了 CSR。文本区显示了您颁发的证书的 Base64 编码的文本。此数据显示在清单 3 中,还在下载资料的 geronimo-cert.txt 文件中提供。此文本作为 CA 对 CSR 的回复发送到请求者(对于本例而言,此文本稍后将在 Keystore Portlet 中使用)。



    清单 3. Community Edition CA 对 CSR 的缺省“geronimo”密钥对的回复
                            
    -----BEGIN CERTIFICATE-----
    MIICQjCCAa2gAwIBAgIBADALBgkqhkiG9w0BAQQwaTESMBAGA1UEAxMJQ0UgRGV2IENBMRcwFQYD
    VQQLEw5Tb2Z0d2FyZSBHcm91cDEMMAoGA1UEChMDSUJNMRIwEAYDVQQHEwlCYW5nYWxvcmUxCzAJ
    BgNVBAgTAktBMQswCQYDVQQGEwJJTjAeFw0wNzA5MzAxODMwMDBaFw0xNzA5MzAxODMwMDBaMGkx
    EjAQBgNVBAMTCUNFIERldiBDQTEXMBUGA1UECxMOU29mdHdhcmUgR3JvdXAxDDAKBgNVBAoTA0lC
    TTESMBAGA1UEBxMJQmFuZ2Fsb3JlMQswCQYDVQQIEwJLQTELMAkGA1UEBhMCSU4wgZ8wDQYJKoZI
    hvcNAQEBBQADgY0AMIGJAoGBAINePu4Rep4LBSlfdIQWBWtTY3N29N9H5rHDp9uurHjJI/k2EWvQ
    FDJRaWnH4zyJvULouWti24wCfrApQK8WUbhUut4u1OQL07bnEZiMHDmNs3hVqHWXSzVpNxlHx1rX
    VEyEaw/k4gnj0ku4Oam+GfsjuO75GzArfkN4vQ3HD55XAgMBAAEwCwYJKoZIhvcNAQEEA4GBAB2/
    B5L922wdKsawXpc8QBey9HIysc84p6FhPAbH1+729KwJMfAOnOGYz68XVsSfNV9aAps1VwCvaFOh
    6ERI7OVok79obzyDBeBYZ5h/cZzu5v4PWPHdnXiUGw4XCmvk29+rYSKHEW2cFlA99KKdK1eXhb5K
    zWBTzDA4ZGTmbSFZ
    -----END CERTIFICATE-----
    

  5. 查看颁发的证书

    查看颁发的证书功能可以让证书序列号搜索 CA 颁发的证书。要使用此功能,只需在 CA Portlet 中选择 View Issued Certificate,然后输入证书序列号并单击 View Certificate。如果序列号有效,将显示证书详细信息。

  6. 锁定和取消锁定 CA

    锁定 CA 功能可以锁定 ca-keystore,从而防止访问目前讨论的 CA 功能。在 CA Portlet 中单击 Lock CAUnlock CA(图 6)来执行相应操作。要完成取消锁定功能,您需要提供设置 CA 时使用的密码,并单击 Unlock Certification Authority。在取消锁定 ca-keystore 之后,便可以访问 CA 功能。


客户端数字证书

用于提交 CSR 的方法取决于具体用户;有权访问 CA 功能的 Community Edition 管理员将使用上述的 CA Portlet,而需要从 Community Edition CA 请求证书的用户一般通过 Web 浏览器使用 CA Helper 应用程序。在本部分中,您将了解如何使用 CA Helper 应用程序从支持 KEYGEN 标记的 Web 浏览器提交 CSR。本示例中使用了 Mozilla Firefox。

要使用 CA Helper 应用程序提交 CSR,请执行下列操作:

  1. 将 CA 证书安装到 Web 浏览器

    要使用任意 CA 颁发的证书,第一步是将该 CA 指定为受信任的第三方。可以通过在 Web 浏览器(或处理证书的任何其他软件)中安装该 CA 的证书来完成此任务。要在浏览器中安装 CA 的证书,请执行下列操作:

    1. 打开浏览器窗口,并访问 CA Helper 应用程序。
    2. 选择 Download CA's Certificate(请参见图 7)以显示 CA 证书详细信息页。
    3. 选择 Download CA's Certificate。浏览器将打开一个对话框,可让您将 CA 的证书添加为受信任的证书颁发机构(图 14)。大多数浏览器会提供一个选项来查看证书的详细信息。

      图 14. Firefox - 下载证书
      图 14. Firefox - 下载证书

    4. 单击 View 检查证书。CA 的通用名将显示为“CE Dev CA”。
    5. 启用选项 Trust the CA to identify web sites 并单击 OK。CA 的证书现在已经作为受信任的证书导入到 Web 浏览器。
    6. 要检查是否已经添加了 CA,请在 Firefox 中选择 Tools => Options。选择 Advanced 选项卡,并单击 View Certificates。这将显示 Certificate Manager 对话框(图 15)。
    7. 选择 Authorities 选项卡,并向下滚动到 IBM 以查看列出的 Community Edition CA。选择 View 查看证书详细信息。

      图 15. Firefox - 证书管理器
      图 15. Firefox - 证书管理器

  2. 使用 Web 浏览器请求证书

    要请求证书,您需要使用加密软件生成一个密钥对。支持 KEYGEN 表单标记的 Web 浏览器不需要其他软件就可以生成密钥对。当 Web 浏览器提交含有 KEYGEN 标记的表单时,浏览器将生成一个密钥对,在本地存储私钥,创建一个含有公钥的 SignedPublicKeyAndChallenge (SPKAC),并将其与其他表单数据一起提交。CA 可以从此 SPKAC 提取公钥,并颁发含有单独接收的标识信息的证书。

    要从 Web 浏览器提交证书请求,请按下列步骤操作:

    1. 访问 CA Helper 应用程序,位置是:http://localhost:8080/CAHelper。
    2. 选择 Request Certificate。将显示类似于图 16 的面板。

      图 16. 请求证书 - 步骤 1
      图 16. 请求证书 - 步骤 1

    3. 为这些代表请求者标识的字段输入值:
      • Common Name (CN): Web Client
      • Division/Business Unit (OU): Software Group
      • Company/Organization (O): IBM
      • City/Locality (L): Bangalore
      • State/Province (ST): KA
      • Country Code (2 char) (C): IN
      • Challenge Phrase: secret
      • Confirm Challenge: secret
    4. 单击 Review Name Details。这将显示类似于图 17 的面板,因此可以在提交请求之前查看输入的名称详细信息。

      图 17. 请求证书 - 步骤 2
      图 17. 请求证书 - 步骤 2

    5. 对于 Key Size,请选择 1024 (Medium Grade)(如果其他值更合适,请选择其他值),并单击 Submit Certificate Request

    这时就完成了证书请求提交过程。CSR Confirmation 页显示一个 CSR Id,如图 18 所示。



    图 18. CSR 确认
    图 18. CSR 确认

    在 CA 完成 CSR 之后,您需要使用同一 CSR Id 下载该证书。管理密码一定要保密,有时候需要使用它撤销证书。前面已经提到,CA 会定期发布列有被吊销证书序列号的 CRL。

  3. 批准 CSR

    CA Portlet 中的“Certificate Requests awaiting verification”面板列出了通过 CA Helper 应用程序提交的 CSR。要批准或拒绝任何 CSR,请按下列步骤操作:

    1. 访问 CA Portlet 并取消锁定 CA(如果需要)。
    2. 选择 Requests to be verified。这将显示其中列有等待验证的所有 CSR 的面板(图 19)。

      图 19. 要验证的 CSR
      图 19. 要验证的 CSR

    3. 单击需要批准或拒绝的 CSR 的 CSR Id。这将显示带有 CSR 的详细信息的面板(图 20)。

      图 20. 确认证书请求
      图 20. 确认证书请求

    4. 单击 Approve CSRReject CSR。如果 CSR 得到批准,CSR Id 将显示在“Certificate Requests awaiting fulfillment”中。将由 CA 从证书请求存储库中删除被拒绝的 CSR。
  4. 完成批准的 CSR

    CA Portlet 中的 Certificate Requests awaiting fulfillment 面板可让您通过颁发证书来完成 CSR。批准的 CSR 将由 CSR Id 在此面板中列出。要完成 CSR,请执行下列操作:

    1. 访问 CA Portlet 并取消选中 CA(如果需要)。
    2. 单击 Requests to be fulfilled。这将显示 Certificate Requests awaiting fulfillment 面板(图 21),其中显示被批准的 CSR Id 并等待完成。

      图 21. 等待完成的 CSR
      图 21. 等待完成的 CSR

    3. 单击要完成的 CSR Id。

      图 22. 证书详细信息
      图 22. 证书详细信息

    4. 在 Certificate Requestor Details 面板上(图 22),输入或者选择下列值:
      • Valid From Date: 10/01/2007
      • Valid To Date: 10/01/2008
      • Signature Algorithm: MD5withRSA
      Certificate Serial No. 字段会自动填写。颁发的客户端证书的有效期通常是一年,不过,CA 对有效期可能有自己的规定。
    5. 在颁发证书之前单击 Review Client Cert Details 显示证书详细信息。
    6. 单击 Issue Certificate 完成该过程。图 23 的面板中显示了颁发的证书的详细信息。

      图 23. 已成功颁发证书
      图 23. 已成功颁发证书

    现在,您已通过颁发证书完成了 CSR。请求者现在可以下载证书并使用 CSR 确认页上提供的 CSR Id 将其安装到 Web 浏览器。

  5. 将证书安装到 Web 浏览器

    在完成 CSR 之后,CA 通常向请求者发送颁发的证书,或者通知请求者从 CA 的网站下载证书。在此情况下,CA Helper 应用服务器用做 CA 的网站,用户可以从该服务器下载个人证书。请注意,您只能将颁发的证书安装到用来提交 CSR 的 Web 浏览器上。

    要下载并安装个人证书,请执行下列操作:

    1. 使用请求证书的 Web 浏览器在 http://localhost:8080/CAHelper 上打开 CA Helper 应用程序。
    2. 选择 Download your Certificate(图 7)以显示图 24 所示的面板。

      图 24. 下载证书
      图 24. 下载证书

    3. 输入您收到的 CSR ID,并单击 Download Certificate。该证书已安装到 Web 浏览器。该浏览器通常会显示一条消息,指示已安装证书。Firefox 显示的消息类似于“Your personal certificate has been installed”。
    4. 如果为客户端验证启用了 HTTPS 连接器并在 Community Edition 进行了相应配置,下一页应显示“Certificate is downloaded successfully”消息和一个验证证书详细信息的链接。
  6. 验证客户端证书是否已安装到浏览器

    您可以使用 Web 浏览器提供的证书管理功能检查下载的证书详细信息。(例如,Firefox 在 Options => Advanced 下提供了证书管理功能。)要验证证书是否已安装到浏览器,请按照步骤 1 中描述的步骤操作。证书项将列在 Your Certificates 选项卡中。


在 Community Edition 中使用客户端证书

要使用证书进行客户端验证,您需要创建一个配置了 clientAuth 的 HTTPS 连接器。执行该操作的常规步骤是:

  1. 准备密钥存储库

    密钥存储库是存储服务器证书和密钥对的文件。Community Edition 附带了一个名为“geronimo-default”的密钥存储库,其中包含一个缺省密钥对和一个别名为“geronimo”的自签名证书。所有 Community Edition 安装都共享同一个密钥对,因此,缺省密钥对中的私钥实际上根本不是私有的。提供的缺省密钥对只用于支持缺省 HTTPS 连接器的启动。在安装 Community Edition 之后,应删除缺省密钥对并生成新的密钥对。然后可以为新创建的密钥对生成一个 CSR,并使用它和 Community Edition CA 的 Issue New Certificate 功能颁发证书。由于使用了来自 Community Edition 附带的缺省密钥对的 CSR(清单 2)颁发证书(清单 3),因此对此演练可以使用同一密钥对。要将证书导入到 geronimo-default 密钥对,请执行下列操作:

    1. 从管理控制台访问 Keystore Portlet。
    2. 使用密码“secret”取消锁定 geronimo-default 密钥存储库,以便进行编辑(如有必要)。
    3. 通过单击 Keystore Portlet 中的链接打开 geronimo-default 密钥存储库,以便进行编辑。
    4. 使用 Add Trust Certificate 链接导入 Community Edition 的 CA 证书(清单 1)作为受信任的证书。
    5. 通过单击相应的 View 链接查看 geronimo 私钥项。
    6. 单击 Import CA Reply
    7. 将清单 3 中的内容粘贴到 PKCS7 Certificate Reply 字段并单击 Save 按钮。

    现在证书已经导入到 geronimo-default 密钥存储库。请注意“CE Dev CA”显示为证书颁发者。Community Edition 将使用此证书向使用 HTTPS 访问服务器的任何用户验证自身,通常称为 HTTPS 服务器身份验证。

  2. 准备信任存储库

    信任存储库是存储 CA 的证书的文件。您可以使用同一文件作为密钥存储库和信任存储库,但对于仅包含受信任的证书项的信任存储库,最好使用不同的文件。要准备信任存储库,请按下列步骤操作:

    1. 创建一个新密钥存储库。
    2. 导入 CA 的证书作为受信任的证书。

    如果需要将多个 CA 指定为受信任的 CA,请为每个 CA 的证书重复导入步骤。在将信任存储库与为 clientAuth 配置的 HTTPS 连接器一起使用时,连接器将认可信任存储库中任何 CA 颁发的证书。在本示例中,geronimo-default 密钥存储库也用于信任存储库。您还记得,已经导入了 Community Edition 的 CA 证书作为受信任的证书。

  3. 创建带有 clientAuth 的 HTTPS 连接器

    在准备好密钥存储库和信任存储库之后,您可以在服务器运行时使用 Web Server Portlet 创建为 clientAuth 配置的 HTTPS 连接器;如果服务器停止,则可以将 HTTPS 连接器 gbean 添加到位于 <WASCE_HOME>/var/config 下的 config.xml 文件。确保在更改 config.xml 文件时停止服务器。(在服务器运行时对 config.xml 进行的任何更改在重新启动前都不会生效,并且会在服务器停止时丢失。)在本示例中,将通过向 config.xml 添加 gbean 来添加一个新 HTTPS 连接器。

    1. 在 config.xml 中的名为“org.apache.geronimo.configs/tomcat6/2.0.1/car”的模块标记中添加如清单 4 中所示的 XML 代码片段。(该清单中 gbean 名称属性的值分成了多行只是为了便于显示,在添加到 config.xml 时应在一行中。)下载资料提供的 https-connector-gbean.xml 文件中也有相同的 XML 代码。

      清单 4. HTTPS 连接器 gbean
                                      
      <gbean name="org.apache.geronimo.configs/tomcat6/2.0.1/car?
      ServiceModule=org.apache.geronimo.configs/tomcat6/2.0.1/car,
      j2eeType=GBean,name=TomcatWebSSLClientAuthConnector"
      gbeanInfo="org.apache.geronimo.tomcat.connector.Https11ConnectorGBean">
        <attribute name="name">HTTPS</attribute>
        <attribute name="host">0.0.0.0</attribute>
        <attribute name="port">443</attribute>
        <attribute name="maxHttpHeaderSize">8192</attribute>
        <attribute name="maxThreads">150</attribute>
        <attribute name="minSpareThreads">25</attribute>
        <attribute name="maxSpareThreads">75</attribute>
        <attribute name="enableLookups">false</attribute>
        <attribute name="acceptCount">100</attribute>
        <attribute name="disableUploadTimeout">false</attribute>
        <attribute name="clientAuth">true</attribute>
        <attribute name="algorithm">Default</attribute>
        <attribute name="sslProtocol">TLS</attribute>
        <attribute name="keystoreFile">var/security/keystores/geronimo-default</attribute>
        <attribute name="keystorePass">secret</attribute>
        <attribute name="truststoreFile">var/security/keystores/geronimo-default</attribute>
        <attribute name="truststorePass">secret</attribute>
        <reference name="TomcatContainer">
          <pattern>
            <name>TomcatWebContainer</name>
          </pattern>
        </reference>
        <reference name="ServerInfo">
          <pattern>
            <name>ServerInfo</name>
          </pattern>
        </reference>
      </gbean>

      在服务器启动后,名为 TomcatWebSSLClientAuthConnector 的新 HTTPS 连接器将添加到名为 TomcatWebContainer 的 Web 容器的端口 443 上。这里需要介绍的重要属性有:
      • clientAuth 设置为 True。
      • keystoreFilekeystorePass 对应于密钥存储库。
      • truststoreFiletruststorePass 对应于信任存储库。
      • keystoreFiletruststoreFile 值是相对于 <WASCE_HOME> 的文件位置。
      请注意,对密钥存储库和信任存储库使用了相同的文件。仅在 clientAuth 设置为 True 时才需要与信任存储库相关的属性。
  4. 在启动服务器之后,请访问 CA Helper 应用程序中的以下页来验证证书页:https://localhost:443/CAHelper/verifyCertificate.jsp。
  5. 在提示选择用于身份验证的证书时请选择所需的证书。该应用程序将加载和显示选择用来进行身份验证的证书的详细信息。

有关详细信息,请参阅参考资料


结束语

在本文中,您使用 IBM WebSphere Application Server Community Edition V2.0 设置了一个公钥基础设施。学习了如何颁发证书和使用证书进行服务器身份验证,还配置了 Community Edition 并使用证书进行客户端身份验证。还从头到尾地了解了如何完成该过程:从用户提交 CSR 到接收证书,并使用该证书对 Community Edition 服务器进行身份验证。



下载

描述名字大小下载方法
Code samplepublickey_samples.zip7 KBHTTP

关于下载方法的信息


参考资料

学习

获得产品和技术

讨论

作者简介

Author photo developerWorks 投稿作者

Vamsavardhana Reddy Chillakuru是位于印度班加罗尔的 IBM India Software Labs 的一名顾问软件工程师。他在 Apache Geronimo 和 WebSphere Application Server Community Edition 的支持团队工作。您可以通过 vamsic007@in.ibm.com 与 Vamsi 联系。

Manu T. George 是位于印度班加罗尔的 IBM India Software Labs 的一位软件工程师。他是 Apache OpenEJB 项目的参与者,也是 IBM WebSphere Application Server Community Edition Level 3 Support Team 的成员。他在 2001 年获得了 College of Engineering Trivandrum 的应用电子学士学位。

关于报告滥用的帮助

报告滥用

谢谢! 此内容已经标识给管理员注意。


关于报告滥用的帮助

报告滥用

报告滥用提交失败。 请稍后重试。


developerWorks:登录


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 使用条款

 


当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

请选择您的昵称:

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

(长度在 3 至 31 个字符之间)


单击提交则表示您同意developerWorks 的条款和条件。 使用条款.

 


为本文评分

评论

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=289419
ArticleTitle=使用 WebSphere Application Server Community Edition V2.0 设置公钥基础设施
publish-date=02142008
author1-email=vamsic007@in.ibm.com
author1-email-cc=
author2-email=mageorge@in.ibm.com
author2-email-cc=ruterbo@us.ibm.com