[英]How to set up ssl certificate on apache server that is running on aws ec2 WIndows server instance?
[英]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.