Web ブラウザの TLS1.0/1.1 無効化により Web
ブラウザで警告が発生
2015/10/05 に大手4社のWebブラウザが 2020年にTLS
1.0と1.1を無効化すると発表し、2020/07/01 より順次対応が始まった模様です。
今回の Web ブラウザのセキュリティ強化により、最新版の Web ブラウザを使って
TLS1.2 非対応の Web サーバにアクセスすると、以下のような警告が Web
ブラウザに表示されることがあります。
(以下は 最新のFirefox でアクセスしたときのエラー)
|
Firefox で表示される エラーコード: SSL_ERROR_UNSUPPORTED_VERSION |
Windows Server 2003 IIS6 は TLS1.2 非対応のため、別途対策が必要
新たなセキュリティホールや脆弱性は日々発見されており、サーバOS も Webサーバもアップデートが提供されているものを使用し、できるだけ迅速にアップデートを行うことが推奨されます。しかし、OSやWebサーバのアップデートを行うにはシステムの修正や再構築が必要となり多額の費用が発生することが多々あり、このため止むを得ずレガシーシステムを使わざるを得ない、ということもあります。
さて、FileMaker 5.5 Unlimited に付属する Web Companion や Web Server Connector は、FileMakerデータベースとIISの橋渡しをしてWebアクセスを可能にするものですが、Web Companion/Web Server Connector は Windows Server 2008のIIS7では動作しません。このため、Windows Server 2000/2003 IIS5/6 と FileMaker Pro 5.5 Unlimited(Web Companion/Web Server Connector)により、Webサイトを運用している企業はいまだにあると思われますが、ここで問題が発生します。IIS5/6 は
TLS1.0
までしか対応していないため、この7月以降は上図のようなエラー/警告が発生します(エラーや警告はブラウザによって異なります)。
リバースプロキシサーバ + IIS6 で Web サーバを構築
さて、ここからが本稿の本題です。IIS5/6 + WebCompanion/Web Server Connector を使用しながら、どうすればTLS1.2以降による暗号化を可能にするかということですが、TLS1.2以降に対応した リバースプロキシサーバを立てることによって実現できます。 今回は nginx 1.18.0 によりリバースプロキシサーバを構成しました(下図)。
この構成により、既存の IIS6 の設定を若干変更するだけで、セキュリティが強化され、Web
ブラウザに警告・エラーが表示されなくなります。
|
nginx リバースプロキシ + II6 によるサーバ構成 |
以下、設定方法となります。
なお、本稿はボランティアで提供しており、その内容や結果は保証できません。「書いてある通りにやったら、サーバが壊れた! 責任取れ(怒)!!!」とか、ホントにやめてくださいね。ただ、実行結果をコメントで残して頂く、とかなら大歓迎です。
-
既存の証明書の購入元から、PEM 形式の証明書とその秘密鍵を入手
取得方法はサーバ証明書発行サイトによって異なりますので、詳細は証明書発行会社にお問い合わせください。
入手した証明書ファイルと秘密鍵ファイルは、C
ドライブ以外のできるだけ安全なフォルダに配置しておきます。
-
IIS6 にインストールされている証明書を削除
インターネットインフォメーションサービスマネージャを開き、「規定のWebサイト」まで展開し、マウスを右クリックしてプロパティを開きます。
図のように“サーバー証明書(S)”をクリックし、処理の一覧から「現在の証明書を削除する(R)」をクリックし、“次へ”をクリックします。
削除前の確認メッセージが出ますので、“次へ”をクリックすると、IIS
から証明書が削除されます。
-
IISの Web サーバポートを変更
引き続き「Webサイト」タブをクリックし、ポート番号として以下のように入力します。
|
IIS6 側のサーバポート変更
|
TCPポート:8080 (80以外であれば何でも可)
SSL ポート:(空欄)
-
nginx をダウンロードし、任意の場所に配置(インストール)
https://nginx.org/en/download.html
にアクセスし、Windows
用の最新安定バージョンをダウンロードし、解凍して任意の場所に配置します。
今回は nginx/Windows-1.18.0 をダウンロードします。
※ Windows Server 2003
環境で解凍を行うと、実行ファイルが自動削除される可能性があります。その場合は、別の
PC 上で解凍した後に Windows Server 2003 環境に配置しなおしてください。
-
nginx.conf ファイルの修正
nginx フォルダ配下の conf フォルダに配置されている nginx.conf
ファイルをリバースプロキシとして動作させるために、以下のように修正します。
※事前にnginx.cfg ファイルのバックアップをお取りください。
以下、環境別に設定が異なる部分は適宜調整してください。
nginx.conf
#user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
server_tokens off;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
gzip_types text/css application/javascript application/json
application/font-woff application/font-tff image/gif
image/png image/jpeg application/octet-stream;
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
server {
listen 80;
server_name yourdomain.co.jp;
location / {
proxy_pass http://127.0.0.1:8080;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# HTTPS server
#
server {
listen 443 ssl;
server_name yourdomain.co.jp;
ssl_certificate d:\\app\\cert\\fullchain.pem;
ssl_certificate_key d:\\app\\cert\\privkey.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:DH+AES256:DH+AES:
!EXPORT:!DES:!3DES:!MD5:!DSS;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
}
proxy_pass で示された URL のポート番号は、手順 3.
で指定したものを入力します。
HTTPS サーバブロックの proxy_pass
にも同じものを入力します。
ここまで修正したら設定ファイルを上書き保存します。
-
nginx 起動テストを実行
コマンドプロンプトを開き、nginx
フォルダまで移動してから、以下のように入力します。
nginx
※
起動直後にポートアクセスへの許可を求めるダイアログが表示されたら、すべて許可しておきます。
Web ブラウザを開き、従来の URL にアクセスします。
警告メッセージが出ずに従来の
Web ページが表示されれば成功です。
前述の nginx.conf
設定で証明書の設定も行っていますので、http://、https:// ともにアクセステストを行ってください。
-
nginx を停止
nginx 起動テストに成功したら、いったん nginx を停止させます。
コマンドプロンプトをもう一つ開き、以下のように入力します。
nginx -s stop
nginx プロセスが終了します。
-
nginx を Windows サービスとして登録
nginx を Windows サービスとして登録して常駐させるには、winsw
という外部ツールを使います。
以下のサイトより winsw というツールをダウンロードします。
https://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/
ここでは最新版の winsw-2.9.0-bin.exe をダウンロードします。
ダウンロード済みの実行ファイルは任意の場所に配置してもよいのですが、nginx
と同じフォルダに配置したほうが管理はしやすいかと思います。
winsw-2.9.0-bin.exe ファイルを配置したら、同じフォルダの中に
winsw-2.9.0-bin.xml
という名称で空のファイルを作成し、テキストエディタで開きます。
winsw-2.9.0-bin.xml ファイルに以下のように入力します。
以下、nginx.exe へのパスは適宜調整してください。
winsw-2.9.0-bin.xml
<service>
<id>nginx</id>
<name>nginx</name>
<description>nginx</description>
<logpath>D:\Program Files\nginx-1.18.0\logs</logpath>
<logmode>roll</logmode>
<depend></depend>
<executable>D:\Program Files\nginx-1.18.0\nginx.exe</executable>
<startargument></startargument>
<stopexecutable>D:\Program Files\nginx-1.18.0\nginx.exe</stopexecutable>
<stopargument>-s</stopargument>
<stopargument>stop</stopargument>
</service>
修正が終わったらファイルを保存します。
コマンドプロンプトを開き、winsw-2.9.0-bin.exe を配置したフォルダまで移動し、以下のように入力すると、nginx
がサービスとして登録されます。
winsw-2.9.0-bin.exe install
インストールに成功すると、以下のような結果が表示されます。
2020-07-04 00:06:46,000 INFO - Installing the service with id
'nginx'
-
nginx サービスの開始
Windows サービスに nginx
が登録されていることを確認し、“開始”をクリックすると nginx
が起動し、稼働状態となります。
-
サーバ動作最終チェック
Web ブラウザを開き、従来どおりに Web
サーバにアクセスし、無事にページが表示されれば終了です。
お疲れさまでした。
おまけ:
nginx を Windows
サービスから削除する場合は、コマンドプロンプトで以下のように入力します。
winsw-2.9.0-bin.exe uninstall
■ FileMaker 5/6等レガシーシステム関連記事
(亀)