1.SSL化への圧力迫る-能書き

  Topへ↓

いよいよ、サイトのSSL化が避けられなくなってきました。
数年前からGoogle社が推奨してきたSSL化の流れは、徐々に加速しつつあるようです。
最初は推奨文書のアップから始め、次いで、Chrome上のアドレス欄にアラートを出し、
ついには混合コンテンツをブロックするという施策を打ち出しました。
https://security.googleblog.com/2019/10/no-more-mixed-messages-about-https_3.html

今回は混合コンテンツのブロックだけですみました。ですが、そもそも非SSL化されていないhttp://~のサイトについても、やがて見られなくなる日が来るでしょう。
こちらのリンク先でもそうした懸念が表明されています。
https://support.google.com/chrome/thread/18761336?hl=ja

この問題についてはさまざまなサイトが以前から見解をアップしてくださっています。
そうしたサイトのどれもが共通で認識していること。それは非SSL化のサイトが駆逐されるのは時間の問題だということです。
https://www.future-shop.jp/magazine/info-mixed-content

2.アルファメールの残念さ

  Topへ↓

そうした流れは数年前から弊社も把握していました。サイト制作からシステム構築へと弊社の業態を転換させてきた間も。
ところが、弊社のサイトがSSL化されたのはつい先日。1月の半ばになってからのことでした。後発も後発です。なぜか。

それは、弊社のサイトを置いているホスティングサービスの制限によるものでした。
弊社は2008年から大塚商会さんのアルファメールを使い続けてきました。その理由は代表が前職で大塚商会さんのサービスを多数導入してきた実績があり、そのご縁で代理店として契約していたからです。

ところが残念なことに、アルファメールのサイトが進化するスピードはあまり褒められたものではありませんでした。
上記のようなSSL化の流れが明確になってからも、アルファメール上で独自SSLが設置できる兆しは現れません。
※アルファメールプレミアでは設置可能でした。
※共用SSLであれば可能でした。

このままでは弊社サイトのみならず、提供したお客様のサイトにも影響が出かねない。
それを危惧して何度か改善をお願いしていました。大塚商会さんのサイトには以下のエントリがあるのに、と思いながら。
https://mypage.otsuka-shokai.co.jp/contents/business-oyakudachi/it-security-course/2018/10.html

平成三十年の11月、以下のようなプレスリリースが出されました。待ちに待った後継サービスです。
アルファメール2には、他の大手ホスティングサービスの価格帯に見合った同等の機能が備わっているに違いない。そう期待していました。
https://www.otsuka-shokai.co.jp/corporate/release/2018/181015.html

ところが残念ながら、アルファメールからアルファメール2へのサイトデータの載せ替えツールが提供されることはありませんでした。つまり、サイトデータもデータベースも自分で載せ替えなければならないのです。
そして、独自SSLはアルファメール2で可能になったとはいえ、有料の証明書サービスを導入しなければならないことも判明しました。

正直に申し上げて、これではお客様に勧められないと思いました。
さらに、弊社サイトのホスティングも別の場所に変えようかと真剣に検討しました。

3.アルファメール2への載せ替え

  Topへ↓

結局、弊社サイトは別のサービスに切り替えず、アルファメールからアルファメール2に乗せ換えました。
理由は、弊社がお勧めしたお客様への責任です。
お客様がアルファメール2への載せ替えを選択した場合、弊社でも作業ができるよう、実例を作っておかねば、と思ったのです。

それにあたり、アルファメールからアルファメール2への載せ替えは自分で行いました。
移行にあたっては、WordPressも少し古いバージョンを使っていましたが、バージョンを最新にしました。
WordPressにも移行用のプラグインはあるようですが、今回はそれを使わずに移行を行いました。
phpMyAdminを使い、データベースの構造とデータをsqlファイルとして保存し、それを新サーバー側に取り込みます。
FTP経由のダウンロードとアップロードに時間がかかりましたが、移行自体の作業は1日程度で終わりました。
※アルファメール2へのサーバー移行については、アルファメールユーザーに大塚商会さまからご案内メールが出されています。その方法はこの記事には載せません。WordPressのサーバー移行で検索してもらえれば、いくつか記事が見つかると思います。

4.独自SSLへの障害

  Topへ↓

問題は、独自SSLです。
アルファメール2が推奨する証明書は、サイバートラスト株式会社が提供する「Sureserver」「SureserverEV」の二つが利用できるようです。
それぞれ月額で3,800円/4,800円が必要です。
この価格設定だと間違いなく他社のホスティングのほうが値ごろです。ワンクリックで独自SSLを実装できて、スペックも優れたサービスがありますので。

弊社としてもこの金額を支出する必要は感じませんでした。
なので、調べました。福島県お試しテレワークツアーで訪れたco-ba koriyamaでテレワークの一環として。
そして、見つけました。無料で独自SSLの証明書を取得し、アルファメール2に適用する方法を。

5.独自SSLの導入準備

  Topへ↓

以下にその方法をご紹介します。
ただし、この作業は自己責任でお願いします。当方では皆さまが行った作業に対して責任はとれません。
また、この方法はLet’s Encryptを使用します。Let’s Encryptとはフリーで自動化されたオープンな認証局をうたっています。https://letsencrypt.org/ja/
そして、Let’s Encryptで発行された証明書の有効期間は90日間です。つまり、90日おきに証明書を取得し、それをウェブサーバーに適用させねばなりません。
その作業が煩雑なため、自動で処理を行うスクリプトも用意されています。が、アルファメール2ではその方法が使えません。その点をまずご留意願います。

まず、契約情報から、ログイン情報を取得します。

その上でアルファメールの会員サイトにログインします。

アルファメール2になって一新された会員サイトに独自SSLのアイコンがあります。これをクリックします。

続いての画面では「独自SSL設定」ボタンをクリックします。
※「CSRの作成」ボタンは使いません。

すると「SSLサーバ証明書」「中間認証局証明書」「秘密鍵」の三つの入力欄が表示されます。

ここでLet’s Encryptの出番です。調べてみると、Let’s Encryptの使用方法として王道なのは、サーバーにSSHでログインし、コマンドで任意の場所に秘密鍵を生成する方法です。
しかし、アルファメール2の場合、SSHログインはできません。また、FTP経由でも秘密鍵を置けるディレクトリにはアクセスできません。

しょせん、自分でサーバーの内部にアクセスできないアルファメール2のようなホスティングサービスで、無償で独自SSLを使おうとするのが間違いなのでしょうか。

いえ、あるのです。
Let’s EncryptにはWindows向けクライアントがあります。
https://github.com/PKISharp/win-acme/releases

6.win-acmeの導入

  Topへ↓

上のページからインストーラーがダウンロードできます。私がインストールした時点では、v2.1.2.641が最新版でしたが、本稿をアップした2020/2/4のタイミングではv2.1.3.1が最新版のようです。
上のページにはzipファイルが四つ並んでいます。


win-acme.v2.1.3.671.x64.pluggable.zip
win-acme.v2.1.3.671.x64.trimmed.zip
win-acme.v2.1.3.671.x86.pluggable.zip
win-acme.v2.1.3.671.x86.trimmed.zip
お使いのWindowsが64ビットバージョンの場合は、x64がファイル名に含まれる上の二つが対象です。32ビットバージョンの場合は、x86がファイル名に含まれる下の二つが対象です。
また、trimmedとpluggableの違いは以下の記述にあるように、フル機能が使えるかどうかです。今回はpluggableを選びました。

Release distribution changes

You may notice that the downloads are different previous releases. We renamed the downloads for plugins to make it more obvious that these are not the main program. Aslo we now distribute four versions of win-acme. There are x86 (32 bit) and x64 (64 bit) executables, and for each of those there is a trimmed release optimized for size and a pluggable version that contains the full .NET Core 3 runtime, which most plugins are expected to need. So if you are downloading/developing extra plugins, this is the version you will want.

ダウンロードしたzipファイルを任意の場所で解凍します。

続いて、解凍したフォルダのwacs.exeを管理者権限で実行してください。マウスの右クリックで管理者権限で実行のメニューが出てくるはずです。

実行するとコマンドプロンプトのウィンドウが起動します。そこでコマンドを対話式で操作していきます。

ここでは、新たな秘密鍵を作成したいので「m」を入力し、Enterキーを押してください。

続いてこのような画面がでます。1:手動入力 2:他のプログラムで作られたCSRを使用のどちらかを選ぶようです。

ここでは手動で登録したいので「1」を入力し、Enterキーを押してください。

続いてこのような画面がでます。SSLを適用させたいドメインを入力します。
例えば
http://www.domain-**-domain.jp を
https://www.domain-**-domain.jp と表示させたい場合、
www.domain-**-domain.jp
と入力してください。

設定できました。続いてSuggestedとして推奨されているとあるので、そのままEnterキーを押してください。

続いてこのような画面がでます。ここでは、どのようなルートでサーバーに秘密鍵ファイルをアップロードしたいかを選びます。

ここに出てくる選択肢はどれも対象外です。ですが、秘密鍵をパソコンに保存させたいので、3:FTP(S)を選んでください。

続いてこのような画面がでます。
先ほど3:FTP(S)を選びました。そのため、FTPのアップロード先ホストを選びます。

FTPのアップロード先ホストはアルファメールの契約情報に記載のFTP転送サーバーに記載されています。

記載されていたFTP転送サーバーの頭に「ftp://」を付け加えて入力します。

先ほど入力したwww.domain-**-domain.jpが存在しない(Invalid path)と怒られてしまいました。なので正式なパスを入力してします。ここでは隠しています。
続いての画面では、今までで設定した情報を基にweb.configファイルを作ってよいかと聞かれています。

「y」を入力し、Enterキーを押してください。

さらにUsernameの入力が求められています。ここもアルファメール2の契約画面にあったFTPログイン名を入力し、Enterキーを押してください。

続いてPasswordの入力が求められています。ここもアルファメール2の契約画面にあったFTPパスワードを入力し、Enterキーを押してください。

続いての画面では、証明書署名要求(CSR)で使用するキー(タイプ)などの証明書のプロパティを選びます。1: Elliptic Curve key  2: RSA keyのどちらかです。

ここでは2:RSA key、を選びます。「2」を入力し、Enterキーを押してください。

続いては、証明書の保存場所を選択します。
1:IISサーバーへの保存 2:PEM形式でエンコードされたファイル 3:Windows証明書ストアのどれかを選びます。

ここではファイルとしてWindows内に保存したいので「2」を入力し、Enterキーを押してください。

続いてはPEM形式でエンコードされたファイルの保存場所を聞かれます。

ここではCドライブの直下(C:¥)に保存しましょう。「/」を入力し、Enterキーを押してください。

続いては、PEM形式でエンコードされたファイルの保存場所を再度聞かれます。

ここではこれ以上の保存は必要ありませんので、「3」を入力し、Enterキーを押してください。

続いては、証明書ファイルの保存後に何らかの追加処理を実行するかを聞かれます。

ここではこれ以上の処理は不要なので「4」を入力し、Enterキーを押してください。

ここでは、すでに設定した証明書ファイルと今後のスケジュールが記載されています。これを上書きして良いかが聞かれます。

「y」を押したことで、今までの設定情報が表示されます。この情報に置き換えてよいかが聞かれます。

「y」を入力すると、設定情報が表示されます。ここでは定期アップデートの情報が指定されます。
Let’s Encryptは90日ごとに証明書を更新しなければなりません。その自動化を行うための情報を確認するとともに、その自動化の処理を行うための別のWindowsアカウントの有無を聞かれます。
この自動化はアルファメール2では使えません。ですが、ファイル保存のために実行しておきます。

「y」を入力して、Enterキーを押すと、続いて該当するユーザー名を入力してください。

上記処理で求められるユーザー名を取得するには、別にコマンドプロンプトを立ち上げ、whoamiと入力して、Enterキーを押せば、ユーザー名が表示されます。

ユーザーをこのように入力し、Enterキーを入力してください。

続いてパスワードが求められます。Windowsへのログイン時に該当アカウントで使用するパスワードを入力し、Enterキーを押してください。

新たなスケジュールが設定されました。

先ほど、PEM形式でエンコードされたファイルの保存場所をc:¥を表す「/」と指定したので、Cドライブの直下に以下のようなファイルが生成されています。ここでは三つのファイル名は、
www.domain-**-domain.jp-key.pem
www.domain-**-domain.jp-chain.pem
www.domain-**-domain.jp-crt.pem
になるはずです。ダミーファイル名なので少し変えています。

7.証明書の設定

  Topへ↓

それでは、再びアルファメール2の設定画面の独自SSLの画面に戻ってください。
上から
「SSLサーバ証明書」には、www.domain-**-domain.jp-crt.pemの内容を全て選択(末尾に空行が選択された場合はその空行は含めなくてよいです)し、貼り付けます。
「中間認証局証明書」には、www.domain-**-domain.jp-chain.pemの内容を全て選択(末尾に空行が選択された場合はその空行は含めなくてよいです)し、貼り付けます。
「秘密鍵」は、秘密鍵を入力するにチェックを入れた上で、その下のリンクをクリックして表示される欄にwww.domain-**-domain.jp-key.pemの内容を全て選択(末尾に空行が選択された場合はその空行は含めなくてよいです)し、貼り付けます。
貼り付けた後は保存します。

保存中の画面です。

保存が終わるとSSLがインストールされた旨のメッセージが表示されます。

8.常時SSL化の設定

  Topへ↓

続いて、「常時SSL化の設定」ボタンをクリックしてください。

こちらの画面ではhttp://でアクセスされてきたリクエストを全てhttps://に置き換えるように設定を変更します。
もしURLをhttps://www.domain-**-domain.jpではなく、https://domain-**-domain.jpにしたいのであれば、ラジオボタンを変更します。
保存を押せば設定されます。

9.混在コンテンツのチェック

  Topへ↓

さて、これでサーバー自体のSSL設定は完了です。

設定したURLでアクセスしてみてください。
もし、Google Chromeで以下のような画面になってしまった場合、証明書が正常に適用できていないか、混在コンテンツとして認識されている可能性があります。

混在コンテンツとは、httpsで構築されているはずのサイトのどこかにhttp://で始まるパスで指定された画像や動画やJavaScriptファイルやCSSファイルが内部で埋め込まれている場合に起こります。
たとえばWordPressの場合、header.phpやpage.php、single.phpのどこかにhttp://のファイルが呼び出されている可能性があります。
また、投稿のどこかにhttp://が紛れている場合はsqlで一括でhttps://に変更する方法もあります。

上記画像はそのsqlで一括変更する方法です。もしあまりsqlに詳しくない場合は、しかるべき業者に頼んだほうがよいでしょう。
もちろん弊社でもご相談いただければご対応します。

そこでうまくいけば以下の様に鍵が表示され、SSL対応が完了したことがわかります。

10.証明書の自動更新への注意

  Topへ↓

先にLet’s Encryptで取得した証明書の期限は90日間と述べました。
一方で、先ほどのWin-Acmeの操作の中で証明書の次回スケジュールがNext renewal scheduled at yyyy/m/d hh:mm:ssと表示されていました。
ですが、何度か書いた通り、本稿でご紹介した方法では自動更新ができません。
証明書の秘密鍵をサーバーに渡す方法が、アルファメール2の設定画面から値を張り付けて保存する以外にないためです。
自動化するとすればRPAツールを使うしかなさそうです。
ここは間違えないように自己責任で再取得をお願い致します。

11.アルファメール2へのお願い

  Topへ↓

繰り返しますが、他の有名なホスティングサービスではボタン一つで無償の独自SSLの適用が可能です。
アルファメール2でも無料の独自SSLの設定が可能になることを強く望みます。
その結果、当記事が陳腐化したとしても本望です。


11 thoughts on “アルファメール2で独自SSLを無料で

  1. 浅田

    アルファメールで有料独自SSLを導入するかサーバーを移設するか迷っていたところこちらの記事を見つけ、試しに記事通りの手順で行ってみましたが、記事上で「overwrite?」と来るところで「 Error preparing for challenge answer」と返ってきてしまい先に進めなくなってしまいました。
    何度か試してみましたが入力に誤りもなく、FTPソフトでは問題なくアクセスもできており、原因も分かりません、もし思い当たる点があればご教示いただけると幸いです。

      1. 浅田

        最新バージョンでダウンロードし直して試してみたところ問題なく発行できました。
        ありがとうございます!

        が、今度はアルファメール内での証明書の設定の段階で「中間認証局証明書が不正です」とエラーが出てきてしまいました。
        こちらの原因等お分かりでしょうか?

        質問ばかりですみません。

        1. 長井祥和 Post author

          浅田さん
          ありがとうございます。

          こちらですが、
          「中間認証局証明書」には、www.domain-**-domain.jp-chain.pemの内容を全て選択(末尾に空行が選択された場合はその空行は含めなくてよいです)し、貼り付けます。

          この空行が含まれていると不正になるようです。
          あとは対象となるファイルも間違えているとうまくいきません。

          これで試してみてくださいませ。

  2. はるか

    アルファメールプレミアを使用しております。有料独自SSLの月額は…とのことでなんとかLet’s Encryptでできないかでと検索していたところ、このページを見つけました。
    手順通りにやってみましたが、

    Target plugin IIS not available: No supported version of IIS detected.

    Installation plugin IIS not available: No supported version of IIS detected.
    と出るせいか?最後まで同じ手順でやったところでwacsの画面が閉じてしまいます。
    IISは関係ないと思っていたのですが、有効化しても変わらずで同じところでウィンドウが閉じてしまいます。
    どうしたらいいかわからず、もし原因がわかりましたら教えていただけないでしょうか?

    1. 長井祥和 Post author

      はるかさん、
      コメントありがとうございました。

      いただいたIISのコメントが関係するのは、
      証明書の保存場所の部分ですね。

      続いては、証明書の保存場所を選択します。
      1:IISサーバーへの保存 2:PEM形式でエンコードされたファイル 3:Windows証明書ストアのどれかを選びます。

      という項目が登場するのですが、ここで1を選んでいないでしょうか。

      2を選ぶといまくいくと思います。
      よろしくお願い申し上げます。

      1. はるか

        長井様
        返信ありがとうございます!
        PEM形式を選んでいるのですが…だめでした。
        今、ログを見てみました。何が原因か考えてます(わからないなりに)
        [INF] No command line arguments provided
        [INF] Software version 2.1.8.847 (RELEASE, PLUGGABLE) started
        [INF] ACME server “https://acme-v02.api.letsencrypt.org/”
        [INF] IIS not detected
        [INF] Running with administrator credentials
        [WRN] Scheduled task not configured yet
        [INF] Please report issues at https://github.com/win-acme/win-acme
        [INF] Running in mode: “Interactive, Advanced”
        [WRN] Target plugin IIS not available: No supported version of IIS detected.
        [INF] Target generated using plugin Manual: http://www.xxxxxx.jp
        [WRN] Installation plugin IIS not available: No supported version of IIS detected.
        [ERR] (Exception): AcmeClient was unable to find or create an account
        何か根本的な間違い、足りないことがあるのでしょうか…>_<

        1. 長井祥和 Post author

          はるかさん、
          おそらくログを読む限りでは、Win-acmeの使用するバージョンが違う気がします。

          私は2.1.3.1
          でしたが、いくつかのバージョンによる挙動の違いが影響を与えているはずです。

          ここを変えてみてはいかがでしょうか?

          1. はるか

            なるほど!
            やってみます!
            ありがとうございます!

          2. はるか

            バージョンを2つ試しました。
            [WRN] Target plugin IIS not available: No supported version of IIS detected.

            [WRN] Installation plugin IIS not available: No supported version of IIS detected.
            は消えました。

            [WRN] Scheduled task not configured yet

            [ERR] (Exception): AcmeClient was unable to find or create an account
            は同じでした。
            他のバージョンも試してみます。

          3. 長井祥和 Post author

            はるかさん

            こちらありがとうございます。
            [WRN] Target plugin IIS not available: No supported version of IIS detected.

            [WRN] Installation plugin IIS not available: No supported version of IIS detected.
            は消えました。
            IISのほうが消えたということは問題ないと思われます。

            [ERR] (Exception): AcmeClient was unable to find or create an account
            こちらですが管理者権限で実行されておりますでしょうか?

コメントを残して頂けると嬉しいです

Case Of Akvabitの全投稿一覧