https 서비스를 제공하도록 Apache를 구성하는 방법은 무엇입니까?

https 서비스를 제공하도록 Apache를 구성하는 방법은 무엇입니까?

몇 시간 후 마침내 SSL 인증서를 사용하도록 Apache를 구성했지만 구성에 문제가 있음을 발견했습니다. 다음 주소를 입력하여 Google Chrome에서 내 도메인에 액세스하려고 하면 다음 경고가 표시됩니다.

 erichermansson.com

 Forbidden
 You don't have permission to access / on this server. 

하지만 Google Chrome에 다음 주소를 입력하면 내 인증서를 사용하여 서버와 해당 서버에 액세스할 수 있습니다.

 https://erichermansson.com

내가 뭘 잘못했나요?

이것은 내 가상 호스트입니다.

 <VirtualHost *:443>
ServerAdmin [email protected]
ServerName erichermansson.com
ServerAlias www.erichermansson.com
SSLEngine ON
SSLCertificateFile /www/erichermansson.com/ssl/erichermansson.com.crt
SSLCertificateKeyFile /www/erichermansson.com/ssl/erichermansson.com.key
DocumentRoot /www/erichermansson.com/html/
ErrorLog /www/erichermansson.com/logs/error.log
CustomLog /www/erichermansson.com/logs/access.log combined
<Directory /www/erichermansson.com/html/ >
     Options FollowSymLinks
     AllowOverride All
     Order deny,allow
     Allow from all
 </Directory>
</VirtualHost>

답변1

HTTP를 HTTPS로 리디렉션하려면 다음이 필요합니다(처음 3단계를 이미 수행했을 수도 있음).

  1. 라우터에서 포트 80을 허용합니다.

  2. 포트 80을 서버로 전달하십시오.

  3. 방화벽에 구멍을 뚫습니다.

    sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    
  4. 포트 80에 대한 VirtualHost 정의(및 443):

    <VirtualHost *:80>
      ServerName             erichermansson.com
      ServerAlias            www.erichermansson.com
      RewriteEngine          on
      RewriteCond            %{HTTP_HOST} ^www\.(.*)$ [NC]
      RewriteRule            ^(.*)$ https://%1/$1 [R]
      RewriteCond            %{HTTPS} !on
      RewriteRule            ^/?(.*) https://%{SERVER_NAME}/$1 [R=301]
    </VirtualHost>
    
    <IfModule mod_ssl.c>
    
      <VirtualHost *:443>
    
      ... your code here ...
    
      </VirtualHost>
    
    </IfModule>
    
  5. 할 수 있게 하다 mod_rewrite:

    sudo a2enmod rewrite
    
  6. 예를 들어 HTTP에서 HTTPS로의 리디렉션을 정의합니다.

    RewriteCond            %{HTTPS} !on
    RewriteRule            ^/?(.*) https://%{SERVER_NAME}/$1 [R=301]
    

    4단계를 완료했습니다.

  7. 마지막으로 Apache를 다시 시작하십시오.

    sudo service apache2 restart
    

관련 정보