jBroker MQでは、コンシューマアプリケーションとプロデューサアプリケーションの間で交換されるメッセージを確実に送信できる高度なセキュリティ機能がサポートされています。 特に、jBroker MQをすべての通信目的にSSL (Secure Socket Layer)を使用するように設定できます。 また、宛先の構造および名前がアプリケーションに影響を及ぼすことがあるため、組み込み名サービスを無効にすることができます。 この章では、jBroker MQの高度なセキュリティ機能の概要について説明します。
SSL (Secure Sockets Layer)は、クライアントアプリケーションおよびサーバアプリケーションが情報を安全に交換できるようにNetscapeにより開発されました。 SSLプロトコルは、任意のトランスポートプロトコルの上で階層になっており、HTTPなどのアプリケーションプロトコルで実行できます。 SSLは、パブリックキーによる暗号が基礎になっています。SSLの概念について「SSLプロトコルは、2つの通信アプリケーション(クライアントおよびサーバ)間での機密性が提供されるように設計されています。また、このプロトコルは、サーバ、およびオプションでクライアントを認証できるように設計されています」と説明されています。
SSLプロトコルの詳しい説明は次のとおりです。
暗号化パラメータが確立されると、アプリケーションデータは透過的に暗号化され、双方向で整合性がチェックされます。 SSLプロトコルおよびパブリックキー暗号化のさらに詳しい説明については、該当する資料を参照してください。
jBroker MQは、基礎となるjBroker ORBでSSLサポートを利用します。 保護機能は次の2つのカテゴリに分けられます。
上のリストで示した暗号には、4つのコンポーネントがあります。
暗号を指定する場合、暗号のグループを参照するか、jBroker MQサーバが使用する暗号のカンマ区切りリストを指定できます。 個々の暗号の名前は、上のリストに表示されています。 jBroker MQは、暗号の組み合わせに次の文字列を定義します。
RSA認証、暗号の非暗号化: SSL_RSA_WITH_NULL_SHAやSSL_RSA_WITH_NULL_MD5
すべてのRSAキー交換暗号: SSL_RSA_WITH_RC4_128_MD5、SSL_RSA_WITH_RC4_128_SHA、SSL_RSA_WITH_3DES_EDE_CBC_SHA、SSL_RSA_WITH_DES_CBC_SHA、SSL_RSA_EXPORT_WITH_RC4_40_MD5、SSL_RSA_EXPORT_WITH_DES40_CBC_SHA、およびSSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
エクスポートが許可されたRSAキー交換の暗号: SSL_RSA_EXPORT_WITH_RC4_40_MD5およびSSL_RSA_EXPORT_WITH_DES40_CBC_SHA
エクスポートが制限されたRSAキー交換の暗号: SSL_RSA_WITH_RC4_128_MD5、SSL_RSA_WITH_RC4_128_SHA、SSL_RSA_WITH_3DES_EDE_CBC_SHA、およびSSL_RSA_WITH_DES_CBC_SHA
すべてのDHEキー交換の暗号: SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA、SSL_DHE_RSA_WITH_DES_CBC_SHA、およびSSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
エクスポートが許可されたDHEキー交換の暗号: SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
エクスポートが制限されたDHEキー交換の暗号: SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHAおよびSSL_DHE_RSA_WITH_DES_CBC_SHA
認証のない匿名のDiffie-Hellman暗号: SSL_DH_anon_WITH_RC4_128_MD5、SSL_DH_anon_WITH_3DES_EDE_CBC_SHA、SSL_DH_anon_WITH_DES_CBC_SHA、SSL_DH_anon_EXPORT_WITH_RC4_40_MD5、およびSSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
すべてのDSA暗号: SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA、SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA、SSL_DH_DSS_WITH_DES_CBC_SHA、SSL_DHE_DSS_WITH_DES_CBC_SHA、SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA、およびSSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA
エクスポートが許可されたDSA暗号: SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHAおよびSSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA
整合性のみの暗号: SSL_RSA_WITH_NULL_MD5およびSSL_RSA_WITH_NULL_SHA
すべての機密暗号: SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5、SSL_RSA_EXPORT_WITH_RC4_40_MD5、SSL_RSA_WITH_RC4_128_MD5、SSL_RSA_WITH_RC4_128_SHA、SSL_RSA_EXPORT_WITH_DES40_CBC_SHA、SSL_RSA_WITH_DES_CBC_SHA、SSL_RSA_WITH_3DES_EDE_CBC_SHA、SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA、SSL_DH_DSS_WITH_DES_CBC_SHA、SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA、SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA、SSL_DHE_DSS_WITH_DES_CBC_SHA、SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA、SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA、SSL_DHE_RSA_WITH_DES_CBC_SHA、SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA、SSL_DH_anon_EXPORT_WITH_RC4_40_MD5、SSL_DH_anon_WITH_RC4_128_MD5、SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA、SSL_DH_anon_WITH_DES_CBC_SHA、およびSSL_DH_anon_WITH_3DES_EDE_CBC_SHA
jBroker MQでサポートされているすべての暗号
暗号が指定された順序により、優先順位が決定します。 つまり、暗号のクライアントのリストおよびjBroker MQサーバのリストの最初の共通暗号は、通信の確立に使用されます。
プラグ可能セキュリティは、JMQMessageServiceインタフェースから次のプロパティを使用して構成されます。
msgsvc.security.realm - 認証クラスの完全分類名。 このクラスは、Realmインタフェースを実装する必要があります。
msgsvc.security.manager - プリンシパルマネージャクラスの完全分類名。 このクラスは、PrincipalManagerインタフェースを実装する必要があります。 カスタムプリンシパルマネージャを指定する場合、カスタムRealmを指定する必要があります。
msgsvc.security.authorization - アクセス制御リストクラスの完全分類名。 このクラスは、AclManagerインタフェースを実装する必要があります。
SSL構成は、JMQMessageServiceインタフェースから次のプロパティを使用して、指定されます。
msgsvc.security.enable - 前に説明したとおり、jBroker MQサーバでセキュリティを有効にするには、このプロパティをtrueに設定する必要があります。
msgsvc.ssl.enable - このプロパティがtrueに設定されている場合、jBroker MQサーバは、安全な接続ファクトリオブジェクトを提供します。このオブジェクトは、クライアントが機密接続を作成するときに使用できます。 クライアント接続ファクトリは、目的の保護レベル、および認証局証明書と認証局のセットで構成する必要があります。
msgsvc.ssl.certificate - jBroker MQサーバのSSL情報のあるディレクトリ。 このプロパティは、msgsvc.ssl.enableプロパティがTRUEに設定されているときに評価されます。 jBroker MQサーバは、このディレクトリの次のファイルを参照します。
privateKey.derファイル。 キーは、オプションで暗号化されることもあります。certificate.chainファイル。 オプションで、certificate.derファイル(次を参照)を指定することもできます。certificate.derファイル。.derのすべてのファイルがロードされるcertsディレクトリ。 これらのファイルは、ASN.1 DERエンコードされたCA認証局証明書でなければなりません。
msgsvc.ssl.client.certificate - SSLを使用して暗号化するjBroker MQサーバで、クライアントアプリケーションが証明書付きで表現する必要があるかどうかを示すブールプロパティ。 このプロパティは、msgsvc.ssl.enableプロパティがTRUEに設定されているときに評価されます。
msgsvc.ssl.password - プライベートキーを復号化するときのパスワード。 このプロパティは、プライベートキーが暗号化される場合だけ指定する必要があります。 このプロパティは、msgsvc.ssl.enableプロパティがTRUEに設定されているときに評価されます。 また、privateKey.pkcs8ファイルからロードされるプライベートキーを復号化するときにも使用されます。
msgsvc.ssl.cipher.suites - サポートされている暗号のリスト。 このリストの各名前は、jBroker ORB CipherSuiteインタフェースで定義されている文字列定数と一致している必要があります。 次に例を示します。
msgsvc.naming.enable - jBroker MQのネームサービスの提供を無効にするブールプロパティ。 このパラメータのデフォルト値は、trueです。 このプロパティがfalseに設定されている場合、jBroker MQサーバは、COSネームサービスを管理オブジェクトおよび宛先に提供しません。 jBroker MQサーバの名前空間は、JNDI/CosNamingドライバを使用してアクセスされるので、保護されません。 jBroker MQサーバをSSLモードで実行している場合、クライアントが名前空間にクリアテキスト形式でアクセスできないように、その名前空間を無効にすることができます。 ネームサービスが無効にされている場合、管理オブジェクトおよび宛先(キューとトピック)は、JNDIを介してアクセスできません。 ただし、クライアントアプリケーションは、接続ファクトリのブートにはJMQConnectionFactoryオブジェクトを、また宛先オブジェクトのブートにはJMQQueueおよびJMQTopicオブジェクトを使用する必要があります。 クリアテキスト形式のアクセスによりアプリケーションのセキュリティが損なわれる場合にだけ、名前空間を無効に設定します。 これらのプロパティは、jBroker MQサーバプログラムjmqservで使用されるmsgsvc.propertiesファイルの一部です。