WEBサーバー

さくら レンタルサーバー上のWordPressのSSL化

さくらサーバーでWPをマルチサイト化し、
初期ドメインで運用している場合にのみ、最も有効な情報です。

***

大手の中では、無料SSL化が一番遅かったと思われる
さくらのレンタルサーバーだが、

つい先日、1つのドメインがお飛びあそばれた。

とは言っても、

  • セカンドページはインデックスされており、
  • Webmastertoolには、警告が来ているわけでもない

数日様子を見たところ、無事返り咲いたわけですが、

httpでアクセスされていたものが、
httpsに置き換わったようで、

トップページは表示されるものの、
セカンドページはCSSが読み込まれないなど、不具合があり、

今更、引き返せないので、いろいろ調べてみた

 

さくらサーバー専用 【WordPress】常時SSL化プラグイン

こんなものを見つけたので、入れてみた。

このプラグインの主な仕事は、

  1. .htaccess書き換え
  2. 内部のhttp:// >> https://に置き換え

お陰様で、セカンドページでもCSSを読み込み、緑のSSLマークが点灯したものの、

管理ページに入れない!!!

さくらの初期ドメインにインストールしたため、初期ドメインはSSL非対応。
しかし、常時SSL化されてしまうため、ページは表示されない・・・

 

管理画面に入るために、.htaccessを加工

RewriteCond %{ENV:HTTPS} on
RewriteCond %{HTTP_HOST} ~*.sakura.ne.jp
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

を追加したところ、管理画面には入れるようになったものの、
マルチサイトのダッシュボードに行こうとすると、ダメ・・・

>> https://xxx.sakura.ne.jp/xx/ にアクセスされる

 

単純に、サイトアドレスを、ドメイン名にしてやれば、
ログイン出来るのですが、パスワードを都度都度登録しなきゃいけないし、
Chromeだと、パスワードは保存もできるし、共有出来るが、面倒。

 

いっそのこと、ドメインごと、
別のサーバーに移してしまおうかと、頭をよぎる・・・


 

結論

対処検討中でしたが・・・

結局、SSL化したいドメインだけ、移動しました。

SSLの状態で、ログインしたい場合には、
標準で配給されたドメインは、SSL化はできないので、

マルチサイトにするには、独自ドメインをメインサイトにしないと、
とても面倒です。

-

ELBに複数のSSLを割り当てる @AWS

以前使っていたサーバーが、以前に3日ほど通信障害で、
アボンしたこともあり、年末に切れる契約を見越して、
mixhostという、サーバーに夏頃に切り替えました。

無事、移行も済んだところで、

ある日、メールが届かなくなりました!

 

普段だと、もっと届くはずなのにと思って、
別のアドレスから送ってみると、「送信エラー」が返ってきます。

1時間の送信量がオーバーしていて、rejectされている様子。

早速、サポートにメールを入れたところ、
対応に2,3日との自動応答・・・

Gmailへの転送(フォーワード)にしていたのを、
POP3で受け、サポートから、連絡が来るのを待ったところ、
制約がかかっていたということで、解除されました。

「無料期間からの移行時に、解除できてなかった」と言っていますが、
無料期間後、数ヶ月転送出来ていました。
明確な回答もなく、自分で制御できないのも不安すぎるので、
mixhostを捨てて、AWSに移行することにしました。


さて、本題です。

1年前、AWSを使いはじめました。
最低限の機能しか、使っていませんが、

一般的には、1サーバー・1ドメインが普通だと思います。

1サーバー・複ドメインでも、もちろん運用出来ますが、
SSL化すると問題が発生します。

解決策としては、

  1. お金で解決
  2. 技術的に何とかする

です。

***

冗長性のために、サーバー2台。上にロードバランサーを置いて運用しています。

 

AWSのELB(エラスティック・ロードバランサー)には、
1つのSSL証明書しか、割当が出来ません。
お金のある人は、ロードバランサーを複数契約してもらえば、
苦労することなく、SSL化が可能なんですが、

ひと月$20もするので、SSLを付けて1つのELBで運用できる方法を探しました。

※AWSに聞いても、出来るかも。という解答で、答えはくれませんでした。今思えば、教えたくなかったのかも?!

 

Cloudfront(CDN)は、無制限でSSLを付けることが出来ます。
なので、CloudfrontのOriginをELBに指定し、SSLを割り当て運用するのですが、
ドメイントップで、Cloudfrontを作っても、Route53で割当が出来ませんでした。(1年前)

 

サブドメイン(wwwなど)を付けると、割当が出来たので、
当時は、ケツの余裕がなかったので、wwwを付けて運用してきたのですが、
今回の移行に当たり、見た目「www」邪魔なので、
試しに、もう1度、

トップドメインでCloudfrontで証明書を作り、
Route53で割当を試みたところ、あっさり割当完了!

以前は、AliasにCloudfrontの名前が出てこなかったのですが、
出来て当然のことなので、
きっと、去年の私は、何か間違っていたのかもしれません。

 

Cloudfrontに割り当て出来るSSLの上限は、10 x 10個

去年、ものすごく時間をかけて、
1つのELBにSSLを割り当てる方法を試行錯誤したのですが、
Certificate Managerの仕様に、わりと悩まされます。
というのも、1つずつSSLの証明を発行していたところ、
10個でエラーが表示されるようになりました。

回避するには、「この証明に別の名前を追加」で、追加していきます。
30ほど、まとめて登録しようとしたら、エラーに。
10+1でエラーだったので、追加できるのは 9が上限みたいです。(計10個)

しかし、不要になったドメイン証明書を個別に消すことは出来ないので、
作り直すしかありません。

しかし、11個目の証明書を作ろうとすると、余裕が無いためエラーになるので、
1つは予備として、9実質90個)が上限となります。

 

証明書を発行したら、Cloudfrontで証明書の入替え。

去年は、1つ1つDisable >> Deleteし、再作成。
Route53も再割り当てと、ものすごく面倒なことをしていましたが、
対象のCloudfrontのGeneralから、SSLを切り替えるだけでOKです。

今回、ワイルドカード証明書の発行ができることを知りました。
省略出来るのならと、
*.shoroji.com (*.shoroji.net)などと作っていったのですが、
ネイキッドドメイン(wwwなし)の場合、該当しないため、
shoroji.com (shoroji.net)の証明書も、必要となります(計4つになる)

過去に、wwwを付けて運用してきたので、
wwwなしのネイキッドで動かすためには、2つの証明書が必要になります。
www.shoroji.com リダイレクト shoroji.comで、1年ぐらいかけて、移行する必要がありそうです。
ワイルドカード指定の場合でも、ネイキッドも含めてくれたら良かったのに。

 

S3を使ったリダイレクト

WordPressだと、サイトURLをhttp://shoroji.comに書き換えれば、
勝手にやってくれますが、
S3を使ってすることが出来るようです。

S3のバケットに、www.shoroji.comを作成し、
プロパティより、Static website hostingで設定

あとは、Cloudfrontから、www.shoroji.com のエイリアスを、上記S3のバケットに割り当てるだけ。

参 >> ネイキッド・ドメインのリダイレクトをRoute53 + S3で実現する

***

初めからすべて完璧にはできません。動かないときは、イラッとしますが、
いろいろ試行錯誤を重ねていくことで、
少しづつ、理解が深まっていくのは、良いですね。

-