es上安装x-park TLS/SSL认证

在es集群上安装TLS。


重要
如果您是在现有群集上首次安装X-Pack,则必须执行完整群集重新启动。安装X-Pack后,必须在群集中的所有节点上启用安全性和安全性才能使群集正常运行。升级时通常可以执行滚动升级。

这里写图片描述


1. 要在Elasticsearch中安装X-Pack:

  • 可选:如果您想在没有互联网访问权限的机器上安装X-Pack:手动下载X-Pack zip文件: (sha512) https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-6.2.1.zip
    注意

    1.1 .Elasticsearch,Kibana(一个开源的分析与可视化平台,搜索、查看、交互存放在Elasticsearch索引里的数据)和Logstash(分析log日志)的插件包含在同一个zip文件中。如果您已下载此文件以在其中一个其他产品上安装X-Pack,则可以重复使用相同的文件

    1.2 将zip文件传输到脱机机器上的临时目录。(不要将文件放在Elasticsearch插件目录中。)

  • 在ES_HOME群集中的每个节点上 运行

bin/elasticsearch-plugin install x-pack
X-Pack需要权限才能使Elasticsearch启动机器学习分析引擎。本地控制器确保启动的进程是有效的机器学习组件。
X-Pack安全性使您能够在您的弹性搜索集群中对流量进行加密。连接使用传输层安全性(TLS)进行保护,这通常称为“SSL”。

警告
没有加密的集群可以以纯文本的方式发送所有数据,包括密码,并且不能安装允许x包安全的许可证。
下面的步骤描述了如何在弹性堆栈的各个组件上启用加密。您必须执行适用于您的集群的每一个步骤。
为每个弹性搜索节点生成一个私钥和X.509证书。看到生成节点证书。
在集群中配置每个节点,以标识自己使用其签名证书并在传输层上启用TLS。还可以在HTTP层上启用TLS。在集群中的节点之间进行加密通信,并对HTTP客户端通信进行加密。
配置X-Pack监视以使用加密连接。看到监控和安全。
配置Kibana,以加密浏览器和Kibana服务器之间的通信,并通过HTTPS连接到弹搜索。参见在Kibana中配置安全性。
配置logstorage以使用TLS加密。请参阅在logstorage中配置安全性。
配置Beats以使用加密连接。看到跳动和安全。
配置Java传输客户机以使用加密通信。参见Java客户机和安全性。

配置Apache Hadoop的弹性搜索以使用安全传输。参阅Apache Hadoop安全性的弹性搜索。

加密通信Elasticsearch
X-Pack安全性使您能够在您的弹性搜索集群中对流量进行加密。使用传输层安全性(TLS/SSL)保护连接。
警告
没有加密的集群可以以纯文本的方式发送所有数据,包括密码,并且不能安装允许x包安全的许可证。
为了启用加密,您需要对集群中的每个节点执行以下步骤:
安装X-Pack Elasticsearch。
生成一个私钥和X.509证书。
每个节点配置为:
需要:在传输层启用TLS。

建议:在HTTP层上启用TLS

certutil工具讲解

参数
ca
指定生成新的本地证书颁发机构(CA)。此参数不能与csr或cert参数一起使用。
cert
指定生成新的X.509证书和密钥。此参数不能与csr或ca参数一起使用。
企业社会责任
指定生证书签名请求。此参数不能与ca或cert参数一起使用。
——ca < file_path >
指定现有CA密钥对的路径(在PKCS#12格式中)。此参数不能与ca或csr参数一起使用。
——ca-cert < file_path >
指定现有CA证书的路径(在PEM格式中)。您还必须指定-ca-key参数。ca-cert参数不能与ca或csr参数一起使用。
——ca-dn <名称>
定义用于生成CA证书的专有名称(DN)。默认值是CN=Elastic Certificate Tool Autogenerated CA.此参数不能与csr参数一起使用。
——ca-key < file_path >
指定现有CA私钥的路径(在PEM格式中)。您还必须指定-ca-cert参数。ca-key参数不能与ca或csr参数一起使用。
——ca-pass <密码>
为现有的CA私钥或生成的CA私钥指定密码。此参数不能与ca或csr参数一起使用。
——天< n >
指定一个整数值,它表示生成的证书有效的天数。默认值是1095。此参数不能与csr参数一起使用。
——dns < domain_name >
指定一个以逗号分隔的DNS名称列表。此参数不能与ca参数一起使用。
- e < KeyValuePair >
配置设置。
- h,帮助
返回所有的命令参数。
——在< input_file >
指定用于在静默模式下运行的文件。输入文件必须是YAML文件。此参数不能与ca参数一起使用。
——ip < IP_addresses >
指定一个以逗号分隔的IP地址列表。此参数不能与ca参数一起使用。
——keep-ca-key
当在cert模式中使用自动生成的CA时,指定保留CA私钥以供将来使用。
——keysize <比特>生成
定义生成的RSA密钥中使用的比特数。默认值是2048。
——多个
指定为多个实例生成文件。此参数不能与ca参数一起使用。
——名称< file_name >
指定生成的证书的名称。此参数不能与ca参数一起使用。
——从< file_path >
指定输出文件的路径。
——通过<密码>
指定生成的私钥的密码。
- - - pem
用PEM格式生成证书和密钥,而不是PKCS#12。此参数不能与csr参数一起使用。
- s,沉默
显示最小输出。

- v,详细

显示详细的输出。

生成节点证书

    TLS要求X.509证书对正在进行通信的应用程序进行加密和身份验证。为了使节点之间的通信真正安全,必须对证书进行验证。在弹性搜索集群中验证证书真实性的推荐方法是信任签署证书的证书颁发机构(CA)。通过这样做,当节点被添加到集群中时,它们只需要使用由相同CA签名的证书,并且节点被自动允许加入集群。此外,还建议证书包含与节点的IP地址和DNS名称对应的主题替代名称(SAN),以便可以执行主机名验证。

为了简化为弹性堆栈生成证书的过程,一个命令行工具certutil已经包含在X-Pack中。该工具负责生成CA并与CA. certutil签署证书,可以通过使用输入文件以交互方式或在静默模式中使用。certutil工具还支持生成证书签名请求(CSR),从而可以使用一个商业或组织特定的CA来签署证书。例如:

1.可选:为您的弹性搜索集群创建一个证书颁发机构。

例如,使用certutil ca命令:

bin/x-pack/certutil ca
您可以配置集群,以信任所有具有此CA签名的证书的节点。

该命令输出一个文件,默认名称是弹-stack-ca.p12。该文件是一个PKCS#12密钥存储库,其中包含您的CA的公共证书和用于为每个节点签署证书的私钥。

certutil命令还提示您输入密码以保护文件和密钥。如果您计划将来在集群中添加更多的节点,请保留该文件的副本并记住它的密码。

2.为集群中的每个节点生成证书和私钥。

例如,使用certutil cert命令:

bin/x-pack/certutil cert --ca elastic-stack-ca.p12
输出是一个PKCS#12密钥存储库,其中包括节点证书、节点密钥和CA证书。
还会提示输入密码。您可以为您的证书和密钥输入密码,或者您可以按enter键将密码留空。
默认情况下,certutil生成的证书中没有主机名信息(也就是说,它们没有任何主题替代名称字段)。这意味着您可以为集群中的每个节点使用证书,但是您必须关闭主机名验证,如下面的配置所示。

如果您希望在集群中使用主机名验证,请在每个节点上运行certutil cert命令,并提供——名称、dns和——ip选项。您应该保护输出文件,因为它们包含实例的私钥。

或者,如果您想使用某个商业或组织特定的CA,您可以使用certutil csr命令为集群中的节点生成证书签名请求(csr)。有关更多信息,请参阅certutil。

在无声模式下使用certutil。

要使用静默模式的操作,您必须创建包含有关实例信息的YAML文件。它必须符合下列格式:

 
  
instances:
  - name: "node1" 
    ip: 
      - "192.0.2.1"
    dns: 
      - "node1.mydomain.com"
  - name: "node2"
    ip:
      - "192.0.2.2"
      - "198.51.100.1"
  - name: "node3"
  - name: "node4"
    dns:
      - "node4.mydomain.com"
      - "node4.internal"
  - name: "CN=node5,OU=IT,DC=mydomain,DC=com"
    filename: "node5" 
1.实例的名称。这可以是一个简单的字符串值,也可以是一个专有名称(DN)。这是唯一需要的字段。2.表示此实例的IP地址的可选字符串数组。允许IPv4和IPv6值。这些值作为主题替换名称添加。3.表示此实例的DNS名称的可选字符串数组。这些值作为主题替换名称添加。4.用于此实例的文件名。此名称用作包含输出中实例文件的目录的名称。它也用于目录中文件的名称。这个文件名不应该有扩展名。注意:如果为实例提供的名称不代表有效的文件名,那么文件名字段必须存在。

当YAML文件准备就绪时,可以使用certutil命令生成证书或证书签名请求。只需使用-in参数指定文件的位置。例如:

bin/x-pack/certutil cert --silent --in instances.yml --out test1.zip --pass testpassword
这个命令生成一个压缩test1。zip文件。解压输出文件后,在实例中列出的每个实例都有一个目录。yml文件。每个实例目录都包含一个PKCS#12 (.p12)文件,其中包含实例证书、实例私钥和CA证书。

您还可以使用YAML文件来生成证书签名请求。例如:

bin/x-pack/certutil csr --silent --in instances.yml --out test2.zip --pass testpassword
该命令生成一个压缩文件,该文件包含每个实例的目录。每个实例目录都包含一个证书签名请求(*。csr文件)和私钥(*。关键文件)。


3.将节点证书复制到适当的位置。
    将适用的.p12文件复制到每个节点的弹性搜索配置目录中的目录中。例如,/home/es/config/certs.不需要将CA文件复制到这个目录。对于要配置的每个附加弹性产品,请将证书复制到相关的配置目录。

请注意
如果您选择不使用certutil,那么您获得的证书必须允许clientAuth和serverAuth,如果扩展的键使用扩展存在。证书需要在PEM或PKCS#12格式中。尽管不需要,但强烈建议证书包含节点的DNS名称和/或IP地址,以便使用主机名验证。

  对集群中的节点之间的通信进行加密。

    传输网络层用于集群中节点之间的内部通信。当启用X-Pack安全性时,必须使用TLS确保节点之间的通信是加密的。

1.生成节点证书。

2.启用TLS并指定访问节点证书所需的信息。
        如果已签名的证书是PKCS#12格式,请将以下信息添加到弹性搜索。每个节点的yml文件:

 
  
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate 
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12 
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12 
1.如果您使用了——dns或——使用certutil cert命令的ip选项,并且您希望启用严格的主机名检查,那么将验证模式设置为full。

2.如果为每个节点创建单独的证书,则可能需要在每个节点上定制此路径。如果文件名与节点名匹配,您可以使用certs/${node.name}.p12格式。

3.certutil输出包括PKCS#12密钥存储库中的CA证书,因此密钥存储库也可以用作信任存储库。这个名称应该与密钥库匹配。路径值。

如果证书是PEM格式,则向弹性搜索添加以下信息。每个节点的yml文件:

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate 
xpack.security.transport.ssl.key: /home/es/config/x-pack/node01.key 
xpack.security.transport.ssl.certificate: /home/es/config/x-pack/node01.crt 
xpack.security.transport.ssl.certificate_authorities: [ "/home/es/config/x-pack/ca.crt" ] 

1.如果您使用了——dns或——使用certutil cert命令的ip选项,并且您希望启用严格的主机名检查,那么将验证模式设置为full。

2.到节点密钥文件的完整路径。这必须是弹性搜索配置目录中的一个位置。

3.节点证书的完整路径。这必须是弹性搜索配置目录中的一个位置。

4.应该信任的CA证书的路径数组。这些路径必须是弹性搜索配置目录中的一个位置。

3.如果您使用密码保护了节点的证书,请将密码添加到您的弹性搜索密钥存储库中:

    如果签署的证书是PKCS#12格式,请使用以下命令:

        

bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password

bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
    如果证书是PEM格式,请使用以下命令:
             
bin/elasticsearch-keystore add xpack.security.transport.ssl.secure_key_passphrase
4.重启Elasticsearch。

        您必须执行一个完整的集群重启。配置为使用TLS的节点不能与使用未加密网络的节点通信(反之亦然)。启用TLS之后,您必须重新启动所有节点,以保持跨集群的通信。

请注意

所有与tls相关的节点设置都被认为是高度敏感的,因此不会通过节点info API公开任何这些设置的更多信息,参见安全设置。


                                                    加密HTTP客户端通信

当启用X-Pack安全性时,您可以选择使用TLS来确保HTTP客户机和集群之间的通信被加密。

  注意:强烈建议在HTTP层上启用TLS,但不是必需的。如果您在弹性搜索中启用了HTTP层上的TLS,那么您可能需要在弹性堆栈的其他部分和您使用的任何弹性搜索客户端进行配置更改。

    1.如果您还没有这样做,请生成节点证书。
    2.启用TLS并指定访问节点证书所需的信息。
            如果证书是PKCS#12格式,将以下信息添加到弹性搜索。每个节点的yml文件:

xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: certs/elastic-certificates.p12 
xpack.security.http.ssl.truststore.path: certs/elastic-certificates.p12 

1.如果为每个节点创建单独的证书,则可能需要在每个节点上定制此路径。如果文件名与节点名匹配,您可以使用certs/${node.name}.p12格式。

2.certutil输出包括PKCS#12密钥存储库中的CA证书,因此密钥存储库也可以用作信任存储库。这个名称应该与密钥库匹配。路径值。

如果证书是PEM格式,则向弹性搜索添加以下信息。每个节点的yml文件:

    

xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.key:  /home/es/config/x-pack/node01.key 
xpack.security.http.ssl.certificate: /home/es/config/x-pack/node01.crt 
xpack.security.http.ssl.certificate_authorities: [ "/home/es/config/x-pack/ca.crt" ] 

1.到节点密钥文件的完整路径。这必须是弹性搜索配置目录中的一个位置。

2.节点证书的完整路径。这必须是弹性搜索配置目录中的一个位置。

3.应该信任的CA证书的路径数组。这些路径必须是弹性搜索配置目录中的一个位置。
3.如果您使用密码保护了节点的证书,请将密码添加到您的弹性搜索密钥存储库中:

     如果签署的证书是PKCS#12格式,请使用以下命令:
      
bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password

bin/elasticsearch-keystore add xpack.security.http.ssl.truststore.secure_password

      如果证书是PEM格式,请使用以下命令:

    

bin/elasticsearch-keystore add xpack.security.http.ssl.secure_key_passphrase
4.重启Elasticsearch。

请注意:
       所有与tls相关的节点设置都被认为是高度敏感的,因此不会通过节点info API公开任何这些设置的更多信息,参见安全设置。



你可能感兴趣的:(es_x-park)