Solaris のシステム管理 (基本編)

ソフトウェアパッケージの概要

ソフトウェア管理には、ソフトウェア製品のインストールと削除が含まれます。Sun および Sun 以外のベンダーは、「パッケージ」という形式でソフトウェア製品を提供しています。

「パッケージング」という用語は一般に、ソフトウェア製品が使用されるシステムに、その製品を配布してインストールする方法を指します。パッケージは、定義済みフォーマットによるファイルとディレクトリの集まりです。このフォーマットは、アプリケーションバイナリインタフェース (ABI) に準拠します。ABI は、System V インタフェース定義を補足するものです。Solaris オペレーティング環境には、このフォーマットを解釈し、パッケージをインストールまたは削除したり、パッケージインストールを検査したりする方法を提供する 1 組のユーティリティがあります。

パッチは、既存のソフトウェアの正常な実行の妨げとなっているファイルとディレクトリを置換または更新するためのファイルとディレクトリの集まりです。パッチの詳細については、第 24 章「Solaris パッチの管理 (概要)」を参照してください。

署名付きパッケージおよびパッチ

パッケージにはデジタル署名を含めることができます。有効なデジタル署名付きのパッケージは、署名が適用された以降はパッケージの変更が行われていないことを保証します。署名付きパッケージを使用すると、パッケージをシステムに追加する前にデジタル署名を検証できるため、パッケージを安全にダウンロードまたは追加できます。

同じことが、署名付きパッチにも言えます。有効なデジタル署名付きのパッチは、署名が適用された以降はパッチの変更が行われていないことを保証します。署名付きパッチを使用すると、パッチをシステムに追加する前にデジタル署名を検証できるため、パッチを安全にダウンロードまたは追加できます。

署名付きパッチをシステムに追加する方法については、patchadd コマンドによる署名付きパッチの追加 (作業マップ)を参照してください。

署名付きパッケージを作成する方法については、『Application Packaging Developer's Guide (英語版)』を参照してください。

署名付きパッケージは、デジタル署名が含まれる点以外は、署名なしパッケージとまったく同一です。署名付きパッケージのインストール、照会、または削除は、既存の Solaris パッケージングツールを使って行えます。また、署名付きパッケージと署名なしパッケージは、バイナリレベルでも互換性があります。

デジタル署名されたパッケージまたはパッチをシステムに追加するには、信頼される証明書を使ってパッケージキーストアを設定しておく必要があります。これらの証明書は、パッケージやパッチ上のデジタル署名の有効性を確認する際に使用されます。

次の表は、署名付きパッケージおよびパッチに関する一般的な用語の一覧です。

用語 

定義 

 

キーストア 

証明書と鍵を格納するためのリポジトリ。それらの情報が必要になると、このリポジトリが検索される。 

  • Java キーストア – Solaris リリースでデフォルトでインストールされる証明書のリポジトリ。

    Java キーストアは通常、/usr/j2se/jre/lib/security ディレクトリに格納される。

  • パッケージキーストア – 署名付きパッケージおよびパッチをシステムに追加する際にインポートする証明書用のリポジトリ。

    パッケージキーストアは、デフォルトで /var/sadm/security ディレクトリに格納される。

 

信頼される証明書 

別のエンティティに属する公開鍵を備えた証明書。「信頼される証明書」という呼び名は、証明書に含まれている公開鍵が、その証明書のサブジェクトまたは所有者によって示された本人のものであることを、キーストアの所有者が信頼することに由来している。この信頼を表明するために、証明書の発行者はその証明書に署名する。

信頼される証明書は、署名を検証する際やセキュリティ保護されたサーバー (SSL サーバー) への接続を確立する際に使用される。 

 

ユーザー鍵 

暗号鍵に関する機密情報を保持する。この情報は、不正なアクセスを防ぐために、セキュリティが施された形式で格納される。ユーザー鍵は、ユーザーの非公開鍵と対応する公開鍵証明書から構成される。 

 

署名付きパッケージまたはパッチをシステムに追加する手順は、基本的に次の 3 つから構成される。

  1. pkgadm コマンドを使ってシステムのパッケージキーストアに証明書を追加する

  2. (省略可能) pkgadm コマンドを使って証明書を一覧表示する

  3. pkgadd コマンドを使ってパッケージを追加するか、patchadd コマンドを使ってパッチを追加する

署名付きパッケージをシステムに追加する手順については、署名付きパッケージの追加と削除 (作業マップ)を参照してください。署名付きパッチをシステムに追加する手順については、patchadd コマンドによる署名付きパッチの追加 (作業マップ)を参照してください。

Sun の証明書による署名付きパッケージおよびパッチの検証

「ストリーム形式」の SVR4 署名付きのパッケージまたはパッチには、PEM でコード化された PKCS7 署名が埋め込まれています。この署名には少なくとも、パッケージまたはパッチの暗号化されたダイジェストと署名者の X.509 公開鍵証明書とが含まれています。また、パッケージまたはパッチには「証明書チェーン」を含めることもできます。証明書チェーンを使うと、署名者の証明書からローカルに格納されている信頼される証明書へ、信頼関係のチェーンを形成することができます。

PEM でコード化された PKCS7 署名を使って、次のことを検証します。

次の表は、署名付きパッケージおよびパッチに関する暗号化関連の用語の一覧です。

用語 

定義 

 

ASN.1 

ASN.1 (Abstract Syntax Notation 1) は、一連の抽象オブジェクトを表現するための方式の 1 つである。たとえば、ASN.1 では、公開鍵証明書、公開鍵証明書を構成するすべてのオブジェクト、オブジェクトの収集順序などを定義している。ただし、ASN.1 では、オブジェクトを保存用または転送用にシリアライズする方法は定義していない。 

 

base64 

base64 は、任意のバイナリデータを ASCII テキストとしてコード化する方式の 1 つである。 

 

DER 

DER (Distinguished Encoding Rules) は、ASN.1 オブジェクトのバイナリ表現の 1 つである。DER では、コンピューティング環境で ASN.1 オブジェクトを保存用または転送用にシリアライズする方法を定義している。 

 

PEM 

PEM (Privacy Enhanced Message) は、base64 エンコーディングといくつかの任意のヘッダーを使って、ファイルを (DER またはその他のバイナリ形式で) コード化する方式である。もともとは、MIME タイプの電子メールメッセージをコード化するために使用された。また、PEM は、証明書と非公開鍵をファイルシステム上または電子メールメッセージ内のファイルにコード化する際にも広く使用される。 

 

PKCS7 

PKCS7 (Public Key Cryptography Standard #7) は、デジタル署名やデジタルエンベロープなどの暗号化データに対する汎用的な構文を定めた規格である。 

 

X.509 

ITU-T (International Telecommunication Union-Telcom) 勧告 X.509 は、広く採用されている X.509 公開鍵証明書の構文を定めた仕様である。 

この勧告では、認証サービスを提供するためのフレームワークが定義されている。X.509 で定義された 2 つの認証レベルを次に示す。 

  • 単純な認証 – パスワードを使ってユーザーの身元を検証する方式

  • 強い認証 – 暗号化技術を使って作成された資格情報に基づく方式。単純な認証でも不正なアクセスに対する多少の備えにはなるが、安全なサービスの提供基盤として使えるのは、強度の高い認証のみである。

 

Sun Microsystems から発行された認証済みデジタル署名を使って、ダウンロードされたパッケージやパッチが改ざんされていないことを検証できます。こうした証明書は、システムのキーストアにインポートされます。

Sun のすべての証明書は、先頃 GTE CyberTrust を買収した Baltimore Technologies によって発行されています。

Sun の証明書をインポートするときに特別なパスワードを使用することで、キーストアへのアクセスを保護できます。

pkgadm listcert コマンドを使えば、ローカルのパッケージキーストア内に格納されている証明書の情報を表示できます。たとえば、次のようになります。


# pkgadm listcert -P pass:store-pass
    Keystore Alias: GTE CyberTrust Root
       Common Name: GTE CyberTrust Root
  Certificate Type: Trusted Certificate
Issuer Common Name: GTE CyberTrust Root
    Validity Dates: <Feb 23 23:01:00 1996 GMT> - <Feb 23 23:59:00 2006 GMT>
   MD5 Fingerprint: C4:D7:F0:B2:A3:C5:7D:61:67:F0:04:CD:43:D3:BA:58
  SHA1 Fingerprint: 90:DE:DE:9E:4C:4E:9F:6F:D8:86:17:57:9D:D3:91:BC:65:A6...

次の表は、pkgadm listcert コマンドの出力を一覧にまとめたものです。

フィールド 

説明 

Keystore Alias (キーストア別名) 

印刷、署名、削除のいずれかの目的で証明書を取得する場合、この名前を証明書の参照名として使用する必要がある。 

Common Name (共通名) 

証明書の共通の名前。信頼される証明書の場合、この名前はキーストア別名と同じになる。 

Certificate Type (証明書の種類) 

次の 2 つの種類がある。 

  • Trusted Certificate (信頼される証明書) - ほかの証明書を検証する際の信頼基盤として使用可能な証明書。信頼される証明書には非公開鍵は関連付けられない。

  • Signing Certificate (署名証明書) - パッケージまたはパッチへの署名用として使用可能な証明書。署名証明書には非公開鍵が関連付けられる。

Issuer Common Name (発行者の共通名) 

この証明書の署名、発行をしたエンティティの名前。信頼される証明書発行局 (CA、Certificate Authority) が発行した証明書の場合、発行者の共通名は、共通名と同じになる。 

Validity Dates (有効な日付) 

証明書の有効な日付。 

MD5 Fingerprint (MD5 フィンガープリント) 

証明書の MD5 ダイジェスト。このダイジェストを使えば、その証明書が証明元からの転送中に改変されなかったかどうかを検証できる。 

SHA1 Fingerprint (SHA1 フィンガープリント) 

MD5 フィンガープリントに似ているが、異なるアルゴリズムを使って計算される。 

証明書を認証するには、各証明書の MD5 ハッシュおよび SHA1 ハッシュ (「フィンガープリント」とも呼ばれる) を、発行者によって公開されている既知の正しいフィンガープリントと比較します。

SunSolve Online の信頼される証明書

SunSolve Online は、以下の証明書を使って署名付きパッチ上のデジタル署名を検証します。なお、その際、PatchPro を含む以前の Solaris パッチ管理ツール (smpatch コマンド) を使います。

「証明書発行局」は、パッチ上のデジタル署名の復号時に使用される公開鍵と、こうした公開鍵の所有者の関係を認証します。

Sun ルート CA 証明書、Sun Class B CA 証明書、およびパッチ署名証明書は、PatchPro を含む Solaris パッチ管理ツールに含まれています。この 3 つの証明書により、Sun のルート CA 証明書から Class B CA 証明書、Class B CA 証明書からパッチ管理証明書にさかのぼってパッチの信頼性を検証する認証チェーンが構成されます。最終的に、Sun のルート CA は、GTE CyberTrust CA によって認証されます。

Sun の信頼される証明書のインポート

署名付きパッケージおよびパッチを追加するための Sun の信頼される証明書を取得するには、次の方法を使います。

パッケージキーストアのセットアップ

以前の Solaris リリースでは、パッチ管理ツールをダウンロードし、keytool コマンドを使って証明書をインポートすることで、PatchPro が使用する Java キーストアを作成することができました。

証明書の格納された Java キーストアがシステム上にすでに存在している場合、Sun Microsystems のルート CA 証明書を Java キーストアから keytool コマンドを使ってエクスポートできます。続いて、その証明書を、pkgadm コマンドを使ってパッケージキーストア内にインポートします。

ルート CA 証明書のパッケージキーストアへのインポートが完了すると、pkgadd コマンドや patchadd コマンドを使って署名付きパッケージおよびパッチをシステムに追加できるようになります。


注 –

なお、Sun Microsystems のルート証明書が必要となるのは、Sun が署名したパッチやパッケージを追加する場合のみです。


証明書をパッケージキーストアにインポートする手順については、信頼される証明書をパッケージキーストアにインポートする方法 (pkgadm addcert)を参照してください。

pkgadd コマンドを使って署名付きパッケージを追加するための完全な手順については、署名付きパッケージの追加と削除 (作業マップ)を参照してください。