ブログ

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

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

nginxとは apacheやIISと並んで最近注目されているWEBサーバーエンジン。   nginx=エンジンエックスと呼ぶ   アクセスごとにプロセスを起動するapacheとは …

no image

tmp領域のチューニング

MySQLのCPU使用率が300%()を超える事態に襲われている。 原因をいろいろ調査するも、明確な打開策は見いだせず そんな中、見つけたのがtmp領域のチューニング。 http://k-1-ne-j …

no image

AWS SESサービスを使ってみる

AWSに最近登場したサービスSES メール送信サーバ(SMTP)です。 メールサーバを作るには、DNSの仕組みを理解する必要があったり、なかなか曲者。 迷惑メール対策も必要なんだけど、マニュアルも難し …

no image

EC2にGitを導入

EC2にGitを導入です。 Gitとはバージョン管理ツールです。 Svnの類似品と考えるとわかりやすいかな。 GitとSVNの違いはローカルリポジトリの有無。 ローカルリポジトリに一旦入れた後、まとめ …

no image

nginx(エンジンエックス)の性能を検証してみた

nginx性能検証 workerプロセスで大量アクセス処理に向いていると評判のnginx 性能検証をしてみた。   検証環境 ◎サーバー さくらVPS 16G プラン OS:CentOS6 …