Amazon EMR
管理指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

自定义代理程序证书

代理程序默认使用自签名传输层安全性 (TLS) 证书。要为代理程序使用自定义证书,您必须首先从证书颁发机构获取证书、证书链和私有密钥。通过这些项目,PKCS12 文件将用于保护密钥材料,以便将其导入到代理程序的密钥存储。代理程序基于 Apache Knox。您可以使用以下步骤,将默认证书替换为您的自定义证书。

在以下步骤中,将 MasterPublicDNS 替换为 cluster details (集群详细信息) 窗格的 Summary (摘要) 选项卡上的 Master public DNS (主公有 DNS) 所显示的值。例如,ec2-11-222-33-44.compute-1.amazonaws.com

  1. 要从证书、证书链和私有密钥创建 PKCS12 文件,请在具有证书文件并安装了 openssl 的主机上运行以下命令。

    openssl pkcs12 -export -out proxy_agent_certificate.pfx -inkey private.key -in certificate.cer -certfile certchain.cer
  2. proxy_agent_certificate.pfx 文件复制到您集群主节点上的 /home/hadoop 目录。

    scp -i EC2KeyPair.pem proxy_agent_certificate.pfx hadoop@MasterPublicDNS:/home/hadoop
  3. 通过 SSH 连接到集群的主节点。

    ssh -i EC2KeyPair.pem hadoop@MasterPublicDNS
  4. 使用以下命令查找您的集群特定主密钥。

    less /etc/knox/conf/gateway-site.xml

    查找 gateway.master.secret 属性并复制 value 标签的内容,因为接下来的步骤中需要这些信息。

  5. 使用以下命令,创建现有代理程序密钥存储的备份副本。

    sudo -s cd /mnt/var/lib/knox/data/security/keystores mkdir backups mv gateway.jks __gateway-credentials.jceks backups/
  6. 使用以下命令将您的自定义证书导入到新的密钥存储。

    sudo -s cd /mnt/var/lib/knox/data/security/keystores keytool -importkeystore \ -srckeystore /home/hadoop/proxy_agent_certificate.pfx \ -srcstoretype pkcs12 -destkeystore gateway.jks \ -deststoretype jks \ -srcalias 1 \ -destalias gateway-identity

    系统提示 Enter destination keystore password 时,使用 gateway-site.xml 文件中的 Knox 主密钥。

    使用以下命令确保新创建的 gateway.jks 文件由 knox 用户拥有。

    chown knox:knox gateway.jks

    如果您的私有密钥由密码保护,请确保 Knox 知道该密码。

    sudo -u knox bash cd /usr/lib/knox bin/knoxcli.sh create-cert create-alias gateway-identity-passphrase

    在提示时,输入保护您的私有密钥的密码。

  7. 使用以下命令重新启动 Knox。

    sudo -u knox bash cd /usr/lib/knox bin/gateway.sh stop

    Knox 应自动重新启动,您可以通过查看 /var/log/knox/gateway.log 来检查 Knox 的状态。

  8. 要确保代理程序使用了新证书,请导航到 Apache Zeppelin https://MasterPublicDNS:8442/gateway/default/zeppelin/。您可以使用浏览器来检查证书,确保这是您的自定义证书。