C.7. 将客户端证书用于 SGD Gateway

可以使用客户端证书来增强 SGD Gateway 的安全性,客户端证书会将访问限定在具有有效证书的用户内。

客户端证书是指安装在客户端设备上的浏览器中的 SSL 证书。有关如何安装客户端证书的详细信息,请参见所用浏览器的联机文档。

如果需要为新的客户端证书生成证书签名请求 (certificate signing request, CSR),请参见第 C.7.2 节 “如何为客户端证书生成 CSR”

以下过程使用 keytool 应用程序。有关如何使用 keytool 应用程序的详细信息,请参见 JDK Tools and Utilities(JDK 工具和实用程序)文档。

C.7.1. 如何将 SGD Gateway 配置为使用客户端证书

  1. 在 SGD Gateway 主机上,以超级用户 (root) 身份登录。

  2. 停止 SGD Gateway。

    # /opt/SUNWsgdg/bin/gateway stop
  3. 将 SGD Gateway 配置为使用客户端证书进行 HTTPS 客户端连接。

    <needClientAuth> 条目添加到 /opt/SUNWsgdg/etc/gateway.xml 文件中,如下所示:

    <service id="http-ssl-service" class="SSL">
        <needClientAuth>true</needClientAuth>
            <!-- Decrypts HTTPS traffic -->
            <subService id="ssl-splitter">
                <binding>*</binding>
            </subService>
    
  4. (可选)将客户端证书导入到 SGD Gateway 客户端密钥库中。

    注意

    如果客户端证书是由受信任的证书颁发机构 (Certificate Authority, CA) 签名的,则无需执行此步骤。

    按如下方式使用 keytool 命令:

    # /opt/SUNWsgdg/java/default/bin/keytool -importcert \
    -alias mycert -keystore /opt/SUNWsgdg/proxy/etc/keystore.client \
    -file mycert.crt -storepass ‘cat /opt/SUNWsgdg/etc/password‘

    在此示例中,客户端证书 mycert.crt 导入到 SGD Gateway 客户端密钥库中。客户端证书使用 mycert 别名存储。

  5. 启动 SGD Gateway。

    # /opt/SUNWsgdg/bin/gateway start

C.7.2. 如何为客户端证书生成 CSR

要获取可用于 Gateway 的客户端证书,首先需要生成 CSR。随后将 CSR 发送给证书颁发机构 (Certificate Authority, CA) 进行签名。

注意

以下过程介绍了如何使用 Gateway 主机上的 keytool 应用程序生成 CSR。但是,不一定要使用此过程中介绍的步骤。您可以改用自己喜欢的证书管理工具来生成 CSR。

  1. 在 SGD Gateway 主机上,以超级用户 (root) 身份登录。

  2. 生成自签名证书和相应的私钥。

    按如下方式使用 keytool 命令:

    # /opt/SUNWsgdg/java/default/bin/keytool -genkeypair -keyalg RSA \
    -alias mycert -keystore keystore.mycert -storepass letmein

    在此示例中,将创建自签名证书和私钥并将其存储在名为 keystore.mycert 的密钥库中。密钥对使用 mycert 别名存储。

  3. 为自签名证书生成 CSR。

    按如下方式使用 keytool 命令:

    # /opt/SUNWsgdg/java/default/bin/keytool -certreq  \
    -alias mycert -keystore keystore.mycert -storepass letmein \
    -file /tmp/gateway-name.csr
    

    在此示例中,生成了 CSR 并将其存储在 /tmp/gateway-name.csr 文件中,其中 gateway-name 是 Gateway 的名称。