4.4.8. SSLを利用するためのインタフェース |
本書では、SSLを利用する場合に特化したインタフェースについて説明します。
4.4.8.1. SSLについて |
Secure Socket Layer(SSL)プロトコルは、1994年にネットスケープ社によって開発され、現在では全てのメジャーなWebブラウザおよびサーバに実装されて います。
SSLは、セッションベースの暗号化と認証のためのインターネットプロトコルで、(クライアントとサーバと呼ばれる)2つのポイント間のセキュアなコネクションを提供します。
また、SSLはクライアント-サーバアプリケーションでの盗聴、改ざん、およびメッセージの偽造を防止するためのサーバ認証とクライアント認証を提供します。
4.4.8.2. CORBA::ORBクラス |
__use_ssl | SSLポート番号を設定する |
__cert_request | クライアント証明書を要求する |
__accept_mode | アクセプトモードを設定する |
__server_cert_key | サーバの鍵IDを指定する |
__client_cert_key | クライアント用の鍵IDを指定する |
4.4.8.3. CORBA::Objectクラス |
__client_use_ssl | SSLを使用した通信を行うかどうかを設定する |
4.4.8.4. そのほかの関数 |
Ob_ssl_initialize | SSLを初期化する |
Ob_ssl_finalize | Ob_ssl_initialize関数で確保した領域を解放する |
Ob_ssl_use_certificate | 証明書を設定する |
Ob_ssl_use_certificate_file | ファイル形式の証明書を設定する |
Ob_ssl_use_privateKey | プライベートカギを設定する |
Ob_ssl_use_privateKey_file | ファイル形式のプライベートカギを設定する |
Ob_ssl_check_privateKey | 証明書とプライベートカギのセットが一致するか調べる |
Ob_ssl_load_verify_locations | 信頼できるCA証明書(TrustedCA)の格納場所を指定する |
Ob_ssl_set_cert_verify_cb | 組み込み検証関数の代替関数を設定する |
Ob_ssl_set_verify | 証明書を検証するコールバック関数を設定する |
Ob_ssl_set_client_cert_cb | サーバから証明書を要求されたときに使うコールバック関数を指定する |
Ob_X509_STORE_CTX_get_current_cert | 証明書格納コンテキストから検証するX.509証明書を取り出す |
Ob_X509_get_version | X.509証明書からバージョン番号を取り出す |
Ob_X509_get_serialNumber | X.509証明書からシリアル番号を取り出す |
Ob_X509_get_issuer_name | X.509証明書から発行者名を取り出す |
Ob_X509_get_notBefore | X.509証明書から有効日を取り出す |
Ob_X509_get_notAfter | X.509証明書から有効期限を取り出す |
Ob_X509_get_subject_name | X.509証明書から対象者名を取り出す |
Ob_create_X509 | X.509証明書の作成 |
Ob_X509_free | X.509証明書の解放 |
Ob_create_EVP_PKEY | プライベートカギの作成 |
Ob_EVP_PKEY_free | プライベートカギの解放 |
Ob_is_ssl_connection | SSL接続かどうかを調べる |
CORBA::ORB::__use_ssl - SSLポート番号を設定する
#include <orb.h> void CORBA::ORB::__use_ssl( unsigned short port, CORBA::Environment& env = Ob_default_environment() );
SSLを用いた通信で使用するポート番号を設定します。
この設定は、サーバ側で有効です。
引数portには、ポート番号を指定します。
ありません。
起こりません。
ポート番号に0を設定することはできません。
この関数は、CORBA::ORB_init関数の直後に呼び出してください。
CORBA::ORB::__cert_request - クライアント証明書を要求する
#include <orb.h> void CORBA::ORB::__cert_request( CORBA::Boolean b, CORBA::Environment& env = Ob_default_environment() );
クライアント側に対して、クライアント証明書を要求します。
この設定は、サーバ側で有効です。
引数bには、以下のいずれかの値を指定します。
1 | : | クライアント証明書を要求します |
0 | : | クライアント証明書を要求しません |
ありません。
起こりません。
この関数は、CORBA::ORB_init関数の直後に呼び出してください。
CORBA::ORB::__accept_mode - アクセプトモードを設定する
#include <orb.h> void CORBA::ORB::__accept_mode( Ob_AcceptMode m, CORBA::Environment& env = Ob_default_environment() );
アクセプトモードを設定します。
この設定は、サーバ側で有効です。
引数mには、下記のいずれかの値を指定します。
Ob_AcceptSSLPortOnly | : | SSLポートのみで接続を受け付ます |
Ob_AcceptBothPort | : | SSLポートと通常ポートの両方で接続を受け付けます |
ありません。
起こりません。
この関数は、CORBA::ORB_init関数の直後に呼び出してください。
CORBA::ORB::__server_cert_key - サーバの鍵IDを指定する。
#include <orb.h> void CORBA::ORB::__server_cert_key( const char* key, CORBA::Environment& env = Ob_default_environment() );
サーバの鍵IDを指定します。
この設定は、サーバ側で有効です。
引数keyには、SecureWare/SecurityPackに登録したサーバの鍵IDを指定します。
ありません。
以下の例外がthrowされます。
CORBA::NO_MEMORY | : | メモリが足りません |
この関数は、CORBA::ORB_init関数の直後に呼び出してください。
CORBA::ORB::__client_cert_key - クライアントの鍵IDを指定する。
#include <orb.h> void CORBA::ORB::__client_cert_key( const char* key, CORBA::Environment& env = Ob_default_environment() );
クライアントの鍵IDを指定します。
この設定は、クライアント側で有効です。
引数keyには、SecureWare/SecurityPackに登録したクライアントの鍵IDを指定します。
ありません。
以下の例外がthrowされます。
CORBA::NO_MEMORY | : | メモリが足りません |
この関数は、CORBA::ORB_init関数の直後に呼び出してください。
CORBA::Object::__client_use_ssl - SSLを使用した通信を行うかどうかを設定する
#include <orb.h> void CORBA::Object::__client_use_ssl( CORBA::Long mode );
SSLと非SSLの通信を受け付けるサーバにリクエストを発行する際、SSL通信を使用するかどうかを設定します。
クライアント側がSSLを使用できない環境の場合、この設定は無視されます。
引数modeには、以下のいずれかの値を設定します。
0 | : | SSLを使用しない通信を行う場合 |
1 | : | SSLを使用した通信を行う場合 |
ありません。
起こりません。
他社のORBを使用して構築されたサーバと接続する場合は、この設定を使用しないでください。
Ob_ssl_initialize - SSLを初期化する
#include <orb.h> int Ob_ssl_initialize( CORBA::Environment& env = Ob_default_environment() );
SSLを初期化します。
正常に初期化できたときは1を返します。失敗したときは0を返します。
以下の例外がthrowされます
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
Ob_ssl_finalize - Ob_ssl_initialize関数で確保した領域を解放する
#include <orb.h> int Ob_ssl_finalize( CORBA::Environment& env = Ob_default_environment() );
Ob_ssl_initialize関数で確保した領域を解放します。
正常に終了処理ができたときは1を返します。失敗したときは0を返します。
起こりません。
Ob_ssl_use_certificate - 証明書を設定する
#include <orb.h> int Ob_ssl_use_certificate( Ob_SSLTarget target, X509* x509, CORBA::Environment& env = Ob_default_environment() );
X.509証明書を設定します。
targetには、下記のいずれかの値を指定します。
OB_SSL_SERVER | : | サーバ用のSSL_CTXに設定する場合 |
OB_SSL_CLIENT | : | クライアント用のSSL_CTXに設定する場合 |
x509には、X.509証明書を指定します。
プログラム例を以下に示します。
// 証明書 char* cert_base64[] = { "-----BEGIN CERTIFICATE-----", "MIICJzCCAZCgAwIBAgIBNDANBgkqhkiG9w0BAQQFADA6MQswCQYDVQQGEwJKUDEX", "MBUGA1UEChMOTkVDIENvcnByYXRpb24xEjAQBgNVBAMTCVNhbXBsZSBDQTAeFw0w", ... "-----END CERTIFICATE-----" }; #define N_CERT_BASE64 \ (int)(sizeof(cert_base64) / sizeof(cert_base64[0])) // プライベートカギ char* pkey_base64[] = { "-----BEGIN RSA PRIVATE KEY-----", "MIIBPAIBAAJBANQVvUkeUqtc+AMxJkinjHf7i/LZoeESLzK7PiK7clhIfsQd5zWo", "6VPIJT9fXUXb35QYrkG4oEAbj8EEnBURxI8CAwEAAQJAEDLG3cZMnxz/LlM7LtJp", ... "-----END RSA PRIVATE KEY-----" }; #define N_PKEY_BASE64 \ (int)(sizeof(pkey_base64) / sizeof(pkey_base64[0])) int main(int argc, char** argv) { X509* cert; EVP_PKEY* pkey; ... try { // 証明書の作成 cert = Ob_create_X509((const char**)cert_base64, N_CERT_BASE64); if( cert == 0 ){ // error ... } // プライベートカギの作成 pkey = Ob_create_EVP_PKEY((const char**)pkey_base64, N_PKEY_BASE64); if( pkey == 0 ){ // error ... } // 証明書を設定する。 Ob_ssl_use_certificate(OB_SSL_SERVER, cert); // プライベート鍵を設定する。 Ob_ssl_use_privateKey(OB_SSL_SERVER, pkey); ... } catch (CORBA::Exception& exc) { ... } ... try { Ob_X509_free(cert); Ob_EVP_PKEY_free(pkey); ... } catch (CORBA::Exception& exc) { ... } ... }
正常に設定できたときは1を返します。失敗したときは1以外の値を返します。
以下の例外がthrowされます。
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
CORBA::BAD_PARAM | : | 引数が不正です |
Ob_ssl_use_certificate_file - ファイル形式の証明書を設定する
#include <orb.h> int Ob_ssl_use_certificate_file( Ob_SSLTarget target, char* file, int type, CORBA::Environment& env = Ob_default_environment() );
ファイル形式の証明書を設定します。
targetには、下記のいずれかの値を指定します。
OB_SSL_SERVER | : | サーバ用のSSL_CTXに設定する場合 |
OB_SSL_CLIENT | : | クライアント用のSSL_CTXに設定する場合 |
fileには、証明書の格納されたファイルのパスを指定します。
typeには、下記のいずれかの値を指定します。
OB_SSL_FILETYPE_PEM | : | 証明書がPEM形式の場合 |
OB_SSL_FILETYPE_ASN1 | : | 証明書がASN1形式の場合 |
プログラム例を以下に示します。
#define PEM_FILE "./server.pem" int main(int argc, char** argv) { ... try { // PEMエンコードされた証明書を設定する。 Ob_ssl_use_certificate_file(OB_SSL_SERVER, PEM_FILE, OB_SSL_FILETYPE_PEM); // PEMエンコードされたプライベート鍵を設定する。 Ob_ssl_use_privateKey_file(OB_SSL_SERVER, PEM_FILE, OB_SSL_FILETYPE_PEM); // 証明書とプライベート鍵が一致するかチェックする。 int ret = Ob_ssl_check_privateKey(OB_SSL_SERVER); if( ret != 1 ){ cerr << "certificate and private key set not matched." << endl; return -1; } } catch (CORBA::Exception& exc) { ... } ... }
正常に設定できたときは1を返します。失敗したときは1以外の値を返します。
以下の例外がthrowされます。
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
CORBA::BAD_PARAM | : | 引数が不正です |
Ob_ssl_use_privateKey - プライベートカギを設定する
#include <orb.h> int Ob_ssl_use_privateKey( Ob_SSLTarget target, EVP_PKEY* pkey, CORBA::Environment& env = Ob_default_environment() );
プライベートカギを設定します。
targetには、下記のいずれかの値を指定します。
OB_SSL_SERVER | : | サーバ用のSSL_CTXに設定する場合 |
OB_SSL_CLIENT | : | クライアント用のSSL_CTXに設定する場合 |
pkeyには、プライベートカギを指定します。
プログラム例はOb_ssl_use_certificateを参照してください。
正常に設定できたときは1を返します。失敗したときは1以外の値を返します。
以下の例外がthrowされます。
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
CORBA::BAD_PARAM | : | 引数が不正です |
Ob_ssl_use_privateKey_file - ファイル形式のプライベートカギを設定する
#include <orb.h> int Ob_ssl_use_privateKey_file( Ob_SSLTarget target, char* file, int type, CORBA::Environment& env = Ob_default_environment() );
ファイル形式のプライベートカギを設定します。
targetには、下記のいずれかの値を指定します。
OB_SSL_SERVER | : | サーバ用のSSL_CTXに設定する場合 |
OB_SSL_CLIENT | : | クライアント用のSSL_CTXに設定する場合 |
fileには、プライベートカギの格納されたファイルのパスを指定します。
typeには、下記のいずれかの値を指定します。
OB_SSL_FILETYPE_PEM | : | プライベートカギがPEM形式の場合 |
OB_SSL_FILETYPE_ASN1 | : | プライベートカギがASN1形式の場合 |
プログラム例はOb_ssl_use_certificate_fileを参照してください。
正常に設定できたときは1を返します。失敗したときは1以外の値を返します。
以下の例外がthrowされます。
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
CORBA::BAD_PARAM | : | 引数が不正です |
Ob_ssl_check_privateKey
- 証明書とプライベートカギのセットが一致するか調べる
#include <orb.h> int Ob_ssl_check_privateKey( Ob_SSLTarget target, CORBA::Environment& env = Ob_default_environment() );
SSLコネクションに対する証明書とプライベートカギのセットが一致するか調べます。
引数targetには、下記のいずれかの値を指定します。
OB_SSL_SERVER | : | サーバ用のSSL_CTXに設定する場合 |
OB_SSL_CLIENT | : | クライアント用のSSL_CTXに設定する場合 |
プログラム例はOb_ssl_use_certificate_fileを参照してください。
証明書とプライベートカギが一致したときは1を返します。一致しないときは1以外の値を返します。
以下の例外がthrowされます。
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
Ob_ssl_load_verify_locations
- 信頼できるCA証明書(TrustedCA)の格納場所を設定する
#include <orb.h> int Ob_ssl_load_verify_locations( Ob_SSLTarget target, char* CAfile, char* CApath, CORBA::Environment& env = Ob_default_environment() );
相手の証明書を検証するときに必要となる、信頼できるCA証明書(TrustedCA)の格納場所を設定します。
targetには、下記のいずれかの値を指定します。
OB_SSL_SERVER | : | サーバ用のSSL_CTXに設定する場合 |
OB_SSL_CLIENT | : | クライアント用のSSL_CTXに設定する場合 |
CAfileには、TrustedCAのPEMエンコードされたファイルを指定します。
CApathには、CAfileのサーチディレクトリを指定します。
プログラム例を以下に示します。
#define TRUSTED_CA_PEM "./trusted_CA.pem" int main(int argc, char** argv) { ... try { Ob_ssl_load_verify_locations(OB_SSL_CLIENT, TRUSTED_CA_PEM, NULL); } catch (CORBA::Exception& exc) { ... } ... }
正常に設定できたときは1を返します。失敗したときは1以外の値を返します。
以下の例外がthrowされます。
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
CORBA::BAD_PARAM | : | 引数が不正です |
Ob_ssl_set_cert_verify_cb - 組み込み検証関数の代替関数を設定する
#include <orb.h> int Ob_ssl_set_cert_verify_cb( Ob_SSLTarget target, int (*cb)(X509_STORE_CTX*, char*), char* arg, CORBA::Environment& env = Ob_default_environment() );
組み込み検証関数の代替関数を設定します。
証明書の検証時に設定したコールバック関数が呼び出されます。
targetには、下記のいずれかの値を指定します。
OB_SSL_SERVER | : | サーバ用のSSL_CTXに設定する場合 |
OB_SSL_CLIENT | : | クライアント用のSSL_CTXに設定する場合 |
cbには、コールバック関数を指定します。
argには、コールバック関数の第二引数に渡す任意の値を指定します。
正常に設定できたときは1を返します。失敗したときは1以外の値を返します。
以下の例外がthrowされます。
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
この設定を行うとOb_ssl_set_verify関数で設定したコールバック関数は呼び出されません。
検証関数の実装には電子証明書に関する多くの知識と「RSA BSAFE SSL-C」等の開発キットが必要となります。
Ob_ssl_set_verify - 証明書を検証するコールバック関数を設定する
#include <orb.h> int Ob_ssl_set_verify( Ob_SSLTarget target, int mode, int (*cb)(int, X509_STORE_CTX*), CORBA::Environment& env = Ob_default_environment() );
クライアントあるいはサーバ側のいずれかに受け取られた証明書は組み込み検証関数によって検証されます。
この関数でコールバックを設定しておくと、組み込み検証関数の後に呼び出されます。
組み込み検証関数の検証結果は、コールバック関数の第1引数として渡されます。証明書を信用する場合は1、拒絶する場合は0が渡されます。
このコールバック関数の戻り値が1ならば証明書は信用され、0ならば拒絶されます。
targetには、下記のいずれかの値を指定します。
OB_SSL_SERVER | : | サーバ用のSSL_CTXに設定する場合 |
OB_SSL_CLIENT | : | クライアント用のSSL_CTXに設定する場合 |
modeには、以下の値を指定します。
OB_SSL_VERIFY_NONE | : | 証明書の検証を行わない |
OB_SSL_VERIFY_PEER | : | 証明書の検証を行う |
OB_SSL_VERIFY_FAIL_IF_NO_PEER_CERT | : | 証明書が無い場合は受け付けない |
OB_SSL_VERIFY_CLIENT_ONCE | : | 証明書の検証は最初の1回のみ行う(再ネゴシエーション時) |
下2つは、OB_SSL_VERIFY_PEERと共に、"|"(ビット和)で結合して使用します。
cbには、コールバック関数を指定します。
プログラム例を以下に示します。
int verify_callback(int ok, X509_STORE_CTX* cert_ctx) { cout << "verify_callback was called." << endl; // 組み込み検証関数の結果 cout << " built-in verification function's result = " << ok << endl; // 必要に応じてチェックし、acceptなら1、rejectなら0を返す。 try { X509* cert = Ob_X509_STORE_CTX_get_current_cert(cert_ctx); CORBA::Long version = Ob_X509_get_version(cert); CORBA::String_var serialNo= Ob_X509_get_serialNumber(cert); CORBA::String_var issuer = Ob_X509_get_issuer_name(cert); CORBA::String_var before = Ob_X509_get_notBefore(cert); CORBA::String_var after = Ob_X509_get_notAfter(cert); CORBA::String_var subject = Ob_X509_get_subject_name(cert); } catch (CORBA::Exception& exp) { ... } cout << "Version : " << version << endl; cout << "SerialNo: " << (const char*)serialNo << endl; cout << "Issuer : " << (const char*)issuer << endl; cout << "Before : " << (const char*)before << endl; cout << "After : " << (const char*)after << endl; cout << "Subject : " << (const char*)subject << endl; return ok; } int main(int argc, char** argv) { ... try { // クライアントの証明書を検証する組み込みコールバックの // 代替コールバックを設定する。 Ob_ssl_set_verify(OB_SSL_SERVER, OB_SSL_VERIFY_PEER, verify_callback); } catch (CORBA::Exception& exp) { ... } ... }
正常に設定できたときは1を返します。失敗したときは1以外の値を返します。
以下の例外がthrowされます
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
Ob_ssl_set_cert_verify_cb関数でコールバック関数の設定を行うと、この関数で設定したコールバック関数は呼び出されません。
Ob_ssl_set_client_cert_cb
- サーバから証明書を要求されたときに使うコールバック関数を指定する
#include <orb.h> int Ob_ssl_set_client_cert_cb( int (*cb)(SSL*, X509**, EVP_PKEY**), CORBA::Environment& env = Ob_default_environment() );
サーバからクライアントの証明書を要求されたときに呼び出されるコールバック関数を指定します。
複数のクライアント証明書を選択して使用する場合などに用います。コールバック関数の第2引数には証明書を、第3引数にはプライベートカギを設定します。証明書とプライベートカギを設定した場合、コールバックの戻り値を1にします。設定しなかった場合は0にします。
この設定は、クライアント側で有効です。
引数cbには、コールバック関数を指定します。
プログラム例を以下に示します。
int client_cert_callback(SSL* ssl, X509** cpp, EVP_PKEY** kpp) { cout << "client certificate is requested by server." << endl; // 証明書とプライベート鍵を設定した場合、1を返す。 // *cpp = X.509証明書; // *kpp = プライベート鍵; // return 1; return 0; } int main(int argc, char** argv) { ... try { Ob_ssl_set_client_cert_cb(client_cert_callback); } catch (CORBA::Exception& exp) { ... } ... }
正常に設定できたときは1を返します。失敗したときは1以外の値を返します。
以下の例外がthrowされます。
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
CORBA::BAD_PARAM | : | 引数が不正です |
Ob_X509_STORE_CTX_get_current_cert
- X.509証明書格納コンテキストから検証するX.509証明書を取り出す
#include <orb.h> X509* Ob_X509_STORE_CTX_get_current_cert( X509_STORE_CTX* x509_store_ctx, CORBA::Environment& env = Ob_default_environment() );
証明書検証コールバック関数に渡されたX.509証明書格納コンテキストから X.509証明書を取り出します。
引数x509_store_ctxには、X.509証明書格納コンテキストを指定します。
プログラム例はOb_ssl_set_verifyを参照してください。
検証用のX.509が格納されていればX.509証明書を、格納されていなければ0を返します。
以下の例外がthrowされます
CORBA::BAD_PARAM | : | 引数が不正です |
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
Ob_X509_get_version - X.509証明書からバージョン番号を取り出す
#include <orb.h> CORBA::Long Ob_X509_get_version( X509* x509, CORBA::Environment& env = Ob_default_environment() );
X.509証明書からバージョン番号を取り出します。
引数x509には、X.509証明書を指定します。
プログラム例はOb_ssl_set_verifyを参照してください。
証明書のバージョン番号が返ります。
以下の例外がthrowされます。
CORBA::BAD_PARAM | : | 引数が不正です |
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
Ob_X509_get_serialNumber - X.509証明書からシリアル番号を取り出す
#include <orb.h> char* Ob_X509_get_serialNumber( X509* x509, CORBA::Environment& env = Ob_default_environment() );
X.509証明書からシリアル番号を取り出します。
引数x509には、X.509証明書を指定します。
プログラム例はOb_ssl_set_verifyを参照してください。
証明書のシリアル番号を返します。
以下の例外がthrowされます。
CORBA::BAD_PARAM | : | 引数が不正です |
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
CORBA::NO_MEMORY | : | メモリが足りません |
Ob_X509_get_issuer_name - X.509証明書から発行者名を取り出す
#include <orb.h> char* Ob_X509_get_issuer_name( X509* x509, CORBA::Environment& env = Ob_default_environment() );
X.509証明書から発行者名を取り出します。
引数x509には、X.509証明書を指定します。
プログラム例はOb_ssl_set_verifyを参照してください。
証明書の発行者名を返します。
以下の例外がthrowされます。
CORBA::BAD_PARAM | : | 引数が不正です |
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
CORBA::NO_MEMORY | : | メモリが足りません |
Ob_X509_get_notBefore - X.509証明書から有効日を取り出す
#include <orb.h> char* Ob_X509_get_notBefore( X509* x509, CORBA::Environment& env = Ob_default_environment() );
X.509証明書から有効日を取り出します。
引数x509には、X.509証明書を指定します。
プログラム例はOb_ssl_set_verifyを参照してください。
証明書の有効日を返します。
以下の例外がthrowされます。
CORBA::BAD_PARAM | : | 引数が不正です |
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
CORBA::NO_MEMORY | : | メモリが足りません |
Ob_X509_get_notAfter - X.509証明書から有効期限を取り出す
#include <orb.h> char* Ob_X509_get_notAfter( X509* x509, CORBA::Environment& env = Ob_default_environment() );
X.509証明書から有効期限を取り出します。
引数x509には、X.509証明書を指定します。
プログラム例はOb_ssl_set_verifyを参照してください。
証明書の有効期限を返します。
以下の例外がthrowされます。
CORBA::BAD_PARAM | : | 引数が不正です |
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
CORBA::NO_MEMORY | : | メモリが足りません |
Ob_X509_get_subject_name - X.509証明書から対象者名を取り出す
#include <orb.h> char* Ob_X509_get_subject_name( X509* x509, CORBA::Environment& env = Ob_default_environment() );
証明書から対象者名を取り出します。
引数x509には、X.509証明書を指定します。
プログラム例はOb_ssl_set_verifyを参照してください。
証明書の対象者名を返します。
以下の例外がthrowされます。
CORBA::BAD_PARAM | : | 引数が不正です |
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
CORBA::NO_MEMORY | : | メモリが足りません |
Ob_create_X509 - X.509証明書の作成
#include <orb.h> X509* Ob_create_X509( const char** data, CORBA::ULong size, int (* cb)(char*, int, int), CORBA::Environment& env = Ob_default_environment() );
PEMフォーマットのデータ(配列)からX.509証明書を作成します。
引数dataには、データ(配列)を指定します。
引数sizeには、データ(配列)のサイズ(要素数)を指定します。
引数cbには、0を指定します。 この引数は将来の拡張のために存在します。
プログラム例はOb_ssl_use_certificateを参照してください。
X.509証明書、または 0 を返します。
以下の例外がthrowされます。
CORBA::BAD_PARAM | : | 引数が不正です |
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
CORBA::NO_MEMORY | : | メモリが足りません |
Ob_X509_free - X.509証明書の解放
#include <orb.h> void Ob_X509_free( X509* x509, CORBA::Environment& env = Ob_default_environment() );
X.509証明書を解放します。
引数x509には、X.509証明書を指定します。
プログラム例はOb_ssl_use_certificateを参照してください。
ありません。
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
Ob_create_EVP_PKEY - プライベートカギの作成
#include <orb.h> EVP_PKEY* Ob_create_EVP_PKEY( const char** data, CORBA::ULong size, int (* cb)(char*, int, int), CORBA::Environment& env = Ob_default_environment() );
PEMフォーマットのデータ(配列)からプライベートカギを作成します。
引数dataには、データ(配列)を指定します。
引数sizeには、データ(配列)のサイズ(要素数)を指定します。
引数cbには、0を指定します。 この引数は将来の拡張のために存在します。
プログラム例はOb_ssl_use_certificateを参照してください。
プライベートカギ、または 0 を返します。
以下の例外がthrowされます。
CORBA::BAD_PARAM | : | 引数が不正です |
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
CORBA::NO_MEMORY | : | メモリが足りません |
#include <orb.h> void Ob_EVP_PKEY_free( EVP_PKEY* pkey, CORBA::Environment& env = Ob_default_environment() );
プライベートカギを解放します。
引数pkeyには、プライベートカギを指定します。
プログラム例はOb_ssl_use_certificateを参照してください。
ありません。
CORBA::INITIALIZE | : | SSLの初期化に失敗しました |
Ob_is_ssl_connection - SSL接続かどうかを調べる
#include <orb.h> CORBA::Boolean Ob_is_ssl_connection();
クライアントが、SSLポート経由で接続してきたかどうかを調べます。
SSL通信か否かによって処理を分岐したい場合などに使用します。
サーバメソッドの実装部で使用することができ、それ以外の場所で使用した場合の戻り値は不定です。
プログラム例を以下に示します。
CORBA::Double Calc_i::add(CORBA::Double a, CORBA::Double b, CORBA::Environment&) { CORBA::Boolean result = Ob_is_ssl_connection(); cout << "The communication which a "; cout << (result?"SSL":"normal"); cout << " connection was used for." << endl; return (a + b); }
SSLポート経由で接続されたときは1を返します。そうでなければ0を返します。
起こりません。