ブログ

SNI SSLでの常時SSLにご注意を(さくらレンタルサーバー)

投稿日:

SNIタイプSSLでの常時SSL化をするときの注意点をご紹介!

 

SSLとは

SSLとは、HTTPによる通信を暗号化するプロトコルです。HTTPSと表現され、WEBサーバーとのデータのやり取りを暗号化します。それにより、セキュアで安全な接続が約束されます。

 

ECサイトや楽天などのショッピングモールを利用すると、かならず会員情報を入力する機会があると思います。会員情報は個人情報であり、非常に重要な情報です。それを不正に傍受されてしまうと、個人情報の漏洩につながります。

 

さらには、ネットショッピング中に入力するクレジットカード情報も重要な個人情報の1つです。

 

ネットショップをするときに、サイトのURLがhttps://~になっているかご確認ください!

 

SNI SSLとは

SSLとは通常グローバルIPアドレス1つに対して1つしか利用できません。1ドメインあたり1つのIPアドレスを割り当てるので、ドメイン単位でSSLを使用するためには『1SSL=1IPアドレス=1ドメイン』の関係性が通例でした。ただしレンタルサーバのように、1つのサーバーで複数のサイトを運営するような場合には、サイト分のグローバルIPアドレスが必要となります。

 

グローバルIPアドレスは有限なので、いずれは枯渇するとまで言われており、多くのサイトを抱えるレンタルサーバーにとっては悩みの種とも言われてきました。

 

それを解消するために出てきたのが「SNI SSL」です。

 

SNI=Server Name Indication

 

IPアドレスは1つでも、ドメイン名単位でSSL証明書が利用できる。というものです。これを活用することにより『1SSL=1IPアドレス=複数ドメイン』となり、IPアドレスの節約につながるのです。

 

CMSでは要注意

WordPressやEC-CUBEなど無料で使えるCMSが流行していますが、SNI SSLのサーバーにおいては運営(動作)にが出てきます。

 

たとえば、 http://exsample.com というドメインに対してSNI SSLを使用するとします。

 

通常のサーバーですと、、

 

https://exsample.com でアクセスすると、サイト内部にもhttps://exsample.com でアクセスされます。

 

SNI SSLサーバーですと、、

 

https://exsample.com でアクセスすると、内部的に自動的に変換されてサイト内部にはhttp://exsample.com でアクセスされます。

 

つまり、https扱いが外れてしまうのです!(ブラウザでの見た目は httpsのままです)

 

したがって、CMS内で強制SSL処理をしている場合、無限ループに陥る可能性があります。

 

対処法(さくらレンタルサーバーの場合)

この対処はだめ

おもに常時SSL化をするのに使われる手法が .htaccess 内で制御する方法ですね。

%{HTTPS} という変数がON/OFFで判定して、Rewriteさせるのが一般的です。

 

ただ、このやり方だと、%{HTTPS}が外れてしまう(=OFF)になるので、毎回NGとなり無限ループになります。

 

▼これは駄目です。正常に動作しません。

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://exsample.com/$1 [R=301,L]

 

この対処がお勧め

さくらレンタルサーバーの場合は、SNI SSLでアクセスがあると%{HTTP_X_SAKURA_FORWARDED_FOR}変数がセットされてきます。
HTTP_X_SAKURA_FORWARDED_FORの値の有無で判断する対処法が安全です。

 

▼この方法がおすすめ

RewriteCond %{ENV:HTTPS} !^on$
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^ https://exsample.com{REQUEST_URI} [R=301,L]

 

もちろん、PHPファイル内部で、$_SERVER変数を使って判断しても大丈夫です。

とにかくHTTP_X_SAKURA_FORWARDED_FORを使って判断する!ということが重要なのです (^^)

 

◎さくらレンタルサーバー SSL利用時の注意点

公式サイト上でも公開されています。

 

「さくらのレンタルサーバ」にて提供しているウェブサーバ (Apache) は、
80番ポートを使用するものと、443番ポートを使用するものとの 2種類に分けられます。
一般的に、80番ポートは「http://」、443番ポートは「https://」という形式でアクセスされ、
「https://」についてはプロクシとして動作します。
そのため、同じディレクトリへのアクセスであっても、その際に呼び出されるウェブサーバ が異なると、 CGIプログラムやウェブサーバが.htaccessなどのファイルを読み込む際、挙動に違いが生じます。
例えば、HTTPとしてアクセスした場合はお手元のコンピュータが、 HTTPSとしてアクセスした場合はサーバそのものがアクセス元となります。
このため、SSLのみのアクセス許可(HTTPアクセスの制限)や、mod_rewriteによるURLの書き換えはできません。

▼公式URL

https://help.sakura.ad.jp/hc/ja/articles/206207221-SSL%E5%88%A9%E7%94%A8%E6%99%82%E3%81%AE%E6%B3%A8%E6%84%8F%E7%82%B9

 

-ブログ

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Jaws-UG 北陸勉強会 at 金沢

Jaws-UGのセミナーに来ました。 金沢のITビジネスプラザです。 本格的に使い始めてからの参加なので、少々気持ち的にも違います。 本当にいろいろ出来るインフラアーキテクトが面白い。 けど、底なしな …

no image

centos6系にyumでnginxをインストール

目次 nginxとはyumでインストールリポジトリインストール本体インストールインストール確認(バージョン確認)nginxを使うならVPS関連 nginxとは apacheやIISと並んで最近注目され …

no image

セッションタイムアウトを設定する

セッションタイムアウトと聞くとまず思いつくのがhttpdのセッションタイムアウト。 ec2のhttpdのデフォルトは60秒になっている。 WEBアプリのCSVアップロードを試したところ、60秒では全く …

no image

迷惑な来客者「regular.bot」bashの脆弱性問題

世間を騒がせているBashの致命的な脆弱性。 CNET|Japanや、IPAでも注意を呼びかけています。 http://japan.cnet.com/news/service/35054245/ ht …

no image

nginxを導入してみた

世界的にメジャーなWEBサーバといえば apache (Apache Software Foundation!) IIS (Microsoft) apacheはLinux系のWEBサーバなら大抵の人が …