やっと余裕ができたので、VALUE-SERVERの無料SSLでサイトをSSL化した。
個人的なサイトであるinterdb.jpは静的サイトでポータビリティを重視してきたのでSSL化も簡単なはずであるが(実際簡単だった)、 やり方を検索するとwordpressを使った方法ばかりで、個人的には分かり難かったので備忘録的にまとめることにする。
ポイントは3つ。
(1) 「ドメインウェブの設定」ではHTTPとHTTPSの設定は両立できないので、HTTPの設定は空白にし、HTTPSの設定のみにする必要がある。
(2)HTTPS設定ではpublic_htmlディレクトリ以下に作成されるドメイン名 (www.interdb.jpなど)と同じ名称のサブディレクトリ以下にコンテンツを移動しなければならない(HTTPではpublic_htmlがhttpdのルートディレクトリ)。
(3) HTTPでのアクセスをHTTPSへリダイレクトするには、 public_html/.htaccessを使う。
1. ドメインウェブの設定
VALUE SERVERコントロールパネルの「ドメインウェブの設定」でSSL用ドメインに情報入力する。 基本的にはHTTPの設定(Main+Sub1)を削除して、それらをHTTPS(SSL:Sub6+Sub7)に設定すれば良い。もちろんSub7の転送先URLは"https"に変更する。
変更したら「ドメイン設定をする」ボタンを押す。
2. 無料SSLの設定
3. コンテンツの移動
上の「ドメインウェブの設定」によってpublic_htmlディレクトリ以下にドメイン名と同じディレクトリ(ここではwww.interdb.jp/)が作成されるので、sshでサーバにログインし、この(新たに作成された)ディレクトリにコンテンツを移動する。
$ cd public_html $ pwd /virtual/XXXXX/public_html $ tar cvf - * | gzip -9 > backup.tgz $ cd www.interdb.jp/ $ tar xvfz ../backup.tgz
public_html上でmvコマンドを使って移動してもよいが、ここでは安全策をとって一度コンテンツをtar zipで固め、それを展開することにした。
(tar zipファイルは一旦、ローカルに保存。万が一問題が発生した場合には、ディレクトリごとtar zipファイルで復元するつもりだった。)
4. .htaccess ファイルの設定
httpプロトコルでのアクセスをhttpsにリダイレクトするため、public_html/.htaccess ファイルに以下のような行を追加する。
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://www.interdb.jp/$1 [R=301,L] RewriteCond %{HTTPS} on RewriteCond %{HTTP_HOST} ^interdb\.jp$ RewriteRule ^(.*)$ https://www.interdb.jp/$1 [R=301,L]
ドメイン名は適宜。
public_html/.htaccessということに注意。public_html/www.interdb.jp/.htaccessは不要。