Ubuntu環境、ApacheとTomcatでhttp接続をhttps接続に変換する。
関連ページ
X(旧Twitter)では、プロフィールに自分のサイトを打ち込んだ場合、何故か強制的にhttp表記に書き換えられるという謎の仕様がある。
仮にhttps://unity-engineer.topと打ち込んでも、http://unity-engineer.topに変換させられる。
今時のGoogleChromeではhttpのサイトに移動すると「危険なサイトです」みたいな警告が出るので、http接続は避けたい。
この記事ではApacheとTomcatが連携されているのを前提とし、RewriteRuleを使ってhttp接続を強制的にhttps接続に変換していく。
対象サイトのVirtualHostにRewriteRuleを追記
RewriteRuleはhttpd.conf(Ubuntuでは/etc/apache2/apache2.conf)に記すのが一般的らしい。
ただ複数サイトを運営しているとVirtualHostに記載した方が便利で、UbuntuではVirtualHost専用のファイル群がある。
/etc/sites-available/ディレクトリにあるファイルがそれで、今回は/etc/sites-available/default-ssl.confをコメントアウトして書き換えてしまう。
たぶん自分の脳内で管理できれていれば、000-default.confに打ち込んでも、自分で作ったconfファイルに打ち込んでも何でもいい。
viコマンドでファイを開き、ポート80(http接続)とポート443(https接続)のVirtualHost設定を行う。
下の設定では、ポート80接続した時にはApacheがTomcatには繋がずに、Apacheのポート443接続へそのまま受け流す。
LoadModule
proxy_module
/usr/lib/apache2/modules/mod_proxy.so
LoadModule
proxy_http_module
/usr/lib/apache2/modules/mod_proxy_http.so
LoadModule
ssl_module
/usr/lib/apache2/modules/mod_ssl.so
#強制的にhttps接続へ受け流す。
<VirtualHost
*:80>
DocumentRoot
/var/www/
ServerName
unity-engineer.top
ErrorLog
/var/log/apache2/unity-engineer.top.error.log
CustomLog
/var/log/apache2/unity-engineer.top.access.log
combined
RewriteEngine
On
RewriteCond
%{HTTPS}
off
RewriteRule
^(.*)$
https://%{HTTP_HOST}%{REQUEST_URI}
[R=301]
</VirtualHost>
#https接続でもhttp接続でもこちらを通る。
<VirtualHost
*:443>
DocumentRoot
/var/www/
ServerName
unity-engineer.top
ErrorLog
/var/log/apache2/unity-engineer.top.error.log
CustomLog
/var/log/apache2/unity-engineer.top.access.log
combined
SSLEngine
on
SSLProtocol
all
-SSLv2
SSLCertificateFile
[unity-engineer.top の cert.pem(SSLサーバー証明書)の path]
SSLCertificateKeyFile
[unity-engineer.top の privkey.pem(秘密鍵)の path]
SSLCertificateChainFile
[unity-engineer.top の chain.pem(中間証明書)の path]
ProxyRequests
Off
SSLProxyEngine
On
ProxyPass
/
https://unity-engineer.top:
[Tomcatのhttpsポート設定]
/
[Tomcatのwebapps下サイトディレクトリ]
ProxyPassReverse
/
https://unity-engineer.top:
[Tomcatのhttpsポート設定]
/
[Tomcatのwebapps下サイトディレクトリ]
</VirtualHost>
一応RrewiteのModuleのコードからOnにしておく
再起動して完了
sudo service apache2 restart
これでXからhttpのサイトへ接続したとしても、内部的にhttps接続に切り替わる。
0
0