【问题标题】:AWS Single Instance Tomcat SSLAWS 单实例 Tomcat SSL
【发布时间】: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


【解决方案1】:

实际上比我想象的要容易得多!我在以下位置找到了相应的文档:

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ssl-server-cert.html

简而言之,拥有证书和私钥,在 Linux AMI 中,您必须运行以下命令:

sudo yum install apr.i686
sudo yum install mod_ssl
sudo yum install tomcat-native.x86_64
aws configure (enter your aws account data here)
aws iam upload-server-certificate --server-certificate-name yourAliasHere --certificate-body file://certificate.crt.pem --private-key file://private.key.pem

必须使用file:// 表示法。之后,只需转到您的 Elastic Beanstalk、配置、负载平衡并设置 Secure listener portSSL certificate ID(您刚刚上传)字段,然后保存。

【讨论】:

    猜你喜欢
    • 2017-03-18
    • 2017-08-03
    • 2013-12-20
    • 2016-09-13
    • 1970-01-01
    • 2012-04-27
    • 2018-05-03
    • 2013-12-20
    • 2020-12-15
    相关资源
    最近更新 更多