独自にルート証明書を追加して https 通信を行う方法
https 通信を行うとき、サーバ証明書が使用するCA証明書が SSLROOTCERTS クラスに含まれない場合、BREW アプリ側で独自にルート証明書を追加する必要があります。
SophiaFramework UNIVERSE では、以下のようにして https 通信を行います。
- SFBX509Chain インスタンスを生成します。
- SFXFile , SFXPath , SFXBinaryStreamReader , SFXBuffer クラスを使って、DERエンコードされたCA証明書をバイナリデータとして読み込みます。
- SFBX509Chain::AddCert 関数を呼び出して、[1] で生成した SFBX509Chain インスタンスにWEBOPT_X509_ROOT_CERTS (ルート認証機関の証明書) として [2] で読み込んだ証明書(バイナリ形式)をセットします。
- SFXHTTPConnection::Open 関数を呼び出して https 通信をオープンします。
- SFXHTTPConnection::SetTrustMode 関数を呼び出して、認証モードを "SSL_TRUST_MODE_FAIL" に設定します。
- SFXHTTPConnection インスタンスが内部に保持する SFBWeb インスタンスを取得します。
- SFBWeb::AddOpt 関数を呼び出して、SFBWeb インスタンスにWEBOPT_DEFAULTSとして[1]で生成した SFBX509Chain インスタンスを追加します。
- SFXHTTPConnection::Connect 関数を呼び出して、https 接続を行い、以下 https プロトコルでデータ通信を行います。
- 最後に、SFXHTTPConnection::Close 関数を呼び出して https 通信をクローズします。
具体的なコードについては、下記のサンプルコードをご覧ください。
サンプルコードダウンロード( httpsapp.zip: 21.3kb )
(注)CA証明書読み込み時のバッファ( SFXBuffer )および SFBX509Chain インスタンスを明示的に解放する場合は、SFXHTTPConnection::Close 関数呼出し後に行わなければいけません。そのため、CA証明書の読み込みおよび SFBX509Chain インスタンスの生成は、SFXHTTPConnection::Open 関数呼び出し前に行うことを推奨します。