这是应用程序的目录结构。
- 应用程序/ __ init_.py
- 应用程序/静态/
- 应用程序/模型/
- 应用程序/视图/
- application.py
- requirements.txt
- .elasticbeanstalk /配置
- .elasticbeanstalk / optionsettings.application_name
- .ebextensions / python.config
- .ebextensions / https.config
这里是内部.elasticbeanstalk文件的片段
#config
EnvironmentTier=WebServer::Standard::1.0
EnvironmentType=SingleInstance
Region=us-west-1
ServiceEndpoint=https://elasticbeanstalk.us-west-1.amazonaws.com
SolutionStack=64bit Amazon Linux 2014.03 v1.0.3 running Python
#optionsettings.application_name
[aws:elasticbeanstalk:container:python]
NumProcesses=1
NumThreads=15
StaticFiles=/static/=app/static/
WSGIPath=application.py
[aws:elasticbeanstalk:container:python:staticfiles]
/static/=app/static/
这里是我走上创建CheapSSL SSL证书的步骤
- OpenSSL的genrsa 2048> privatekey.pem
- OpenSSL的REQ -new -key privatekey.pem退房手续csr.pem
- 取得SSL证书请求科摩并收到三个文件
- 根CA证书 - AddTrustExternalCARoot.crt
- 中间CA证书 - PositiveSSLCA2.crt
- 你PositiveSSL证书 - server.crt这
注:我指定的服务器是Apache的/ OpenSSL的
最后,这里有文件内.ebextensions的片段
#https.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupName: {Ref : AWSEBSecurityGroup}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
packages:
yum:
mod24_ssl : []
files:
/etc/httpd/conf.d/ssl.conf:
mode: 000777
owner: ec2-user
group: ec2-user
content: |
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost *:443>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine on
SSLCertificateFile "/etc/pki/tls/certs/server.crt"
SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
Alias /static /opt/python/current/app/
<Directory /opt/python/current/app/>
Order allow,deny
Allow from all
</Directory>
WSGIScriptAlias / /opt/python/current/app/python/application.py
<Directory /opt/python/current/app/>
Order allow,deny
Allow from all
</Directory>
WSGIDaemonProcess wsgi-ssl processes=1 threads=15 display-name=%{GROUP} \
python-path=/opt/python/current/app:/opt/python/run/venv/lib/python2.6/site-packages user=wsgi group=wsgi \
home=/opt/python/current/app
WSGIProcessGroup wsgi
</VirtualHost>
/etc/pki/tls/certs/server.crt:
mode: 000777
owner: ec2-user
group: ec2-user
content: |
-----BEGIN CERTIFICATE-----
#contents from server.crt
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key:
mode: 000777
owner: ec2-user
group: ec2-user
content: |
-----BEGIN RSA PRIVATE KEY-----
#contents from privatekey.pem
-----END RSA PRIVATE KEY-----
这个配置是用小的变化AWS弹性魔豆文档片段。 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/SSLPython.SingleInstance.html
- 了mod_ssl - > mod24_ssl由于百胜安装错误。 我很幸运找到了从GitHub此修复程序
- 01killhttpd排除。 通过多次部署的应用程序去后,杀死的httpd留给应用永久性损坏。
症状如下。
- 可以访问到http:
- 给403禁止您没有权限访问/在此服务器上。 对于HTTPS:
如果有必要,我会透露网站地址。
我已在AWS文档中指定的每一步,但仍然未能实现一个单一的目标; 钩住我的网站以https。 有没有可以在网上帮我算出这个足够的职位。 我从负载平衡器没去,因为我使用GoDaddy的域名购买,它太复杂,设立磅域(那是另一回事)。
这里是链接到弹性魔豆日志的快照。
https://dl.dropboxusercontent.com/u/23288606/Log.txt
提前致谢。
更新:
有人阅读日志,并指出了一条错误消息,说明这一点。
[ssl:warn] [pid 1989] AH01909: [ec2-address].compute.amazonaws.com:443:0 server certificate does NOT include an ID which matches the server name
所以,是的,SSL证书指的是我的自定义域,而服务器仍认为它作为EC2的默认公用DNS(我认为)。
仅供参考,自定义域是从GoDaddy的购买。 我把它使得A记录指向我的EC2的IP地址。
总之,我怎么让这个当我EC2服务器设置SSL,它知道它的FQDN是我的自定义域,而不是通过EC2提供的一个?