簡體   English   中英

ELB的AWS證書管理器,指向在EC2上運行的Apache服務器

[英]AWS Certificate Manager for ELB pointing to a Apache Server Running on EC2

我正在閱讀證書管理器的aws文檔。 我可以為ELB關聯SSL證書。 我已經這樣做了,我的應用程序仍然駐留在部署在Ubuntu EC2服務器上的Apache服務器上。

在此輸入圖像描述

在文檔中它有以下內容,

注意當前,ACM證書與Elastic Load Balancing負載均衡器或Amazon CloudFront分配相關聯。 雖然您在Amazon EC2實例上安裝了您的網站,但您並未在那里部署ACM證書。 而是在您的Elastic Load Balancing負載均衡器或CloudFront分配上部署ACM證書。

據我所知,這意味着我們可以在EC2上部署應用程序,並將其添加到具有ACM證書的負載余額下。

這就是您需要為Web應用程序運行SSL所需的全部內容。

但是當我不使用這種方法時,我使用以下Apache配置來配置SSL。

<VirtualHost *:80>
        DocumentRoot /var/www/html/
        ServerName example.com
        ServerAlias example.com
        ErrorLog ${APACHE_LOG_DIR}/diyoron-error_log
        CustomLog ${APACHE_LOG_DIR}/diyoron-access_log common


        <Directory /var/www/html/>
                RewriteEngine on
                RewriteCond %{HTTPS} off
                RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R]
        </Directory>

</VirtualHost>

<VirtualHost *:443>
        # ServerAdmin webmaster@example.com
        DocumentRoot /var/www/html/

        ServerName example.com
        ServerAlias example.com
        ErrorLog ${APACHE_LOG_DIR}/example-error_log
        CustomLog ${APACHE_LOG_DIR}/example-access_log common
        SSLEngine On

        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
        SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

</VirtualHost>

但在我目前的安排中,我無法在我的Apache配置中配置SSLCertificateKeyFile,SSLCertificateChainFile,SSLCertificateFile。

如果有人能指引我走上一條非常受歡迎的正確道路。

AH00016: Configuration Failed
[Fri Apr 21 23:14:01.184314 2017] [ssl:emerg] [pid 1190] AH02572: Failed to configure at least one certificate and key for example.com:443
[Fri Apr 21 23:14:01.184826 2017] [ssl:emerg] [pid 1190] SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned
[Fri Apr 21 23:14:01.184834 2017] [ssl:emerg] [pid 1190] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error.log for more information

您將在您的ELB上終止SSL並將其配置為將HTTP和HTTPS請求轉發為HTTP(到您的實例的端口80):

在此輸入圖像描述

因此,您將不再需要<VirtualHost *:443>

此外,在您的Apache配置中,在<VirtualHost *:80>您將用戶重定向到https://如果連接未使用SSL / TLS(順便說一句,該條件是不必要的,請求將永遠不會達到該點,如果它是使用https - 您可以無條件地重定向它)。 這是不可能的,因為從apache的角度來看,所有傳入的連接都使用http://

要確定客戶端和負載均衡器之間使用的協議,請使用X-Forwarded-Proto請求標頭(Elastic Load Balancing將客戶端和負載均衡器之間使用的協議存儲在X-Forwarded-Proto請求標頭中並傳遞標頭到你的服務器):

RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM