ニュース » mixiアプリ » 署名付きリクエストで使用する公開鍵の更新手順について
署名付きリクエストで使用する公開鍵の更新手順について
2012.01.18 mixiアプリ
先日こちらにてお伝えいたしております公開鍵の更新に関してですが、交換手順をまとめましたので、お知らせいたします。以下をご参照いただき、開発されたmixiアプリにてご対応いただきますよう、お願いいたします。
弊社サーバでの鍵交換作業は、2012年2月22日を予定しております。22日以降は、全ての署名付きリクエストにて新しい鍵が適用されることになります。急なお願いとなってしまい大変申し訳ございませんが、対応漏れのないよう修正作業の程お願いいたします。
署名付きリクエストで使用する公開鍵の更新について
mixiアプリPC版では、外部サーバと通信を行うためのgadgets.io.makeRequest()関数を使用する際に、リクエストに署名を付与することができます。この署名付きリクエストを利用することにより、リクエスト内容の改ざんを検知することができ、さらにmixi側で自動的に付与されるViewerのIDなどの情報を確実に外部サーバに伝えることが可能となります。
署名付きリクエスト – mixi Developer Center
http://developer.mixi.co.jp/appli/spec/pc/require_servers#toc-2
署名の検証には、mixi Developer Centerにて掲載されている公開鍵を使用することになりますが、今まで使用してきた鍵の有効期限が、2012年3月22日17時15分59秒までとなります。そのため、鍵の交換を行うことが必要です。この交換に関する手順として、弊社サーバでの鍵の入れ替えに加えて、署名付きリクエストの送信先サーバに関しても対応が必要となりますので、そのための手順を以下に説明いたします。
※ 本ページ内の日時は、全てJST(GMT+09:00)です。
手順の概要
新しい鍵への交換のための手順の概要は、以下となります。
- mixi Developer Centerに掲載されている新しい公開鍵を入手します。
- 署名付きリクエストにて送信される内容に、xoauth_signature_publickeyパラメータが含まれていることを確認します。
- xoauth_signature_publickeyパラメータ値に応じて、使用する公開鍵を切り替えて署名を検証するように、アプリ側サーバのプログラムを変更します。
- 弊社側サーバにて、使用する鍵を変更します。アプリ側サーバに新しい鍵で作られた署名が送信されます。
新しい公開鍵
新しい公開鍵は、以下となります。この公開鍵の有効期限は、2014年01月05日11時12分03秒までとなります。
-----BEGIN CERTIFICATE----- MIIDfDCCAmSgAwIBAgIJAJU4Z27Mql6HMA0GCSqGSIb3DQEBBQUAMDIxCzAJBgNV BAYTAkpQMREwDwYDVQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcDAeFw0x MjAxMDYwMjEyMDNaFw0xNDAxMDUwMjEyMDNaMDIxCzAJBgNVBAYTAkpQMREwDwYD VQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcDCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBAK7r10TPJ6ANhQ8lK7IvX7E8KlWf4hA7LfbSy4EYbQOr nTsNu52lnqPDnRrMhemWx1cSgOYSzMzW2b5OufSR8rGM/CVQBKmmKScsG2mG0KOX CdBJKBJv+vk9SV9zfPCLETiE9gqy86Tz9UxLQUKIN/Vwj2GpQ6wIaJQGxrUtkdo9 kRzVA+PrLz+1mdhcNnvu15IzKoqCYwYQDrT1XysvKt8GPkYPlVweBzawpGOBqrPi zmju7P8yUfqoaO9eJr4arV+dZVup4yGTQlmrHbe/em9+l4HEboD8kiqiUiGwO5Ap 3Ndtco4yfJDYXu4b6rVJAV+c8YZfyboJZqPIEzGTvoECAwEAAaOBlDCBkTAdBgNV HQ4EFgQUbwJb5soi8EcvovonJ/GS3Di8VngwYgYDVR0jBFswWYAUbwJb5soi8Ecv ovonJ/GS3Di8VnihNqQ0MDIxCzAJBgNVBAYTAkpQMREwDwYDVQQKEwhtaXhpIElu YzEQMA4GA1UEAxMHbWl4aS5qcIIJAJU4Z27Mql6HMAwGA1UdEwQFMAMBAf8wDQYJ KoZIhvcNAQEFBQADggEBAKmheYWIpvyoSz0eBkcmdeZMq+EgH2lrbdfIIkpZ86N9 TFk7whfSlpSsOPaTyJcjTyWOV7orMdsOHwDTdSeCFtIoatHbVsy/KNYQcO+zAI3f glJ7MjpmN94fv0fRluwzp9g3OL90cC6b4qbDogtttGg8d+jiZ0Y38lOg0EOjjVQp jocQn0etv9PxY9zzcqOcxJXr/S9GkQFyc4HqzPJwT+FNS44pf7NM5cG9Yr/IKeQh vhWPsX3bF9Br9o7nSrcTeJzm5u3JQ7Rt0qSX3RPW4XA6uqd4DjrBQqkzk3tc6S25 L1kBVeo29EXDETUnfGz6UuNcxuA6yfXl6l7ypSVpv90= -----END CERTIFICATE-----
交換後のリクエスト内容の変更
署名付きリクエストにおいて、弊社サーバにて使用している鍵を識別するために、xoauth_signature_publickeyパラメータが送信されています。このxoauth_signature_publickeyパラメータ値によって、アプリ側サーバでは使用する公開鍵はどれなのかを判断することが可能です。
交換前および交換後のxoauth_signature_publickeyパラメータの値は、以下のように変更されます。
- 交換前: "sr_20100323"
- 交換後: "sr_20120106"
また、署名を付与するためのoauth_signatureパラメータ値に関しては、以下となります。
- 交換前: 古い鍵で生成された署名文字列
- 交換後: 新しい鍵で生成された署名文字列
プログラム変更内容
弊社側にて鍵の交換を行った後には、署名付きリクエストにて付与される署名は、交換後の新しい公開鍵でのみ妥当性検証を行うことができます。ただし、弊社側サーバでの鍵の入れ替え作業中は、上記のリクエストが混在することになります。つまり、弊社側作業開始から約1時間弱は、古い鍵と新しい鍵の両方のリクエストがアプリ側サーバに送信されることになりますので、アプリ側サーバにて両方の鍵を使い分けられるように対応していただくことが必要となります。
具体的には、xoauth_signature_publickeyパラメータ値により、使用する公開鍵を切り替えます。例えば、以下のようになります。
String publicKey = request.getParameter( "xoauth_signature_publickey"); // パラメータ値取得 if ("sr_20100323".equals(publicKey)) { // 古い公開鍵を使って妥当性検証 } else if ("sr_20120106".equals(publicKey)) { // 新しい公開鍵を使って妥当性検証 }
事前テスト方法
新しい鍵を使ったテストを行うことができます。run_appli.plページを表示する際に、「shindig_beta=1」というパラメータを追記することで、新しい鍵が使われた署名つきリクエストが送信されます。これと同時に、xoauth_signature_publickeyパラメータ値に関しても、"sr_20120106"という値で送信されます。
これにより、署名つきリクエストを受信するプログラムの修正確認を行うことが可能です。
スケジュール
公開鍵の交換に関するスケジュールは、以下となります。
- 新しい公開鍵の掲載: 2012年1月18日
- 新しい鍵への交換: 2012年2月22日
- 古い鍵の有効期限切れ: 2012年3月22日17時15分59秒