【发布时间】:2014-12-19 20:41:37
【问题描述】:
我正在尝试在我的 EC2 tomcat 实例上设置 Apr SSL 连接器,但它不起作用,我不知道为什么。
我有有效的证书和公钥文件。 Apr 模块已安装,我已将端口 8443 添加到我的 EC2 实例的安全组,但是当我尝试访问链接 https://myapp-env.elasticbeanstalk.com:8443/ 时,该页面不可用。
我在tomcat的server.xml中添加了如下配置:
<Connector
port="8443"
protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="200"
scheme="https"
secure="true"
SSLEnabled="true"
SSLCertificateFile="/etc/ssl/certs/myapp.crt"
SSLCertificateKeyFile="/etc/ssl/certs/myapp.key"
clientAuth="optional"
sslProtocol="TLSv1" />
Tomcat 的日志没有显示任何错误信息,恰恰相反:
Oct 24, 2014 1:51:50 AM org.apache.catalina.core.AprLifecycleListener initializeSSL
INFO: OpenSSL successfully initialized (OpenSSL 1.0.1h 5 Jun 2014)
Oct 24, 2014 1:51:50 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler "http-apr-8080"
Oct 24, 2014 1:51:51 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler "ajp-apr-8009"
Oct 24, 2014 1:51:51 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler "http-apr-8443"
Oct 24, 2014 1:51:51 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 2083 ms
Oct 24, 2014 1:51:51 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Oct 24, 2014 1:51:51 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.55
我错过了什么?提前致谢。
【问题讨论】:
-
从屏幕截图中,您的 beanstalk 应用似乎在 VPC 中。你的负载均衡器有公共 IP 吗?
-
是的,它在 VPC 中。我在哪里可以检查负载均衡器是否有公共 ip?
-
简单地 ping myapp-env.elasticbeanstalk.com 如果这返回一个私有 IP,它有私有 IP。或者,转到 AWS 控制台中的 EC2 区域,在左侧菜单中选择负载均衡器,在右侧窗格中选择您的负载均衡器,然后选择负载均衡器。在详细信息下,检查架构。如果是“内部”,则不公开。
-
我刚刚注意到线程的标题是“单实例”,但由于我有一个负载均衡器,它不是单实例而是多实例。也许这让这个问题有点令人困惑......
-
Elastic Beanstalk 甚至可以为单实例设置创建负载均衡器。我实际上更喜欢在负载均衡器上拥有 SSL 证书,而不是在 EC2 实例本身上,即使它不是 beanstalk 应用程序。这样一来,我就可以将诸如错误之类的心脏出血的修复程序留给亚马逊。
标签: java tomcat ssl amazon-web-services amazon-ec2