我有一个在Tomcat上运行的弹性豆茎上的可扩展应用程序。我读到Tomcat前面有一个用于反向代理的Apache服务器。我想我必须在apache上安装客户端证书,并将其配置为只接受由该证书加密的请求,但我不知道如何做到这一点。
你能帮我吗?
经过多次研究,我找到了解决方案。根据难发现的原因,我想和大家分享一下我的经验。
我在弹性豆茎上的平台是带负载均衡器的Tomcat8。
要使用客户端证书(在我写这篇文章的时候),你必须终止实例上的https
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-singleinstance.html
然后
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-singleinstance-tomcat.html
我使用这个配置来同时使用客户端和服务器证书(似乎它不能仅与客户端证书一起使用)
SSLEngine on
SSLCertificateFile "/etc/pki/tls/certs/server.crt"
SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
SSLCertificateChainFile "/etc/pki/tls/certs/GandiStandardSSLCA2.pem"
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile "/etc/pki/tls/certs/client.crt"
最后一件事:api网关不适用于自签名证书(由于AWS api网关的客户端证书),所以你必须从CA购买一个
SSLCACertificateFile "/etc/pki/tls/certs/client.crt"
这是您应该指向API网关提供的客户端证书的地方。
您可能需要在同一端口而不是HTTPS上为普通TCP配置ELB的侦听器。基本上,TCP通过ELB,您的实例需要在SSL上进行处理,以便授权提供有效客户端证书的请求。