我有一个AWS Elastic Load Balancer,其中包含以下安全网址:
https://example.us-west-2.elasticbeanstalk.com/
我还有以下1& 1注册域名:
example.com
然后我在1& 1配置中添加www
的子域名,结果为www.example.com
。
我想添加一个CNAME
别名来将流量从域名路由到ELB。
www.example.com -> https://example.us-west-2.elasticbeanstalk.com/
所以我尝试添加CNAME
:
如您所见,它不接受网址,因为它是Invalid host name
。
我需要别名来提示安全(https
)网址。但是,我认为这可能是错误的原因。
问题
如何设置CNAME
以指向安全网址?
由于
更新
我的Elastic Load Balanacer确实有一个安全的听众。
答案 0 :(得分:2)
放弃' http://'来自CNAME,只需使用:
example.us-west-2.elasticbeanstalk.com
答案 1 :(得分:2)
您必须使用HTTPS
或NGINX使用redirect
在Apache中指定mod_rewrite
。如果您想要更高级别的HTTP到HTTPS翻转,您可以通过指定证书的位置并在端口上执行listen
来在您的应用程序中执行此操作(大部分时间) 80,重定向/重定位到端口443
在DNS级别,您只需指定location
。在您的应用程序中或您的服务器上,您可以指定HTTP/HTTPS protocol
。作为协议本身的DNS不能在其响应中指定其他协议。 HTTPS是在您的服务器上完成的处理器密集型加密操作。
我强烈建议您使用AWS Certificate Manager为您的域分配证书。如果你想在beanstalk应用程序中使用它,请查看letsencrypt
。这是一个很棒的CLI工具。
Ubuntu + NGINX + letsencrypt
在Ubuntu上配置HTTP到HTTPS。是的,只有一个特定于操作系统的示例,但letsencrypt
随时都可以在任何地方使用。
sudo apt-get update
sudo apt-get install letsencrypt
sudo apt-get install nginx
sudo systemctl stop nginx #if it starts by default...
sudo letsencrypt certonly --standalone -n -m richard@thewhozoo.com.com -d thewhozoo.com -d cname.thewhozoo.com --agree-tos
sudo ls -l /etc/letsencrypt/live/thewhozoo.com/ #you should see your stuff in this folder
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 #make yo'self a diffie
sudo vim /etc/nginx/sites-available/default
在default
文件中
(摘自HERE和HERE以及HERE和HERE)
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name thewhozoo.com www.thewhozoo.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name thewhozoo.com www.thewhozoo.com;
ssl_certificate /etc/letsencrypt/live/thewhozoo.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/thewhozoo.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;
}
现在您的NGINX文件中包含您的证书/密钥/ pems /列出的内容,您必须仔细检查防火墙。
对于Ubuntu和ufw
,您可以通过以下方式进行访问:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
sudo ufw allow 'OpenSSH'
sudo ufw enable
sudo ufw status
您应该看到Nginx HTTPS
已启用。
无论您的HTTPS风格是什么(SSL,TLSvXX等),您都需要在防火墙级别打开端口22,因为它们都使用它,而不是'OpenSSH'
。
确保在allow 'OpenSSH'
之前运行ufw enable
。如果你不这样做......你的SSH会话将被终止并且......祝你好运。
现在你的防火墙很不错,重新启动nginx
并且应该设置:
sudo systemctl start nginx
未来有用的提示: NGINX默认情况下将续订政策设置为3个月。我不确定这是否是互联网法的“标准”,但更新证书的附件是:
将此添加到您的crontab
:
sudo systemctl stop nginx
sudo letsencrypt renew
sudo systemctl start nginx
有用的注释:
您必须将域名链接到选择 BEFORE 正在运行letsencrypt
的服务器。它执行反向IP查找以确保您是域的所有者/管理员。
您不需要加密类型的巨大列表,但我强烈建议保留大多数。椭圆曲线Diffie Hellman是上面使用的键类型必须的,但您可以将其缩小为ECDH?E
,AES
,GCM
和RSA
或{{ 1}}取决于您要支持的密码套件数量。如果您不支持SHA
且仅SSLvX
,您只需支持(并限制)以下内容:TLSvX
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5;
AWS Certificate Manager (ACM) + Elastic Load Balancer
编写NGINX策略,将HTTP流量重定向到HTTPS:
HTTPS: 443
重启NGINX
对于Elastic Beanstalk环境,请检查THIS INFO。
等待大约5分钟让所有东西都沉没,你应该好好去! Check this for help if needed