ニュース » mixiアプリ » 署名付きリクエストで使用する公開鍵の更新手順について
署名付きリクエストで使用する公開鍵の更新手順について
2010.03.24 mixiアプリ
先日こちらにてお伝えいたしております公開鍵の更新に関してですが、交換手順をまとめましたので、お知らせいたします。以下をご参照いただき、開発されたmixiアプリにてご対応いただきますよう、お願いいたします。
弊社サーバでの鍵交換作業は、2010年4月19日を予定しております。19日以降は、全ての署名付きリクエストにて新しい鍵が適用されることになります。急なお願いとなってしまい大変申し訳ございませんが、対応漏れのないよう修正作業の程お願いいたします。
署名付きリクエストで使用する公開鍵の更新について
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にて掲載されている公開鍵を使用することになりますが、今まで使用してきた鍵の有効期限が、2010年4月28日16時2分15秒までとなります。そのため、鍵の交換を行うことが必要です。この交換に関する手順として、弊社サーバでの鍵の入れ替えに加えて、署名付きリクエストの送信先サーバに関しても対応が必要となりますので、そのための手順を以下に説明いたします。
※ 本ページ内の日時は、全てJST(GMT+09:00)です。
手順の概要
新しい鍵への交換のための手順の概要は、以下となります。
- mixi Developer Centerに掲載されている新しい公開鍵を入手します。
- 署名付きリクエストにて送信される内容に、xoauth_signature_publickeyパラメータが含まれていることを確認します。
- xoauth_signature_publickeyパラメータ値に応じて、使用する公開鍵を切り替えて署名を検証するように、アプリ側サーバのプログラムを変更します。
- 弊社側サーバにて、使用する鍵を変更します。アプリ側サーバに新しい鍵で作られた署名が送信されます。
新しい公開鍵
新しい公開鍵は、以下となります。この公開鍵の有効期限は、2012年3月22日17時15分59秒までとなります。
-----BEGIN CERTIFICATE----- MIICdzCCAeCgAwIBAgIJANCWpLIspxwbMA0GCSqGSIb3DQEBBQUAMDIxCzAJBgNV BAYTAkpQMREwDwYDVQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcDAeFw0x MDAzMjMwODE1NTlaFw0xMjAzMjIwODE1NTlaMDIxCzAJBgNVBAYTAkpQMREwDwYD VQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcDCBnzANBgkqhkiG9w0BAQEF AAOBjQAwgYkCgYEAtbq5Rns5IEktXldZ+37Fjlavnuc4JuwrD4F+4NQwVwVtR5yw Vg10EanXWSGIAbUFx6hlppYOb0x/3PBMG80643LmXSJmvv4ViRUBl2Ys9Ie2L/D9 KVQXDWgJjxBGqo5MO6rA/Ip78kbiNbIQJUIJtbuJZWL3LMVe6mpIO2SUi1UCAwEA AaOBlDCBkTAdBgNVHQ4EFgQU8bp8/6lmt5L8em6dZyoGciUUmuUwYgYDVR0jBFsw WYAU8bp8/6lmt5L8em6dZyoGciUUmuWhNqQ0MDIxCzAJBgNVBAYTAkpQMREwDwYD VQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcIIJANCWpLIspxwbMAwGA1Ud EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEApalbBgXxnLJW8fM6W7E7GAE4QZbE lvYqvtQSxwacGYoqF2FW1zrBkmTB12LTddFU01pqDaeels3Ru5TNOnTIJemFWW0D viKtu9GqsrOye6AZR+XA5Iy/vq3EV1TCGuDNmhJaHAiLeYuLbEqmvH7/l9xNsafH IpqnsHwF1pm0bTY= -----END CERTIFICATE-----
交換後のリクエスト内容の変更
署名付きリクエストにおいて、弊社サーバにて使用している鍵を識別するために、xoauth_signature_publickeyパラメータが送信されています。このxoauth_signature_publickeyパラメータ値によって、アプリ側サーバでは使用する公開鍵はどれなのかを判断することが可能です。
交換前および交換後のxoauth_signature_publickeyパラメータの値は、以下のように変更されます。
- 交換前: “mixi.jp”
- 交換後: “sr_20100323″
また、署名を付与するためのoauth_signatureパラメータ値に関しては、以下となります。
- 交換前: 古い鍵で生成された署名文字列
- 交換後: 新しい鍵で生成された署名文字列
プログラム変更内容
弊社側にて鍵の交換を行った後には、署名付きリクエストにて付与される署名は、交換後の新しい公開鍵でのみ妥当性検証を行うことができます。ただし、弊社側サーバでの鍵の入れ替え作業中は、上記のリクエストが混在することになります。つまり、弊社側作業開始から約1時間弱は、古い鍵と新しい鍵の両方のリクエストがアプリ側サーバに送信されることになりますので、アプリ側サーバにて両方の鍵を使い分けられるように対応していただくことが必要となります。
今までは、xoauth_signature_publickeyパラメータ値を処理する必要はなかったのですが、どちらのリクエストにおいても対応できるようにするためには、このパラメータ値を見て条件分岐する必要があります。具体的には、xoauth_signature_publickeyパラメータ値により、使用する公開鍵を切り替えます。例えば、以下のようになります。
String publicKey = request.getParameter( "xoauth_signature_publickey"); // パラメータ値取得 if ("mixi.jp".equals(publicKey)) { // 古い公開鍵を使って妥当性検証 } else if ("sr_20100323".equals(publicKey)) { // 新しい公開鍵を使って妥当性検証 }
事前テスト方法
新しい鍵を使ったテストを行うことができます。run_appli.plページを表示する際に、「shindig_beta=1」というパラメータを追記することで、新しい鍵が使われた署名つきリクエストが送信されます。これと同時に、xoauth_signature_publickeyパラメータ値に関しても、”sr_20100323″という値で送信されます。
これにより、署名つきリクエストを受信するプログラムの修正確認を行うことが可能です。
スケジュール
公開鍵の交換に関するスケジュールは、以下となります。
- 新しい公開鍵の掲載: 2010年3月24日
- 新しい鍵への交換: 2010年4月19日
- 古い鍵の有効期限切れ: 2010年4月28日16時2分15秒