数時間後、ついに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