当前位置: 首页 > 面试题库 >

带有Apache2 SSL代理的Elasticsearch

伍成仁
2023-03-14
问题内容

最近,我一直在尝试让Elasticsearch在SSL上可用。这使我处于从apache到nginx到apache到nginx到现在终于回到apache的有趣路线上。

我需要LDAP进行身份验证,这就是为什么我停止使用nginx的原因。我遵循了这个https://gist.github.com/jerrac/0a8bd96e6c42eb84b6f2来配置我的apache网络服务器。好消息是我可以访问它。不好的是,当尝试查找索引时,elasticsearch无法正常工作。我使用elasticsearch-
head来确保它不是其他任何东西,但是即使我可以访问kibana网页,似乎Elasticsearch仍然被阻止。任何帮助,将不胜感激。

<VirtualHost *:80>

ServerAdmin systems@example.com
ServerName logstash.example.com

DocumentRoot /var/www/kibana/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/kibana/>
Options -Indexes FollowSymLinks -MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>

 RewriteEngine on
 RewriteCond %{HTTPS} off
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
#RewriteRule ^/(.*)$ https://logstash.example.com/$1 [R,L]

 ErrorLog /var/log/apache2/error.log
 CustomLog /var/log/apache2/access.log combined

</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin systems@example.com
    ServerName logstash.example.com

  SSLEngine on
  SSLCertificateFile           /etc/ssl/certs/wildcard.example.com.crt
  SSLCertificateKeyFile        /etc/ssl/private/wildcard.example.com.key
  SSLCACertificateFile         /etc/ssl/certs/ca-example.cert
  #RewriteEngine on
  #RewriteCond %{SERVER_NAME} !=logstash.example.com
  #RewriteRule ^/(.*)$ https://logstash.eaxmple.com/$1 [R,L]

 ErrorLog /var/log/apache2/error.log
 CustomLog /var/log/apache2/access.log combined

    DocumentRoot /var/www/kibana/
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/kibana/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
    SSLOptions +StdEnvVars
</Directory>
 BrowserMatch "MSIE [2-6]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [7-9]" ssl-unclean-shutdown
#ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    #<Directory "/usr/lib/cgi-bin">
    #        AllowOverride None
    #        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    #        Order allow,deny
    #        Allow from all
    #</Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

<Proxy http://127.0.0.1:9200>
 #<Proxy http://logstash.example.com:9200>
        ProxySet connectiontimeout=5 timeout=90
</Proxy>

# Proxy for _aliases and .*/_search
<LocationMatch "^(/_aliases|.*/_search|.*/_mapping|/_nodes)$">
        #ProxyPassMatch http://logstash.example.com:9200
        #ProxyPassReverse http://logstash.example.com:9200
    ProxyPassMatch http://127.0.0.1:9200
        ProxyPassReverse http://127.0.0.1:9200
</LocationMatch>

# Proxy for kibana-int/{dashboard,temp} stuff (if you don't want auth on /, then you will want these to be protected)
<LocationMatch "^(/kibana-int/dashboard/|/kibana-int/temp).*$">
        #ProxyPassMatch http://logstash.example.com:9200
        #ProxyPassReverse http://logstash.example.com:9200
        ProxyPassMatch http://127.0.0.1:9200
        ProxyPassReverse http://127.0.0.1:9200
</LocationMatch>

</VirtualHost>
</IfModule>

问题答案:

https://myserver/index_name/_search/如果Kibana正在运行,您应该能够使用上述配置。

您的LocationMatches只允许很小的信息子集。您可以显式列出索引(例如/index1/.*|/index2/.*),或者提出更灵活的映射(例如,在索引名称中具有已知的模式)。

<LocationMatch "^/(_aliases|index1/.*|index2/.*|_nodes)$">

可能值得注意的是,即使使用SSL暴露Elasticsearch数据库也是非常危险的,因为一旦您允许不受限制的访问,它们就可以从中获取所有数据(以及其他危险操作),这破坏了加密的目的。大部分的流量。



 类似资料:
  • 我试图得到一个代理工作与蓝图在OSGi(正在通过Karaf)正确,并通过Gradle构建。 我的蓝图文件(名字已经改变,以保护无辜): 我对此感到非常困惑,因为它在抱怨Camel上下文中的标记。我在其他地方使用了完全相同的语法(只是一个不同的包),没有问题。 最后一个“错误”是: RuntimeException:放弃等待服务(ObjectClass=org.apache.camel.CamelC

  • 问题内容: 简短,简单的介绍了出色的Python 请求模块。 我似乎在文档中找不到变量“代理”应包含的内容。当我发送带有标准“ IP:PORT”值的字典时,它拒绝要求2个值。所以,我猜(因为文档中似乎没有涵盖),第一个值是ip,第二个值是端口? 文档只提到了这一点: 代理–(可选)字典到代理URL的映射协议。 所以我尝试了这个……我该怎么办? 在将它们放入字典之前,我应该将它们转换为某种类型吗?

  • 我正在修改Springs优秀安全教程中的oauth2香草样本。oauth2-vanilla将Zuul代理和UI组合成一个应用程序。我想分离Zuul代理和UI。(Zuul代理应充当API网关和多个UI的反向代理)。 当通过zuul代理访问UI时,它应该能够在UI和资源后端之间基于Oauth2进行SSO。 oauth2香草看起来像这样 我想转移到这样的地方: 我已经从网关中移除了ui部分,并为UI添加

  • 问题内容: 我想将多处理池与迭代器一起使用,以便在将迭代器拆分为N个元素的线程中执行函数,直到迭代器完成为止。 我的问题是,此脚本是正确的方法吗?有没有更好的办法? 该脚本可能出了点问题,因为我在 问题答案: 如果我不得不猜测代码的主要问题,那是因为将您的代码传递给了流程函数-工作方式是解压缩传递给它的参数,因此您的函数实际上是获取参数,而不是列出一个参数的元素。这会在过程功能甚至没有机会启动之前

  • 是否可以将SSL代理与Java HttpClient(或任何其他客户端)一起使用? 我真正的问题是有一个直接的SSL代理来发送HTTP或HTTPS连接并检查SSL代理和客户端证书。 例如,对于HTTP请求(我们检查客户端上的SSL代理证书,以及代理上的客户端证书): 客户端---SSL套接字(HTTPS)--- 对于HTTPS请求(使用CONNECT request来隧道SSL连接)(我们检查客户

  • 我不确定这是否可以实现。我正在使用以下版本以群集模式运行docker: 客户端:版本:17.03.0-CE API版本:1.26Go版本:GO1.7.5 Git提交:3A232C8构建:周二2月28日08:10:07 2017 OS/arch:linux/amd64 显然,客户端套接字连接无法解析到群集中托管的服务集群。docker swarm是否有一个变通配置,或者它只是不可能?我没有太多的运气