通过 ACM 将 SSL 证书问题添加到 ubuntu 机器上的 Apache 虚拟主机
Adding SSL certificate issues by ACM to Apache virtual host on ubuntu machine
我正在试用 ACM 的 SSL 证书。
我已经为一个域 'prod.yp-uae.waveaxis.space' 申请了一个 public 证书
负载均衡器。我还将 Https 侦听器添加到负载平衡器。
ACM 仪表板显示正在使用的证书。
但是在浏览器中使用域名时显示不正常不安全linkhttp://prod.yp-uae.waveaxis.space/
我猜是因为我在apache2上设置了虚拟主机。
下面是我的虚拟主机的代码:
<VirtualHost *:80>
ServerName prod.yp-uae.waveaxis.space
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8380/
ProxyPassReverse / http://127.0.0.1:8380/
</VirtualHost>
#<VirtualHost *:443>
#</VirtualHost>
我知道配置 443 端口如下(只是一个例子)
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile "/var/www/www.foo.com/ssl/server.crt"
SSLCertificateKeyFile "/var/www/www.foo.com/ssl/server.key"
我想知道的是如何在我的 Ec2 机器上为变量获取我的 ACM SSL 证书
'SSLCertificateFile' 'SSLCertificateKeyFile'?
或
我是不是也遗漏了其他部分?
这是我的 ALB 的安全组:
通常,如果您已在 ALB 上部署了 SSL 证书,则 您的 EC2 实例上不需要 SSL 证书。原因是 ALB 将 终止 您的 SSL/HTTPS 连接,然后它会将其作为常规 HTTP (non-SSL) 连接转发到您的实例。在这种情况下,流量为:
client---(HTTPS)-->ALB----(HTTP)--->EC2 instances
此设计简化了大量手动设置 SSL 证书和off-loads将其处理到 ALB 的工作。
因此,如果在 ALB 和实例之间使用 HTTPS 并不是真正的要求,那么让 Apache 在端口 80.[=14= 上提供常规 HTTP 流量就更容易了]
The thing I am wondering on is how can I get my ACM SSL certificate
很遗憾,您无法访问 ACM 证书,因为它们 can only be used 在负载均衡器、CloudFront 分发和 API 网关上。这意味着您不能在实例.
上使用它
但是,如果您确实需要 end-to-end HTTPS,那么您应该在实例上生成并部署自己的 self-signed SSL 证书。这将需要一些设置,但您的连接将是:
client---(HTTPS)-->ALB----(HTTPS)--->EC2 instances
但是,通常不会这样做,在大多数情况下,ALB 和实例之间使用 HTTP 的第一种情况就足够了。
要根据我们的讨论添加到@Marcin 答案中,您需要确保在 JavaScript 中提供资产和参考域以使用 HTTPS 协议而不是 HTTP 协议(目前正在使用) .
如果用户通过 HTTPS 访问网站,任何使用 HTTP 的请求都可能因“混合内容”而被阻止,这将阻止您的网站加载这些资源。当站点也通过纯文本 (HTTP) 加载时,这会起作用。
如果这些也通过 HTTPS 加载,那么 Marcins 解决方案将适合您。此外,您引用的是 IP 地址而不是可以为 HTTPS 请求提供服务的域,这应该进行调整,因为我假设这是 EC2 主机的 IP 而不是负载均衡器。
我正在试用 ACM 的 SSL 证书。
我已经为一个域 'prod.yp-uae.waveaxis.space' 申请了一个 public 证书 负载均衡器。我还将 Https 侦听器添加到负载平衡器。
ACM 仪表板显示正在使用的证书。
但是在浏览器中使用域名时显示不正常不安全linkhttp://prod.yp-uae.waveaxis.space/
我猜是因为我在apache2上设置了虚拟主机。 下面是我的虚拟主机的代码:
<VirtualHost *:80>
ServerName prod.yp-uae.waveaxis.space
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8380/
ProxyPassReverse / http://127.0.0.1:8380/
</VirtualHost>
#<VirtualHost *:443>
#</VirtualHost>
我知道配置 443 端口如下(只是一个例子)
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile "/var/www/www.foo.com/ssl/server.crt"
SSLCertificateKeyFile "/var/www/www.foo.com/ssl/server.key"
我想知道的是如何在我的 Ec2 机器上为变量获取我的 ACM SSL 证书 'SSLCertificateFile' 'SSLCertificateKeyFile'?
或
我是不是也遗漏了其他部分?
这是我的 ALB 的安全组:
通常,如果您已在 ALB 上部署了 SSL 证书,则 您的 EC2 实例上不需要 SSL 证书。原因是 ALB 将 终止 您的 SSL/HTTPS 连接,然后它会将其作为常规 HTTP (non-SSL) 连接转发到您的实例。在这种情况下,流量为:
client---(HTTPS)-->ALB----(HTTP)--->EC2 instances
此设计简化了大量手动设置 SSL 证书和off-loads将其处理到 ALB 的工作。
因此,如果在 ALB 和实例之间使用 HTTPS 并不是真正的要求,那么让 Apache 在端口 80.[=14= 上提供常规 HTTP 流量就更容易了]
The thing I am wondering on is how can I get my ACM SSL certificate 很遗憾,您无法访问 ACM 证书,因为它们 can only be used 在负载均衡器、CloudFront 分发和 API 网关上。这意味着您不能在实例. 但是,如果您确实需要 end-to-end HTTPS,那么您应该在实例上生成并部署自己的 self-signed SSL 证书。这将需要一些设置,但您的连接将是: 但是,通常不会这样做,在大多数情况下,ALB 和实例之间使用 HTTP 的第一种情况就足够了。
client---(HTTPS)-->ALB----(HTTPS)--->EC2 instances
要根据我们的讨论添加到@Marcin 答案中,您需要确保在 JavaScript 中提供资产和参考域以使用 HTTPS 协议而不是 HTTP 协议(目前正在使用) .
如果用户通过 HTTPS 访问网站,任何使用 HTTP 的请求都可能因“混合内容”而被阻止,这将阻止您的网站加载这些资源。当站点也通过纯文本 (HTTP) 加载时,这会起作用。
如果这些也通过 HTTPS 加载,那么 Marcins 解决方案将适合您。此外,您引用的是 IP 地址而不是可以为 HTTPS 请求提供服务的域,这应该进行调整,因为我假设这是 EC2 主机的 IP 而不是负载均衡器。