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