몇 시간 후 마침내 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단계를 이미 수행했을 수도 있음).
라우터에서 포트 80을 허용합니다.
포트 80을 서버로 전달하십시오.
방화벽에 구멍을 뚫습니다.
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
포트 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>
할 수 있게 하다
mod_rewrite
:sudo a2enmod rewrite
예를 들어 HTTP에서 HTTPS로의 리디렉션을 정의합니다.
RewriteCond %{HTTPS} !on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301]
4단계를 완료했습니다.
마지막으로 Apache를 다시 시작하십시오.
sudo service apache2 restart