ホーム > デベロッパ > SophiaFramework > BREW C++ 逆引きコード集

BREW C++ プログラミング : SophiaFramework 逆引き FAQ・コード集

独自にルート証明書を追加して https 通信を行う方法

https 通信を行うとき、サーバ証明書が使用するCA証明書が SSLROOTCERTS クラスに含まれない場合、BREW アプリ側で独自にルート証明書を追加する必要があります。

SophiaFramework UNIVERSE では、以下のようにして https 通信を行います。

  1. SFBX509Chain インスタンスを生成します。
  2. SFXFile , SFXPath , SFXBinaryStreamReader , SFXBuffer クラスを使って、DERエンコードされたCA証明書をバイナリデータとして読み込みます。
  3. SFBX509Chain::AddCert 関数を呼び出して、[1] で生成した SFBX509Chain インスタンスにWEBOPT_X509_ROOT_CERTS (ルート認証機関の証明書) として [2] で読み込んだ証明書(バイナリ形式)をセットします。
  4. SFXHTTPConnection::Open 関数を呼び出して https 通信をオープンします。
  5. SFXHTTPConnection::SetTrustMode 関数を呼び出して、認証モードを "SSL_TRUST_MODE_FAIL" に設定します。
  6. SFXHTTPConnection インスタンスが内部に保持する SFBWeb インスタンスを取得します。
  7. SFBWeb::AddOpt 関数を呼び出して、SFBWeb インスタンスにWEBOPT_DEFAULTSとして[1]で生成した SFBX509Chain インスタンスを追加します。
  8. SFXHTTPConnection::Connect 関数を呼び出して、https 接続を行い、以下 https プロトコルでデータ通信を行います。
  9. 最後に、SFXHTTPConnection::Close 関数を呼び出して https 通信をクローズします。

具体的なコードについては、下記のサンプルコードをご覧ください。

サンプルコードダウンロード( httpsapp.zip: 21.3kb )

(注)CA証明書読み込み時のバッファ(  SFXBuffer )および SFBX509Chain インスタンスを明示的に解放する場合は、SFXHTTPConnection::Close 関数呼出し後に行わなければいけません。そのため、CA証明書の読み込みおよび SFBX509Chain インスタンスの生成は、SFXHTTPConnection::Open 関数呼び出し前に行うことを推奨します。