Archive for the ‘Windows’ Category

格安SSLサーバー証明書を使う – Windows

火曜日, 11月 24th, 2020

JPRSサーバー証明書

これまでも、格安のSSL証明書が発行されていましたが、今回はJPRSのサーバー証明書を使用することにしました。
JPRSは「.JP」のドメインを管理する会社です。当サイトも「co.jp」と「.jp」を使用しており、ここが発行するということで、かなり安心感があります。
また、価格は「さくらインターネット」では、
JPRS ドメイン認証型 990円 DV 即日発行 
となっています。
サブドメインがそれほど多くなく、ドメインだけの証明があればいい場合はこれで十分と思われます。
JPRSサーバー証明書のポイント
1枚の証明書で複数のサーバーに導入可能
コモンネーム単位でサーバー証明書が発行されるため、同一のコモンネームを持つサーバーであれば台数に関係なく、
一つの証明書をコピーして利用することができます。サーバーを増設する場合にも追加購入の必要がありません。
つまり、サーバーのIPアドレス等の縛りがないため、柔軟な運用ができるようです。

ここでは、この証明書をWindowsサーバーで使用する手順を紹介します。

証明書の要求を作成
IIS7.0以上では、サーバー証明書というアイコンがあります。これを起動します。右のメニューの中に「証明書の要求の作成」を実行します。

半角英数字で記入します。
以下はさくらインターネットの記入例です。
コモンネームが、今回証明書を申請するドメイン名(サイト名)になります。
一般名(コモンネーム) www.sakura.ad.jp
組織 Technical Division
組織単位 SAKURA Internet Inc.
市区町村 Osaka-shi
都道府県 Osaka
国 JP

暗号化サービスプロバイダのプロパティの設定

作成する鍵のビット長は「2048」を選択します。
CSRを保存するファイル名を入力して終了する。
CSRファイルは、暗号化されたテキストファイルで、メモ帳等で見ることができます。
例、csr_sakura.txt

証明書を申し込む
さくらインターネットのJPRS一覧で、申し込みます。

支払い方法等の設定をします。
「CSRの入力へ進む」のところで、用意したCSRファイル(テキスト)を使用します。

正常に申し込みが終了し、支払いが完了すると、以下のような返事がきます。

お申込みいただきましたSSLサーバ証明書の発行申請を行いました。
引き続き、認証局より申請いただいたドメインの使用権確認がございますので以下の重要事項と手順をご確認の上、ご利用サーバへ認証ファイルのアップロードをお願いいたします。

認証ファイルのアップロード
申請したドメインが実際に存在するか、確認するための手続きです。
指定のページから認証ファイルをダウンロードします。
例、abc*********.txt
このファイルを指定のURLにアップロードします。
例、http://(申請サイト名)/.well-known/pki-validation/abc*********.txt
Windowsサーバーの場合は、直接「.well-known」フォルダは作成できないので、申請サイトに「/well-known/pki-validation/」フォルダを作成し、そこに「abc*********.txt」ファイルを置きます。
IISでこの「well-known」フォルダを仮想フォルダに変換します。
仮想フォルダ名を「.well-known」に変えます。

認証局のクローラー(ロボット)がこのURLを読みに来ます。このURLが確認されれば、すぐにサーバー証明書が発行されます。
クローラーは夕方から夜にかけて訪れるようです。

サーバー証明書のインストール
発行を知らせるメールが届いたら、指定のページからサーバー証明書をダウンロードします。
サーバー証明書とは別に「中間証明書」が必要ですのです。
これはJPRSの指定ページからダウンロードします。
JPRS ルート証明書、中間CA証明書
ルート証明書は特に必要ありません。

証明書のインストールは以下に詳しい説明があります。
JPRS 証明書のインストール IIS7
以下にその概要を載せておきます。

中間CA証明書のインストール概略
MMC>スナップインの追加と削除>証明書>追加
>コンピューターアカウント>ローカルコンピューター>完了
証明書(ローカルコンピューター)>中間証明機関>証明書>インポート>*.cer
>証明書をすべて次のストアに配置する>完了
作成したMMCは名前をつけて保管しておきます。

サーバー証明書のインストール概略
JPRSのサーバー証明書の拡張子は「*.crt」となっていますので、拡張子を「*.cer」に変更します。
IISマネージャ>サーバー証明書>証明書の要求の完了>
ファイル名「*.cer」とフレンドリ名(自由)の入力>完了
>確認
インストールした証明書が、[サーバー証明書]中央のリスト・ボックスに追加されます。

サーバー証明書のバックアップ
IISマネージャ>サーバー証明書>該当する証明書をクリック>エクスポート
>エクスポート先、パスワード、パスワードの確認 を入力
完了
バックアップファイル:***.pfx

バインドの追加
該当するサイトのバインドに、httpsを追加します。
これでhttps通信が可能になります。
 

Windows2008の場合
最新のブラウザでアクセスすると「TLS 1.2 以降を有効にする必要があります。」というエラーが出ます。
TLS1.2を有効にする方法。
更新プログラム一覧で「KB3140245」が入っていることを確認。
レジストリにキーを2個作成。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server
それぞれ、キー2個を追加。
「DisabledByDefault」で値は「0」
「Enabled」で値は「1」
これでTLS1.2が可能になりますが、うまくいかない場合もあるようです。
なお、レジストリ操作は、自己責任でおこなってください。

Windows TLS サポート状況一覧

Windows OS              SSLv2 SSLv3 TLS 1.0 TLS 1.1 TLS 1.2
Windows Server 2008     〇    〇    〇      △      △
Windows 7
Windows Server 2008 R2  〇    〇    〇      △      △
Windows Serer 2012      △    〇    〇      〇      〇
Windows 8.1
Windows Server 2012 R2  △    〇    〇      〇      〇
Windows 10              △    〇    〇      〇      〇
Windows Server 2016     ×    △    〇      〇      〇

 
 
 

Web – IIS7~10でURLの書き換えが可能に

金曜日, 7月 31st, 2020

URL Rewrite Module 2.1

server2016、Windows10のIIS10になると、今までの「URL Rewrite Module 2.0」がインストールできなくなります。
これは、2.0のバグで、IISのバージョン10を1.0と判断し9より下として処理するのが原因のようです。
そのため2.0をインストールするには、レジストリのIISのバージョンを9に変えてインストールし、その後10に戻すという方法があります。
IIS10におけるrewrite.dllのインストール

この問題を解消したのが「URL Rewrite Module 2.1」です。
URL Rewrite ダウンロード
下の方に日本語インストーラがあります。
Download URL Rewrite Module 2.1
Japanese: x86 installer / x64 installer

しかし「URL Rewrite Module 2.1」には別の問題があります。
URL Rewrite モジュール 2.1 にはVC ランタイムのインストールが必要になります
このためserver2016では問題ありませんが、Windows10ではエラーになることがあります。
「VisualC++のランタイム」をインストールすれば、問題は解決します。
それが面倒な場合は、上記の「URL Rewrite Module 2.0」のインストールを実行するのも一つの方法です。

URL Rewrite Module を使う

・それまでのURLの書き換え
Server2003 IIS6.0までは、URLを書き換えるため、ThunderMain URLRewriterというツールを使用していました。

・ワイルドカードのマッピング
このツールの設定方法は、まず、書き換えるディレクトリをアプリに変換し、binフォルダを作成し、そこにDLLファイルをいれる。
アプリの構成で、ワイルドカードのマッピングを追加して、ハンドラに.netのDLLを指定してやる。
ディレクトリ下にglobal.asaxを用意して、イベントハンドラを設定し、ThunderMain.URLRewriter関数を指定する。
さらにweb.configを用意して、その中に、変換のルールを正規表現で記述しておく。
以上でそのディレクトリに来たリクエストは、ルールに従って、指定したアプリにクエリ付きで変換されます。
各ディレクトリ毎に設定を行うのは、ツールでは、ディレクトリ(/)だけのURLを捕まえることができないからです。/のリクエストは、まずIISがこれを捕まえて、既定のドキュメント(例えばindex.aspx)に処理を渡してしまいます。つまり.netまで回ってこないのです。変な書き方をすると、思わないエラーが起きることになります。

IIS6.0のワイルドカードマッピング

・server2012で動作しない
今回サーバーを新しくすることになり、Server2012R2を導入しました。そして、IISでサイトを作成し、上記の方法で、DLLおよびweb.config等を設定しました。ところが、このIISにはアプリの構成やワイルドカードのマッピングがありません。よくよく見ると、ハンドラ マッピングというそれらしいアイコンがあったので、それをクリックしてみました。
そこにワイルドカード スクリプト マッピングというのがあったので、これで設定することにしました。画像で分かるように、ワイルドカード*がたくさんあります。一抹の不安を感じながら、URLを実行すると、案の定URLがないというエラーが出ました。その後*を捕まえるため、色々と試してみましたが、見事に全滅しました。ネットもかなり調べましたが、原因は分かりません。これがIISのバージョンアップなのだろうということで、あきらめることにしました。

IIS8.5のワイルドカードマッピング、うまく動作しない。

・Microsoft URL Rewrite Module 2.0
その後、「IIS URL Rewrite」で検索していると、なんだかIISでもURLの書き換えができるというような記事がいくつか見つかりました。さらに調べていくと、Microsoft URL Rewrite Moduleというツールに行き着きました。IIS7.0(Server2008)から提供されていたようです。サイトを構築する上で必要なことなので、今までも、何回か「IIS URL Rewrite」に関して情報がないかどうかは調べていましたが、気がつきませんでした。

・あまり使われていない
これだけ徹底的に調べて、ようやく見つかったということは、この機能はあまり使用されていないということなのでしょう。IIS(.net、Windows)ユーザーは、多分URLを書き換えることがほとんどないのでしょう。確かに実務本位の業務用システムにはURLの整形は全く必要ありません。
しかし、業務用アプリではなく、商用サイトとしてWEBを構築する場合、?から始まるクエリでページを表すのはあまり賢明ではありませんし、ともするとApacheユーザーからはバカにされます。page.aspx?p=1ではなく、1.htmlあるいは1.aspxとした方が分かりやすく、スマートになります。
たったこれだけのことですが、今までのIISでは簡単にはできませんでした。WordPressやPHPなどApache系のwebでは常識なのですが…。これでようやく、ApacheにIISが追いついたというか、webの仲間入りできたことになります。

・モジュールのインストール
URLを書き換えモジュールをダウンロードしてインストールします。IISマネージャに「URL 書き換え」のアイコンが表示されます。

「URL 書き換え」のアイコン

・Web.config
トップページのweb.cofigファイルの<system.webServer>ブロックに書き換えルールを書きます。
下記は、/aaa/10.aspxを/aaa/page.aspx?p=10に書き換える例です。

<system.webServer>
  …
  <rewrite>
    <rules>
      <rule name="1">
        <match url="^aaa/(.*).aspx$" />
        <action url="/aaa/page.aspx?p={R:1}" type="Rewrite" />
      </rule>
      <rule name="3">
        <match url="^abc/(.*)/(.*).html$" />
        <action url="/a/b/c.aspx?d={R:1}&amp;n={R:2}" 
          type="Rewrite" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

ルールは正規表現で書きます。
先頭の^と末尾の$を入れておくことが必要です。これがないと、/bbbaaa/や1.aspx/もマッチしてしまいます。
()でくくると変数扱いになります。変数呼び出しは正規表現では$1、$2ですが、ここでは{R:1}、{R:2}…になります。変数というより、変数の配列と考えた方がいいでしょう。ちなみに{R:0}はURL全体になるようです。試してみてください。
&は&amp;と書きます。web.configファイルはXMLファイルのため、<や&はそのまま書くとエラーになります。
ルールを書いたweb.cofigを保存します。間違いがなければ、即「URL書き換え」が実行されます。

・GUI
URL書き換えルールは、IISのGUI(URL書き換え)でもできます。MSのテクニカルサイトにはこちらの記述方法が載っています。
上記のようにWeb.configを編集すると、それがGUIでも表示されます。書き方がまずいとXMLエラーになり、内容が表示されない場合がありますので注意が必要です。正式な記述を知りたい場合は、GUIを使用した方がいいでしょう。
結果はWeb.configに反映されます。


GUIでルールを記述、編集する

「URL 書き換え」はApache並みの複雑なURL書き換え、リダイレクト、ヘッダー等の分析もできるようになっているようです。詳しくはMSのテクニカルサイトを参照してください。