工作好きな情報系の雑記

ブログをhttpからhttpsに移行したらXML-RPCを使ったソフトが機能しなくなった

ブログをhttpからhttpsに移行したら、Google+の投稿を自動でWordPressに投稿するスクリプトが動かなくなってしまった。
何の問題もなく移行できたと思っていたのになんたることだ。

-32300 : transport error - HTTP status code was not 200

どうやらXML-RPCが動かなくなってしまったようだ。
原因としては二つあった。

原因1:ロリポップのWAFによってブロックされていた

以下のように.htaccessに記述することで対応した。

ロリポップ!レンタルサーバーに多く寄せられる質問の中のCGI・SSI・PHPについて『PHPやCGIでプログラムの編集をすると403エラーが表示されます。』のページです。
PHPやCGIでプログラムの編集をすると403エラーが表示されます。 / CGI・SSI... - 

サポートページではシグネチャ文字列をexcludeするように書いてあるけど、それだけでは防げなかった。
oscmdと認識される時もあるし、xss-tagとかsqlinjectionとかと認識されることもあって、excludeするにはキリがない。
それにシグネチャ文字列が汎用的な名前すぎたので、本当に攻撃された時に防げない不安もある。

かといってIPアドレスも動的なものだから、いつかはまた動かなくなるしなぁ…
なんかいい方法はないものか

原因2:ブログがhttps化した

https化したことで、クライアント側もSSLに対応しないとXML-RPCが動かないらしい。
これを解決するためにはプライベート認証局でSSLクライアント証明書を発行しなければならない。
この手順は割と長いのでこっちの記事でどうぞ。

Google+の投稿を自動でWordPressに投稿するスクリプトが動かなくなってしまった。サイトがSSL化している場合、XML-RPCを使うにはクライアントもSSLに対応していないといけない場合があるらしい。そのためには、プライベート認証局でSSLクライアント証明書を発行しなければならない。ここのサイト曰く、クエリを投げるにはクライアントの証明書とクライアントの秘密鍵とそのパスフレーズ、CAの公開鍵証明書が必要らしいので、そいつらを生成する。ちなみにこの時の環境は以下の通り。 macOS High Sierra (10.13.3) LibreSSL 2.2.7プライ...
[Mac]https化したサイトでXML-RPCを使うために、プライベート認証局でSSLクライア... - 工作好きな情報系の雑記
モバイルバージョンを終了