[KB7857] 为 ESET PROTECT On-Prem(Linux)配置 HTTPS/SSL 连接

注意:

本页已由电脑翻译。点击本页面语言下的英文,显示原文。如果你发现有什么不清楚的地方,请联系你当地的支持。

问题

解决方案

相关解决方案:Windows 用户

Rocky Linux 虚拟设备用户

如果您是 Rocky Linux 虚拟设备用户,请将连接器的端口号调整为 443。

阅读更多关于 来自 Rocky Linux ESET PROTECT 虚拟设备的带有证书的 ESET 管理代理 的信息。

HTTPS

出于安全原因,我们建议您将 ESET PROTECT On-Prem 配置为使用 HTTPS。

使用现有证书

通过 HTTP 访问 ESET PROTECT On-Prem 时,可能会出现“正在使用未加密的连接!请配置 Web 服务器以使用 HTTPS”的错误消息。此情况发生在安装 ESET PROTECT On-Prem 之后。

以下步骤涉及 Apache Tomcat 的证书,这些证书用于确保安全的 HTTPS 连接。了解有关ESET PROTECT On-Prem 证书的更多信息。

  1. 将证书文件(例如certificate_file.pfx)移动到 Apache Tomcat 安装文件夹(例如/etc/tomcat/)。

  2. 打开位于 Apache Tomcat 安装文件夹中的Server.xml文件,并按以下方式编辑该文件:

    • Apache Tomcat 9

      • 如果<‎Service name="Catalina"> 之后没有< ‎Connector,请复制以下字符串并将其粘贴到<‎Service name="Catalina"> 之后。

        请根据实际情况填写keystoreFile、keystorePass 和 keystoreType 的值:

        <Connector port="8443"
                       protocol="HTTP/1.1"
                       SSLEnabled="true"
                       maxThreads="150"
                       scheme="https"
                       secure="true"
                       clientAuth="false"
                       sslEnabledProtocols="TLSv1.2,TLSv1.3"
                       ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
                                TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
                                TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
                                TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
                                TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
                                TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
                                TLS_RSA_WITH_AES_128_CBC_SHA256,
                                TLS_RSA_WITH_AES_128_GCM_SHA256,
                                TLS_RSA_WITH_AES_128_CBC_SHA,
                                TLS_RSA_WITH_AES_256_CBC_SHA256,
                                TLS_RSA_WITH_AES_256_GCM_SHA384,
                                TLS_RSA_WITH_AES_256_CBC_SHA"
                       keystoreFile="/etc/tomcat/certificate_file.pfx"
                       keystorePass="Secret_Password_123"
                       keystoreType="PKCS12"
                       />
      • 如果< ‎Service name="Catalina"> 之后存在< ‎Connector,请为以下参数填写您自己的值。

        • keystoreFile——提供证书文件(.pfx、.keystore或其他格式)的完整路径。 若使用非 JKS 证书(例如.pfx文件),请删除keyAlias(该项默认存在于Server.xml中),并添加正确的keystoreType。
        • keystorePass——提供证书密码短语。
        • keystoreType——指定 证书类型。
    • Apache Tomcat 10

      按以下方式编辑<Connector标签:

      请为以下参数填写您自己的值。

      • certificateKeystoreFile——提供证书文件的完整路径。
      • certificateKeystorePassword–提供证书密码短语。

      <Connector port="443"
                     protocol="org.apache.coyote.http11.Http11NioProtocol"
                     maxThreads="150"
                     SSLEnabled="true">
                     <SSLHostConfig>
                      <Certificate certificateKeystoreFile=""/etc/tomcat/certificate_file.pfx"
                          certificateKeystorePassword="admin.1234"
                           type="RSA"/>
                     </SSLHostConfig>
                  </Connector>
  3. 重启 Tomcat 服务:

    sudo systemctl restart tomcat
    • 如果您使用.keystore文件,请使用该文件的路径(keystoreFile="/etc/tomcat/tomcat.keystore"),并定义keyAlias(keyAlias="tomcat")代替keystoreType。

    • 若要禁用 HTTP:

      <!--
          <Connector port="8080" protocol="HTTP/1.1"
                     connectionTimeout="20000"
                     redirectPort="8443" />
      SELinux 已启用

      已启用 SELinux 且收到证书无效提示的用户,可能需要运行restorecon 命令 来恢复 SELinux 安全上下文:

      restorecon /etc/tomcat/my_cert_file.pfx
      
      ls -lZ
      
      -rw-r--r--. root root unconfined_u:object_r:etc_t:s0   /etc/tomcat/my_cert_file.pfx

创建新证书并获取签名

为 ESET PROTECT On-Prem 使用安全的 HTTPS/SSL 连接。

  1. 创建包含SSL 证书的密钥库。您必须已安装 Java 。

    Apache Tomcat 需要 Java:
    • 请确认 Java、ESET PROTECT On-Prem 和 Apache Tomcat 的位数版本一致。

    • 如果系统上安装了多个 Java 版本,建议您卸载较早的 Java 版本,仅保留最新版本的 Java。

    • Oracle Java SE 的公开更新若用于商业、企业或生产环境,则需要商业许可证。如果您未购买 Java SE 许可证,可参考 本指南 过渡到免费替代方案。

    Java 包含keytool 工具,可让您通过命令行创建证书。

    1. 您必须为每个 Tomcat 实例(如果您有多个 Tomcat 实例)生成一个新的证书,以确保如果一个证书遭到泄露,其他 Tomcat 实例仍能保持安全。以下是创建包含 SSL 证书的密钥库的 示例命令。

    2. 导航至keytool文件的确切位置,例如/usr/lib/jvm/“java 版本”/jre/bin(具体目录取决于操作系统和 Java 版本),然后运行以下命令:

      sudo keytool -genkeypair -alias "tomcat" -keyalg RSA -keysize 4096 -validity 3650 -keystore "/etc/tomcat/tomcat.keystore" -storepass "yourpassword" -keypass "您的密码" -dname "CN=未知, OU=未知, O=未知, L=未知, ST=未知, C=未知"

      文件路径/etc/tomcat/tomcat.keystore仅供示例;请选择您自己安全且可访问的存储位置。

      -storepass 和 -keypass 参数

      -storepass和-keypass 的值必须相同。

  2. 从密钥库导出证书。以下是从密钥库导出证书签名请求(CSR)的示例命令:

    sudo keytool -certreq -alias tomcat -file "/etc/tomcat/tomcat.csr" -keystore "/etc/tomcat/tomcat.keystore" -ext san=dns:ESETPROTECT
    请根据实际情况替换相应值
    • 将 -file参数中的 值"/etc/tomcat/tomcat.csr" 替换为您希望导出证书的实际路径和文件名。

    • 将-ext参数中的值ESETPROTECT 替换为运行着搭载 ESET PROTECT On-Prem 的 Apache Tomcat 的服务器的实际主机名。

  3. 使用您选择的根证书颁发机构 (CA) 对 SSL 证书进行签名。

    如果您计划稍后导入根 CA,可以跳至第 6 步。如果您选择按此方式操作,您的 Web 浏览器可能会显示有关自签名证书的警告,您需要添加一个例外才能通过 HTTPS 连接到 ESET PROTECT On-Prem。

  4. 将您的 CA 的根证书和中间证书导入到密钥库中。这些证书通常由签署您证书的机构提供。此步骤是必要的,因为证书响应的验证需要使用密钥库中的受信任证书。

    sudo keytool -import -alias root -file "/etc/Tomcat/root.crt" -keystore "/etc/tomcat/tomcat.keystore"
    sudo keytool -import -alias intermediate -file "/etc/Tomcat/intermediate.crt.pem" -keystore "/etc/tomcat/tomcat.keystore"
  5. 当您收到由根证书颁发机构 (Root CA) 签名的证书后,请将该证书颁发机构的公钥和证书(tomcat.cer)导入您的密钥库。以下是将已签名证书导入密钥库的示例命令:

    sudo keytool -import -alias tomcat -file "/etc/tomcat/tomcat.cer" -keystore "/etc/tomcat/tomcat.keystore"
    请酌情替换相关值

    请将-file参数中的/etc/tomcat/tomcat.csr替换为已签名证书的实际路径和文件名。

    如果您想使用现有证书(例如公司证书),请按照以下说明操作。

  6. 编辑server.xml配置文件,使<Connector标签的写法与以下示例类似:

    <Connector server="OtherWebServer" port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/etc/tomcat/tomcat.keystore" keystorePass="yourpassword"/>

    此修改还会禁用 Tomcat 的非安全功能,仅保留 HTTPS 功能(scheme= 参数)。出于安全考虑,您可能还需要编辑tomcat-users.xml 以删除所有 Tomcat 用户,并修改 ServerInfo.properties 以隐藏 Tomcat 的身份信息。

  7. 重启 Apache Tomcat 服务。ESET PROTECT On-Prem 可能使用服务名称tomcat9。

    sudo systemctl restart tomcat
    在 Linux 上安全连接仍失败

    重要内容请填写在此处。

    /var/....../tomcat目录中可能会出现以下错误消息:“无法初始化与 ProtocolHandler ["http-bio-443"] 关联的端点。”

    如果问题仍然存在,请将server.xml文件中的端口号更改为大于 1024 的值,因为非 root 用户可能无法访问小于 1024 的端口。如果出于某种原因必须使用 443 端口,您仍可更改该值,然后进行端口转发。

    请按照以下步骤启用端口重定向(例如,从端口 443 重定向到端口 8443):

    1. 允许远程 Web 控制台访问:

      sudo iptables -A INPUT -p tcp -m tcp --dport 8443 -j ACCEPT

      或者,您可以打开并编辑防火墙配置文件(nano /etc/sysconfig/iptables),并在以*nat开头、以COMMIT 结尾的段落中添加以下行:

      -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports |8443)
    2. 删除端口 8080 以禁用 HTTP:

      sudo iptables -D INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
    3. 保存防火墙规则:

      iptables-save > /etc/network/iptables.rules
    4. 禁用 SELinux。具体操作步骤可能因您使用的 Linux 发行版而异。