2016年10月07日
イントラ環境のWindows ServerでPowerCMS SocialからFacebook投稿できない場合の対処方法
弊社のPowerCMS Socialをイントラ環境に置いたWindowsサーバーでご利用の場合に、Proxyサーバーを越えてFacebook投稿ができないという事例がありましたので、この記事で解決のノウハウを共有できればとおもいます。
運用環境
この記事では、以下のような環境を想定しています。
- 企業様のイントラネット環境に設置されたWindows Server 2012 R2上のIISで、PowerCMSとPowerCMS SocialがFastCGIで動作している
- PowerCMSで作成した記事をFacebookにも投稿したい
- PowerCMSが動作するWindowsサーバーから外部インターネットと通信するには、Proxyサーバーを経由する必要がある
- Facebookとの通信には、HTTPSによる通信を行う必要がある。またPOODLEと呼ばれるSSLv3 脆弱性への対策のため、TLSで通信する必要がある
- ProxyサーバーはSSL通信の中身も記録するため、CMSとProxyサーバー間は、Proxyサーバーの用意した代理証明書で通信する
設定方法
通常、Movable TypeやPowerCMSをProxyサーバーの内側で利用する場合はHTTPSProxy環境変数を設定と考えてしまいそうですが、Perlの制約から、そう簡単ではありませんでした。
以下、簡単にまとめて記載いたしますが、ここに至るまでにはかなりの時間がかかってしまいました。
- IISのFastCGI設定での環境変数には、どのアプリケーションにも何も指定されていないことを確認してください。
- Windows Serverのシステム環境変数には、以下が設定されていることを確認してください。
環境変数 値 備考 HTTPS_PROXY 例) http://127.0.0.1:15080/ ProxyサーバーへのURLに修正します。 PERL_NET_HTTPS_SSL_SOCKET_CLASS Net::SSL 内部で利用しているLWP::UserAgentでHTTPS proxy通信を行うために必要です。 - PowerCMSに、この記事からリンクしているプラグインをインストールしてください。
- mt-config.cgi には、以下を設定してください。
環境変数 値 備考 SSLVerifyNone 1 Proxyサーバーが持つ代理証明書のホスト名は確認しないため FCGI_ENV_HTTPS_PROXY http://127.0.0.1:15080/ 利用しているProxyサーバーのIPアドレスまたはホスト名に変更します。ポート番号も適宜変更します。この値はデフォルト値です。 - 上記のOS環境変数などを初めて設定した場合は、念のためサーバーを再起動します。
その他のノウハウ
さきほどのPOODLE脆弱性をはじめ、HTTPS通信をめぐる環境は、ここ最近になって目まぐるしく変化しています。そのため、安定性を求めて古いバージョンのPerlを利用している場合などに、Crypt::SSLeayや Net::SSLeayといった、OpenSSLに依存するPerlモジュールが原因で、TLSなどのプロトコルで通信できない場合がありました。そのような場合は、これらのPerlモジュールをバージョンアップすることで解決しました。
使用したプラグイン
- カテゴリー
- トラブルシューティング
コメントを投稿する