安全套接层(SSL)在缓存代理中的应用

安全套接层(SSL)是一种系统,它在信息通过互联网发送前自动对其进行加密,并在接收端使用前将其解密。 该系统在敏感信息(如信用卡号码)通过互联网传输时对其进行保护。

缓存代理使用SSL来保护代理服务器并提供安全的远程管理功能,具体说明如下文所述。 SSL 还可用于保护与后端服务器(例如内容服务器或应用程序服务器)的连接,以及保护代理服务器与其客户端之间的通信。

对于正向代理 ,缓存代理支持SSL隧道功能,该功能可绕过SSL验证,将已加密的数据原样转发而不作任何改动。

SSL握手

当一台机器向另一台机器发送安全连接请求时,SSL保护即被启动。 例如,当浏览器向代理服务器发送请求时。 请求语法 https:// 而非 http:// 指示浏览器通过端口443发送请求,该端口是服务器监听安全连接请求的位置(常规请求则通过端口80)。 为在浏览器与服务器之间建立安全会话,两台机器会执行称为SSL握手的交换过程,以商定加密规范并选择用于加密和解密信息的密钥。 密钥会自动生成,并在会话到期时失效。

SSL 3.0 的典型场景如下:
  1. 客户你好

    客户端通过发送描述其加密能力的Client Hello消息 与缓存代理建立SSL会话。

  2. 服务器问候

    服务器向客户端发送其证书,并选择用于数据加密的密码套件。

  3. 客户完成

    客户端发送密钥信息,该信息用于为加密数据生成对称加密密钥。 该关键材料被称为预主密钥,它使用服务器的公钥进行加密(该公钥从服务器证书中获取;参见( 密钥和证书管理 ))。 服务器和客户端均可从预主密钥中推导出读写对称加密密钥。

  4. 服务器完成

    服务器发送最终确认以及整个握手协议的消息认证码(MAC)。

  5. 客户端验证

    客户端发送消息以验证服务器的结束消息。

  6. 安全数据流

    如果客户端验证了服务器的结束消息,则加密数据流开始传输。

缓存代理用作安全连接的端点,可减轻内容服务器或应用程序服务器的负载。 当缓存代理维护安全连接时,它会执行加密、解密和密钥生成操作,这些都是高度依赖CPU的操作。 缓存代理还允许您配置SSL会话超时,以最大限度地利用每个密钥。

SSL的局限性

以下限制适用于 WebSphere® Application Server 存代理中的 SSL:
  • 缓存代理本身不能用作证书颁发机构(参见密钥和证书管理 )。
  • 某些浏览器可能无法支持缓存代理中使用的全部加密技术。
  • SUSE Linux® 仅支持 SSL 隧道(而非 SSL;参见 SSL 隧道 )。

SSL性能调优

在高流量 HTTPS 期间,缓存代理服务器可能导致CPU使用率升高。 调整环境变量( GSK_V3_SIDCACHE_SIZE )和代理指令( SSLV3Timeout )的设置,有助于代理服务器处理负载并降低CPU使用率。

SSL会话标识符用于识别可复用的SSL会话,其中包含浏览器和服务器双方使用的加密或解密密钥。该机制旨在避免新连接时进行不必要的SSL握手,从而节省服务器CPU时间。 IBM 的 Global Security Kit (GSKit) 库为缓存代理服务器提供支持,包含SSL会话ID功能及SSL会话ID缓存。 默认情况下,SSL会话ID缓存包含512个条目。 当条目数量达到上限时,最旧的会话条目将被移除,新条目被添加到缓存中。

使用环境变量 GSK_V3_SIDCACHE_SIZE 来更改SSL会话ID缓存的默认大小。 该变量的有效取值范围为 1 至 4096。 增加缓存大小会延长查找已缓存SSL会话所需的时间。 然而,与建立SSL连接所需的开销相比,增加的查找时间微不足道。 增加缓存大小有助于代理服务器处理更多并发SSL会话,并在代理服务器承受高 HTTPS 负载时降低CPU使用率。

缓存代理还提供了一个可调的指令 SSLV3Timeout。 (参见 SSLV3Timeout -- 指定 SSLV3 会话过期前的等待时间。) 该指令的默认值为1000秒。 本指令定义了SSL会话在会话缓存中的存活时间。 如果没有传入的SSL连接使用现有SSL会话,且该会话的生存周期超过设定值,则该会话将从会话缓存中移除。 建议将 SSLV3Timeout 值设置为典型安全客户端会话的长度。 如果超时时间设置过短,可能会降低代理性能,因为完成单次安全会话需要多次SSL握手过程。 然而,如果该值设置过长,也会损害安全会话的安全性。

为代理服务器配置SSL

当缓存代理作为代理服务器使用时,客户端与代理服务器之间的请求、内容服务器与代理服务器之间的请求,或两者之间的请求,均可通过安全套接层实现安全传输。 要启用SSL,您必须先创建密钥数据库,并创建或获取证书。

应用服务器发行版包含一个名为 IBMGlobal Security Kit (GSKit) 的实用程序,用于管理密钥和证书。 有关更多信息,请参阅密钥和证书管理

在建立好您的密钥数据库和证书后,要为代理服务器配置SSL,请在配置和管理表单中选择代理配置 –> SSL设置。 在 SSL 设置表单中,勾选“启用 SSL ”复选框,并在相应字段中输入密钥库数据库文件和密码文件的路径名称。 可选地,您可以为SSL会话指定超时值。 (如果您的服务器花费过多时间重新创建密钥,建议您在“SSL V3 会话超时 ”字段中增加超时值。)

您还可以指定服务器是否尝试缓存安全请求的内容。 尽管缓存能提升性能,但敏感内容的缓存可能带来安全风险。 您可以通过创建过滤器来控制从安全请求中缓存的文件类型,这些过滤器适用于使用 的URL。 https:// (要指定缓存过滤器,请在 表单 配置与管理 中选择 缓存配置 –> 缓存过滤器。) 代理服务器的SSL缓存设置将影响所有终止于该代理服务器的连接,无论这些连接是与客户端计算机还是内容服务器计算机建立的。

SSL对多个域名的支持

此前, 台缓存代理服务器无法同时作为多个域名的代理服务器,这些域名各自拥有独立的SSL证书。 此限制不再适用。 缓存代理作为多个域名的代理服务器,现可根据请求发送的目标域名,自动确定应分发的正确证书。 此新功能通过在配置文件 ibmproxy.conf 中使用SSLCertificate指令进行配置。 参见 SSLCertificate -- 为证书指定密钥标签以获取详细信息。

在保护掩码中使用IP地址范围

此新功能利用保护设置中的MASK子指令,支持在保护掩码中使用IP地址范围。 管理员现在可以更轻松地配置缓存代理 ,使其对来自指定IP地址的请求进行身份验证,而对其他来源的请求不予验证,从而避免创建可能严重影响代理性能的大型保护规则文件。 例如,指定以下规则以验证来自 9.38.(100–192)/202/203.(0–255) 的所有请求,并放行其他所有请求。
MASK  ALL@"9.38.[100-192,202,203].[0-255]", @"9.38.[0-99],193-201,204-255].
[0-255]",@"[0-8,20-255].[0-37,39-255].[0-255].[0-255]"
在此示例中,请注意方括号([])用于包围范围;引号(" ")用于包围范围IP模板,且范围IP模板中允许出现空格。 请注意,MASK 子指令中不得包含换行符。 有关详细信息,请参阅指令参考章节中的“Mask -- 指定允许执行 HTTP 请求的用户名、组和地址 ”。
注意: 通配符值不能与范围同时使用;例如, 9.*.[32,33].154 是不允许的。

禁用SSL启用时的监听线程

此新功能允许缓存代理管理员在启用SSL(通常在端口443上)时,禁用标准 HTTP 请求(通常在端口80或8080上)的监听线程。 在执行安全交易的服务器上运行 HTTP 监听器线程,可能导致该站点存在安全隐患。 禁用这些监听线程的功能可增强服务器安全性。 使用SSLOnly指令,在启用SSL时禁用标准 HTTP 请求的监听线程。

配置SSL后,必须完全停止服务器并重新启动才能使更改生效,因为SSL设置不会通过简单的重启操作进行更新。

客户机端证书认证

此功能允许缓存代理通过SSL会话检索客户端公钥基础设施(PKI)证书。 该证书随后用于验证客户端身份。 要求客户端出示PKI证书可通过确保客户端身份验证来增强服务器安全性。 使用 SSLCertificate 指令来指定代理服务器是否检索客户端 PKI 证书。

SSL隧道

缓存代理配置为正向代理时,它会使用SSL隧道技术来支持客户端与内容服务器之间的安全连接。 在SSL隧道传输中,加密数据会未经修改地通过代理服务器传输。 由于代理服务器不会解密数据,因此SSL隧道模式下不支持需要代理服务器读取请求或文档头部的功能。 此外,隧道传输的请求不会被缓存。

此规则仅适用于正向代理配置。

图1 展示了如何通过SSL隧道建立连接。
图 1。 SSL隧道
SSL隧道
SSL隧道传输过程如下:
  1. 客户端发起隧道请求: CONNECT server-host-name:port HTTP/1.1 (或 HTTP/1.0 )。 端口号是可选的,通常为443。 如果浏览器配置了正向代理,则客户端浏览器会为每次 HTTPS 请求自动向代理服务器发送CONNECT请求。
  2. 代理服务器在其80端口接受连接,接收请求后,会连接到目标服务器上客户端所请求的端口。
  3. 代理服务器回复客户端,表示连接已建立。
  4. 代理服务器在两个方向上中继SSL握手消息:从客户端到目标服务器,以及从目标服务器到客户端。
  5. 安全握手完成后,代理服务器发送并接收加密数据,这些数据将在客户端或目标服务器上进行解密。
  6. 若客户端或目标服务器要求关闭任一端口,代理服务器将关闭两个连接(443端口和80端口),并恢复其正常活动。

配置SSL隧道

在前向代理设置中,仅支持SSL隧道传输。 要启用SSL隧道,请在配置和管理表单中选择代理配置 –> 代理设置。 选中 SSL 隧道选项框。

CONNECT 方法 (默认处于禁用状态) 也必须启用才能建立 SSL 隧道连接。 要在表单 配置 中启用此功能,请选择 服务器配置 –> 请求处理 并使用表单 HTTP 方法

为增强SSL隧道安全性,启用CONNECT指令提供了三种选项(OutgoingPorts, OutgoingIPs, IncomingIPs)。 必须为至少一个参数 OutgoingPorts指定值,否则 CONNECT 方法将无法启用。
  • OutgoingPorts (通过限制远程服务器端口的访问来实现SSL隧道功能)。 格式如下:
    Enable CONNECT OutgoingPorts [all | [port1|port1-port2|port1-*],...] 
    要允许客户端仅通过远程服务器的443端口进行SSL隧道连接,请设置以下指令。 (通常远程服务器上的443端口用于 HTTPS 请求。)
    Enable CONNECT OutgoingPorts 443 
    SSLTunneling on
    要允许客户端通过SSL隧道连接到远程服务器的任意端口,请设置以下指令:
    Enable CONNECT OutgoingPorts all 
    SSLTunneling on 
    要允许客户端连接到远程服务器上的80、8080-8088端口以及9000及更高端口以实现SSL隧道,请设置以下指令:
    Enable CONNECT OutgoingPorts 80,8080-8088,9000-* 
    SSLTunneling on

    端口和端口范围在列表中以逗号分隔,中间不留空格。

    重要提示:对于正向代理配置,至少需指定 443all 并启用 OutgoingPorts 选项,以实现常规SSL隧道功能。

  • OutgoingIPs (通过远程服务器的IP地址限制SSL隧道访问权限)。 格式如下:
    Enable CONNECT OutgoingIPs [[!]IP_pattern,...] 
    例如,要允许客户端连接到远程服务器上与IP/主机名匹配的任意 *.ibm.com 端口(且必须不匹配 192.168.*.* ),请设置以下指令:
    Enable CONNECT OutgoingPorts all OutgoingIPs *.ibm.com,!192.168.*.*
    SSLTunneling on  
    注意: IP_patterns 在列表中以逗号分隔,中间不带空格。
  • IncomingIPs (通过客户端IP地址限制SSL隧道访问权限)。 格式如下:
    Enable CONNECT IncomingIPs [[!]IP_Pattern,...]
    例如,要允许来自 IP 地址的客户端通过 192.168.*.* SSL 隧道连接到远程服务器的任意端口,请设置以下指令:
    Enable CONNECT OutgoingPorts all IncomingIPs 192.168.*.* 
    SSLTunneling on
    注:
    1. 假设 192.168.*.* 是内部局域网的子网掩码。 前面的选项仅允许内部用户使用连接方法和SSL隧道功能。
    2. IP_patterns 在列表中以逗号分隔,且不包含任何空格。

配置安全远程管理

通过使用安全套接层(SSL)提供的安全功能和密码认证,可实现对缓存代理的远程管理。 这大大降低了未经授权的人员访问代理服务器的可能性。

在远程管理服务器时,若需应用SSL,请使用 https:// 请求(而非 http:// 请求)来打开配置和管理表单。 例如:
https://
                  your.server.name
               /
                  yourFrontPage.html
               
            

密钥与证书管理

在配置SSL之前,您必须先建立密钥数据库,并获取或创建证书。 证书用于验证服务器身份。 使用 IBM 密钥管理工具(有时称为 iKeyman )来设置您的证书文件。 此实用程序是 Java 开发工具包 (JDK) 的组成部分。 iKeyman 还包含一个基于Java的图形界面,用于打开证书文件。

以下基本步骤用于设置您的SSL密钥和证书:
  1. 请确保您已安装 IBM JDK 版本 1.6 或更高版本。
  2. 使用密钥管理器创建用于安全网络通信的密钥,并从证书颁发机构获取证书。 在等待从证书颁发机构获取证书期间,您可能决定创建自签名证书。
  3. 创建一个密钥数据库并指定密钥数据库密码。
注意: 每当载缓存代理时,密钥和密钥存储文件都会被卸载。 为避免需要向证书颁发机构申请新证书,请在卸载代理软件前将这两个文件的备份副本保存到另一个目录中。

在除 Linux 外的所有操作系统上,若证书已过期,缓存代理将无法正常启动,并显示错误信息提示密钥数据库已过期。 在 Linux 上,代理似乎启动了,但进程很快消失,且未生成任何错误消息。

为防止此问题在 Red Hat Enterprise Linux 3.0 系统上发生,请确保 GCC 软件包版本达到以下级别或更高:
  • libstdc++-3.2.3-52
  • libgcc-3.2.3-52

证书颁发机构

您的公钥必须关联来自证书颁发机构(CA)的数字签名证书,该CA需被指定为服务器上的受信任根CA。 您可以通过向证书颁发机构(CA)提交证书申请来购买签名证书。

缓存代理支持以下外部CA:
  • VeriSign
  • Thawte
默认情况下,以下机构被指定为受信任的CA:
  • 威瑞信一级个人用户证书颁发机构 - 身份未验证
  • 威瑞信第2类个人用户CA - 身份未验证
  • 威瑞信第3类个人用户CA - 身份未验证
  • VeriSign 3级国际服务器CA
  • VeriSign 第二类 OnSite 个人CA
  • VeriSign 第一类公共小学CA
  • VeriSign 第二类公共小学CA
  • VeriSign 第三类公立小学CA
  • VeriSign 第一类公立小学CA - G2
  • VeriSign 第二类公共小学CA - G2
  • RSA安全服务器CA(来自 VeriSign )
  • thawte personal basic ca
  • thawte personal freemail ca
  • thawte personal premium ca
  • thawte premium server ca
  • thawte server ca

使用 IBM 密钥管理器实用程序

本节提供 IBM 密钥管理器实用程序( iKeyman )的快速参考指南。 使用密钥管理器创建您的SSL密钥数据库文件、公私钥对以及证书请求。 收到CA签名的证书后,请使用密钥管理器将该证书放置在您创建原始证书请求的密钥数据库中。

有关 IBM 密钥管理器(Key Manager)和 IBM 密钥管理器( Global Security Kit (GSKit) )的更详细文档随GSKit软件一同提供。

设置您的系统以运行密钥管理器

在启动 iKeyman 图形用户界面之前,请执行以下操作:
  1. 安装 IBM JDK 版本 1.6 或更高版本。 您可以使用随负载均衡器产品提供的Java软件包。
  2. 将 JAVA_HOME 设置为 Java 目录的位置。 例如:
    • 对于 Windows 平台:
      set JAVA_HOME=C:\Program Files\IBM\edge\lb\java
    • 适用于 AIX®、 HP-UX、 Linux 及 Solaris 平台:
       export JAVA_HOME=/opt/ibm/edge/lb/java/
  3. 注册 IBM JCE、 IBMCMS 以及IBMJCEFIPS服务提供商。

    更新 JAVA_HOME/jre/lib/security/java.security 文件,在以下示例所示位置添加 IBMCMS 和 IBM 两个JCE提供程序:

    security.provider.1=com.ibm.jsse2.IBMJSSEProvider2
    security.provider.2=com.ibm.security.cmskeystore.CMSProvider
    security.provider.3=com.ibm.crypto.provider.IBMJCE
    security.provider.4=com.ibm.security.jgss.IBMJGSSProvider
    security.provider.5=com.ibm.security.cert.IBMCertPath

  4. 要启用FIPS操作,请更新 JAVA_HOME/jre/lib/security/java.security 文件,同时添加IBMJCEFIPS。 请确保将 IBMJCEFIPS 提供程序的优先级设置得高于 IBMJCE。 例如:
    security.provider.1=com.ibm.jsse2.IBMJSSEProvider2
    security.provider.2=com.ibm.security.cmskeystore.CMSProvider
    security.provider.3=com.ibm.crypto.fips.provider.IBMJCEFIPS
    security.provider.4=com.ibm.crypto.provider.IBMJCE
  5. 可选: 若使用加密硬件,请注册 IBMPKCS11Impl 服务提供商。 例如:
    security.provider.1=com.ibm.jsse2.IBMJSSEProvider2
    security.provider.2=com.ibm.security.cmskeystore.CMSProvider
    security.provider.3=com.ibm.crypto.fips.provider.IBMJCEFIPS
    security.provider.4=com.ibm.crypto.provider.IBMJCE
    security.provider.5=com.ibm.crypto.pkcs11Impl.provider.IBMPKCS11Impl
    security.provider.6=com.ibm.security.jgss.IBMJGSSProvider
    security.provider.7=com.ibm.security.cert.IBMCertPath

启动密钥管理器

通过运行JDK中的 iKeyman 工具启动密钥管理器图形用户界面。 例如,使用以下命令:

/opt/ibm/edge/lb/java/jre/bin/ikeyman

创建新的密钥对和证书请求

密钥数据库存储密钥对和证书请求。 要创建公钥-私钥对和证书请求,请按以下步骤操作:
  1. 若尚未创建密钥数据库,请按照创建新密钥数据库、密码及存储文件中的说明操作。
  2. 在密钥管理工具中,从主菜单依次点击密钥数据库 文件 打开
  3. “打开 ”对话框中,输入您的密钥数据库名称(或单击 key.kdb 以使用默认名称)。 单击确定
  4. 密码提示对话框中,输入您的密码,然后单击 “确定”
  5. 从主菜单中,点击创建 新建证书请求
  6. “新建密钥和证书请求 ”对话框中,请指定以下内容:
    • 密钥标签: 输入用于在数据库中识别密钥和证书的名称(标签),例如 my self-signed certificatewww.companyA.com
    • 密钥大小: 密钥的尺寸,例如, 1024。 (为充分利用128位加密技术,建议使用1024位密钥长度。)
    • 组织名称: 与该密钥关联的组织名称,例如。 Company A
    • 组织单位 (可选)
    • 地区 (可选)
    • 州/省 (可选)
    • 邮政编码 (可选)
    • 国家: 您的国家代码。 您必须至少输入2个字符,例如: US
    • 证书请求文件名: 请求文件的名称。 可选地,可以使用默认名称。
  7. 单击确定。 显示一条确认消息:
    A new certificate request has been successfully created 
    in the file 
                            keyfile_database_name
                         .
  8. 单击确定。 请注意,您输入的标签名称将显示在 "个人证书请求 "标题下方。
  9. “信息 ”对话框中,单击 “确定”。 请注意将文件发送至证书颁发机构。
  10. 除非您创建了自签名证书 ,否则请将证书请求发送至证书颁发机构(CA):
    • 请保持密钥管理器持续运行。
    • 启动网页浏览器,并输入您要获取证书的证书颁发机构(CA)的 URL。
    • 请按照证书颁发机构提供的说明发送您的证书请求。
    证书申请的处理周期为两至三周。 在等待证书颁发机构处理证书申请期间,您可以自行充当证书颁发机构,使用 iKeyman 生成自签名服务器证书,从而在客户端与您的缓存代理服务器之间启用 SSL 会话。

创建自签名证书

使用密钥管理实用程序创建自签名服务器证书,以便在等待证书签发期间,在客户端与代理服务器之间启用SSL会话。 您也可以在测试环境中使用自签名证书。

请按照以下步骤创建自签名证书:
  1. 若尚未创建密钥数据库,请按照创建新密钥数据库、密码及暂存文件中的说明操作。
  2. 在密钥管理工具中,从主菜单依次点击密钥数据库 文件 打开
  3. “打开” 对话框中,输入您的密钥数据库名称(或接受默认名称 key.kdb )。 单击确定
  4. 密码提示对话框中,输入您的密码,然后单击 “确定”
  5. “密钥数据库 ”内容框中,选择 “个人证书 ”,然后单击 “创建新自签名证书 ”。
  6. “创建新自签名证书 ”窗口中,请指定以下内容:
    • 密钥标签: 用于在数据库中标识密钥和证书的名称(标签),例如: my self-signed certificate
    • 密钥大小: 密钥的尺寸,例如, 512
    • 通用名称: 服务器的完整主机名,例如: www.myserver.com
    • 组织名称: 与该密钥关联的组织名称,例如 Company A
    • 组织单位 (可选)
    • 地区 (可选)
    • 州/省 (可选)
    • 邮政编码 (可选)
    • 国家: 您的国家代码。 您必须至少指定两个字符,例如 US。
    • 有效期: 证书有效的时段。
  7. 单击确定
  8. 通过将密钥文件和暂存文件添加到配置设置中,将密钥数据库注册到服务器( 见创建新的密钥数据库、密码和暂存文件)。

导出密钥

使用此过程将密钥导出到另一个密钥数据库:
  1. 启动密钥管理实用程序。
  2. 从主菜单中,点击 关键数据库文件 –> 打开
  3. “打开” 对话框中,输入您的密钥数据库名称(或接受默认名称 key.kdb )。 单击确定
  4. 密码提示对话框中,输入您的密码,然后单击 “确定”
  5. “密钥数据库 ”内容框中,选择 “个人证书 ”,然后单击标签上的 “导出/导入 ”按钮。
  6. 导出/导入密钥窗口中:
    • 选择导出密钥
    • 选择目标数据库类型(例如) PKCS12
    • 输入文件名或单击 “浏览 ”进行选择。
    • 输入正确的位置。
  7. 单击确定
  8. 密码提示对话框中,输入正确的密码,再次输入密码进行确认,然后单击 “确定 ”将所选密钥导出到另一个密钥数据库。

导入密钥

要从另一个密钥数据库导入密钥:
  1. 启动密钥管理实用程序。
  2. 从主菜单中选择 密钥数据库文件 ”→“打开”。
  3. “打开” 对话框中,输入您的密钥数据库名称(或接受默认名称 key.kdb )。 单击确定
  4. 密码提示对话框中,输入正确的密码,然后单击 “确定”
  5. “密钥数据库 ”内容框中,选择 “个人证书 ”,然后单击标签上的 “导出/导入 ”按钮。
  6. 导出/导入密钥窗口中:
    • 选择导入密钥
    • 选择关键数据库文件类型(例如) PKCS12
    • 输入文件名或单击 “浏览 ”进行选择。
    • 选择正确的位置。
  7. 单击确定
  8. 密码提示对话框中,输入正确的密码,然后单击 “确定”
  9. “从键标签中选择 ”列表中,选择正确的标签名称,然后单击 “确定 ”。

列示认证中心

要显示密钥数据库中受信任的证书颁发机构 (CA) 列表:
  1. 启动密钥管理实用程序。
  2. 从主菜单中,点击 关键数据库文件 –> 打开
  3. “打开” 对话框中,输入您的密钥数据库名称(或接受默认名称 key.kdb )。 单击确定
  4. 密码提示对话框中,输入正确的密码,然后单击 “确定”
  5. “密钥数据库 ”内容框中,选择 “签名者证书 ”。
  6. 单击 “签名者证书”、 “个人证书或“证书请求 ”以在 “密钥信息 ”窗口中查看CA列表。

请按照此流程接收证书,该证书将由默认指定为可信证书颁发机构(CA)的机构通过电子邮件发送给您( 见证书颁发机构列表)。 如果签发您CA签名证书的CA未被列入密钥数据库的受信任CA列表,则必须先存储该CA的证书,并将该CA标记为受信任CA。 然后,您就可以将CA签名的证书导入数据库。 您无法从非受信任的CA( 见存储CA证书)获取CA签名的证书。

要将CA签名的证书导入密钥数据库:
  1. 启动密钥管理实用程序。
  2. 从主菜单中选择 密钥数据库文件 ”→“打开”。
  3. “打开” 对话框中,输入您的密钥数据库名称(或接受默认名称 key.kdb )。 单击确定
  4. 密码提示对话框中,输入您的密码,然后单击 “确定”
  5. 确保数据库类型列表中的文件名正确无误。
  6. “密钥数据库 ”窗口中,选择 “个人证书 ”,然后单击 “接收 ”。
  7. “从文件接收证书 ”对话框中,请在 “证书文件名 ”文本框中输入有效的Base64编码文件名。 单击确定
  8. 要关闭密钥管理器实用程序,请从主菜单中点击密钥数据库文件 –> 退出

在密钥数据库中显示默认密钥

显示缺省密钥条目如下所示:
  1. 启动密钥管理实用程序。
  2. 从主菜单中,点击 关键数据库文件 –> 打开
  3. “打开” 对话框中,输入您的密钥数据库名称(或接受默认名称 key.kdb )。 单击确定
  4. 密码提示对话框中,输入您的密码,然后单击 “确定”
  5. “密钥数据库 ”内容框中,选择 “个人证书 ”,然后选择CA证书标签名称。
  6. “关键信息 ”窗口中,单击 “查看/编辑” 以显示证书默认密钥信息。

创建新的密钥数据库、密码和存储文件

密钥数据库是一个文件,服务器使用它来存储一个或多个密钥对和证书。 您可以将一个密钥数据库用于所有的密钥对和证书,也可以创建多个数据库。 密钥管理实用程序用于创建新的密钥数据库,并指定其密码和存储文件。

创建密钥数据库和存储文件:
  1. 启动密钥管理实用程序。
  2. 从主菜单中选择 密钥数据库文件 ”→“新建”。
  3. “新建” 对话框中,请确保已选中文件类型“ CMS 密钥数据库 ”。 输入您的主数据库名称和文件位置,或接受默认值。 key.kdb 单击确定
  4. 密码提示对话框中,输入并确认此数据库的密码。 单击确定
  5. 勾选此复选框以隐藏密码文件。 系统提示时,请输入并确认密码以进行验证。 显示以下消息: DB-Type: CMS key database file keyfile_database_name
    注意: 若未将密码文件隐藏,服务器虽能启动但不会监听443端口。

创建新密钥数据库时指定的密码用于保护私钥。 私钥是唯一能够对文件进行签名或解密用公钥加密的消息的密钥。

指定密码时,请使用下列准则:
  • 密码必须由美国英语字符集组成。
  • 密码长度必须至少为6个字符,且包含至少两个非连续数字。 请确保密码不包含可公开获取的个人信息,例如您的姓名、直系亲属的姓名、首字母缩写或出生日期。
  • 存储密码。

定期更改关键数据库密码是一种良好的实践。 然而,若您为密码设置了有效期,请务必记录何时需要更改密码。 如果密码在您更改之前过期,系统会将一条消息写入错误日志,服务器仍会启动,但无法建立安全的网络连接。

请按照以下步骤更改密钥数据库密码:
  1. 从主菜单中,点击 关键数据库文件 –> 打开
  2. “打开” 对话框中,输入您的密钥数据库名称或接受默认值。 key.kdb 单击确定
  3. “密码提示 ”对话框中,输入您设置的密码,然后单击 “确定 ”。
  4. 从主菜单中,点击 主数据库文件 –> 更改密码
  5. “更改密码 ”对话框中,输入并确认新密码。 单击确定

对于代理与LDAP服务器之间的SSL连接,请将密钥数据库密码放入 pac_keyring.pwd 文件中。 (该 pac_keyring.pwd 文件并非由 iKeyman 生成的暂存文件。)

接收 CA 证书

使用此流程可接收由证书颁发机构(CA)通过电子邮件发送的证书,该CA在证书颁发机构列表中默认被标记为受信任CA。 如果签发您CA签名证书的CA未被列入密钥数据库的受信任CA列表,则必须先存储该CA的证书,并将该CA标记为受信任CA。 然后,可以该 CA 签名证书接收到数据库中。

您不能接收来自非可信 CA 的 CA 签名证书。 参见存储CA证书

要将CA签名的证书导入密钥数据库:

  1. 启动密钥管理实用程序。
  2. 从主菜单中选择 “密钥数据库文件 ”> “打开”
  3. “打开” 对话框中,输入您的密钥数据库名称(或接受默认名称 key.kdb )。 单击确定
  4. 密码提示对话框中,输入您的密码,然后单击 “确定”
  5. 确保数据库类型列表中的文件名正确无误。
  6. “密钥数据库 ”窗口中,选择 “个人证书 ”,然后单击 “接收 ”。
  7. “从文件接收证书 ”对话框中,请在 “证书文件名 ”文本框中输入有效的Base64编码文件名。 单击确定
  8. 要关闭密钥管理器实用程序,请从主菜单中点击密钥数据库文件 > 退出

存储CA证书

仅接受由受信任的CA签名的证书来建立安全连接。 要将证书颁发机构(CA)添加到受信任机构列表中,必须获取并将其证书存储为受信任证书。

请按照以下步骤存储来自新CA的证书,在将其接收至数据库之前:
  1. 启动密钥管理实用程序。
  2. 从主菜单中,点击 “密钥数据库文件 ”> “打开”
  3. “打开” 对话框中,输入您的密钥数据库名称(或接受默认名称 key.kdb )。 单击确定
  4. 密码提示对话框中,输入您的密码,然后单击 “确定”
  5. “密钥数据库 ”内容框中,选择 “签名者证书 ”,然后单击 “添加 ”。
  6. “从文件添加CA证书 ”对话框中,选择基64编码的ASCII数据证书文件名,或使用 “浏览 ”选项。 单击确定
  7. “标签 ”对话框中,输入标签名称,然后单击 “确定 ”。
  8. 使用复选框将证书标记为受信任(默认)。
    注意: 证书创建后,请通过“查看/编辑”按钮查看复选框。 该复选框在面板上列出,但在添加证书时未显示。

支持的加密算法规范

用于SSL 2版和3版的加密算法及哈希函数如下表所示。

密钥对生成:RSA 512–1024 位私钥长度

表 1. SSL 版本 2. 美国版和出口版适用于SSL版本2。
美国版 导出版本
RC4 美国 RC4 导出
RC2 美国 RC2 导出
DES 56位 不适用
三重DES美国 不适用
RC4 导出 不适用
RC2 导出 不适用
表 2. SSL 版本 3. 美国版和出口版适用于SSL 3.0版本。
美国版 导出版本
三重DES SHA 美国 DES SHA 出口
DES SHA 出口 RC2 MD5 导出
RC2 MD5 导出 RC4 MD5 导出
RC4 SHA 美国 空值 SHA
RC4 MD5 美国 NULL MD5
RC4 MD5 导出 null NULL
RC4 SHA 56位 不适用
DES CBC SHA 不适用
空值 SHA 不适用
NULL MD5 不适用
null NULL 不适用

这些SSL规范也可通过直接编辑代理配置文件进行配置。 详情请参阅配置文件指令中的参考章节。

128位加密技术用于缓存代理

目前仅提供128位加密版本的缓存代理。 56位版本已不再提供。 若需更新旧版本,可直接将Caching Proxy 安装至当前已安装的128位或56位版本上。 若您此前使用的是56位(出口版)浏览器,则必须升级至128位浏览器,方可利用代理服务器中的128位加密功能。

从56位版本的Caching Proxy 升级至128位版本后,若证书加密所用的密钥长度设置为1024位,则无需进行任何配置更改。 然而,若密钥长度设置为512位,为充分利用代理的128位加密功能,必须创建密钥长度为1024位的新证书。 使用 IBM 密钥管理器实用程序( iKeyman )创建新密钥。
  1. 启动密钥管理器。 例如,使用以下命令:
    /opt/ibm/edge/lb/java/jre/bin/ikeyman
  2. 从主菜单中,点击 关键数据库文件 –> 打开
  3. 在“打开 ”对话框中,输入您的密钥数据库名称(或点击 key.kdb 使用默认名称),然后点击“确定”
  4. 如果出现密码提示对话框,请输入密码并单击 “确定 ”。
  5. 从主菜单中,点击创建 新建证书请求
  6. 在新密钥和证书请求窗口中,请指定以下内容:
    • 密钥标签 :输入用于在数据库中识别该密钥和证书的名称。
    • 密钥大小 :选择 1024
    • 组织名称 :输入要与该密钥关联的组织名称。
    • 国家 :请输入您的国家代码。 您必须至少指定两个字符,例如: US
    • 证书请求文件名 :输入请求文件的名称,或选择使用默认名称。
  7. 单击确定

此版本的产品不支持在SUSE Linux 上进行加密。