Oracle Solaris セキュリティーサービス開発ガイド

プロバイダへの署名の追加

この節では、プロバイダに電子署名を追加して、プロバイダが暗号化フレームワーク内で動作できるようにする方法について説明します。また、プロバイダが正しく署名されたかどうかを確認する方法についても説明します。プロバイダは、 PKCS #11 ライブラリ、アルゴリズムを実装するロード可能なカーネルモジュール、またはハードウェアアクセラレータ用のデバイスドライバのいずれのオブジェクトでもかまいません。

Procedureプロバイダに署名するための証明書を要求するには

一般に、証明書の要求はプロバイダの開発者が行います。しかし、システム管理者がサイトのセキュリティーポリシーの一環として、この要求を処理するように依頼されることもあります。

  1. elfsign request コマンドを使用して、Sun の証明書を要求します。

    このコマンドは、証明書の要求に加えて非公開鍵の生成も行います。


    % elfsign request -k private-keyfile -r certificate-request
    
    private-keyfile

    非公開鍵の場所へのパス。この鍵は、あとでシステム管理者が Solaris 暗号化フレームワーク用にプロバイダに署名するときに必要となります。このディレクトリはセキュリティー保護しておく必要があります。Sun の証明書が保管されているディレクトリとは別のディレクトリを使用してください。

    certificate-request

    証明書要求へのパス

    次の例は、一般的な要求が Sun にどのように送付されるかを示しています。


    % elfsign request \
    -k /securecrypt/private/MyCompany.private.key \
    -r /reqcrypt/MyCompany.certrequest
    
    Enter Company Name / Stock Symbol or some other globally unique identifier.
    This will be the prefix of the Certificate DN:MYCORP
    
    The government of the United States of America restricts the export of 
    "open cryptographic interfaces", also known as "crypto-with-a-hole".
    Due to this restriction, all providers for the Solaris cryptographic
    framework must be signed, regardless of the country of origin.
    
    The terms "retail" and "non-retail" refer to export classifications 
    for products manufactured in the USA.  These terms define the portion of the
    world where the product may be shipped.  Roughly speaking, "retail" is 
    worldwide (minus certain excluded nations) and "non-retail" is domestic 
    only (plus some highly favored nations).  If your provider is subject to
    USA export control, then you must obtain an export approval (classification)
    from the government of the USA before exporting your provider.  It is
    critical that you specify the obtained (or expected, when used during 
    development) classification to the following questions so that your provider
    will be appropriately signed.
    
    Do you have retail export approval for use without restrictions based
    on the caller (for example, IPsec)? [Yes/No] N
    
    If you have non-retail export approval for unrestricted use of your
    provider by callers, are you also planning to receive retail approval
    restricting which export sensitive callers (for example, IPsec) may
    use your provider? [Y/N] Y
    

    非公開鍵は、指定したファイル名 (/etc/crypto/private/MyCompany.private.key ファイルなど) に格納されます。証明書要求も指定したファイル名 (/reqcrypt/MyCompany.certrequest ファイルなど) に格納されます。

  2. 証明書要求を Sun に送付します。

    証明書要求を次の電子メールアドレスに送信します。 solaris-crypto-req@sun.com

    Sun では、証明書要求ファイルから証明書を作成します。作成された証明書のコピーが返送されます。

  3. Sun から受け取った証明書を /etc/crypto/certs ディレクトリに格納します。

    安全のため、非公開鍵と証明書要求は別のディレクトリに格納するようにしてください。

Procedureプロバイダに署名するには

一般に、プロバイダへの署名はプロバイダの開発者が行います。しかし、システム管理者がサイトのセキュリティーポリシーの一環として、開発者のバイナリに署名するように依頼されることもあります。

  1. プロバイダに署名します。elfsign sign コマンド、Sun から受け取った証明書、および Sun の証明書を要求するための非公開鍵を使用します。


    % elfsign sign -k private-keyfile -c Sun-certificate -e provider-object
    
    -k

    Sun に送信された証明書要求の作成に使用された非公開鍵が含まれているファイル。

    -c

    証明書要求によって Sun から発行された証明書へのパス。

    -e

    Solaris 暗号化フレームワーク内で使用するために署名されるプロバイダ (バイナリ) へのパス。

    次の例は、プロバイダに署名する方法を示しています。


    % elfsign sign \
    -k /securecrypt/private/MyCompany.private.key \
    -c /etc/crypto/certs/MyCompany
    -e /path/to/provider.object
    

    elfsign sign を使用すると、指定された場所にあるオブジェクトが変更されるので注意してください。オブジェクトの未署名版が必要な場合は、elfsign sign を適用する前に、オブジェクトを別の場所にコピーする必要があります。

Procedureプロバイダが署名されているかどうかを確認するには

  1. Sun が発行した証明書と署名付きプロバイダへのパスを収集します。

  2. elfsign verify コマンドを使用して、プロバイダが正しく署名されているかどうかを確認します。

    次の例は、証明書がデフォルトディレクトリ /etc/crypto/certs/MyCompany に格納されていると想定した場合の検証を示しています。


    % elfsign verify \
    -e /path/to/MyProvider.so.1
    elfsign: verification of /path/to/MyProvider.so.1 passed

    次の例は、証明書がデフォルト以外のディレクトリに格納されている場合を示しています。


    % elfsign verify \
    -c /path/to/MyCerts  \
    -e /path/to/MyProvider.so.1
    elfsign: verification of /path/to/MyProvider.so.1 passed

    次の例は、制限付きの証明書で署名されたプロバイダの検証を示しています。


    % elfsign verify \
    -e /path/to/MyRestrictedProvider.so.1
    elfsign: verification of /path/to/MyRestrictedProvider.so.1 passed, \
    but restricted.

Procedureリテール版の輸出用の起動ファイルを作成するには

この手順は、国内での使用と制限された国外での使用のために同じプロバイダが出荷される場合に役に立ちます。すべての顧客に対して使用制限付き証明書の鍵を使ってプロバイダに署名します。呼び出し側に基づいた制限のないプロバイダを使用する顧客に対しては、IPsec での使用を許可する特別な起動ファイルを作成して組み込みます。起動ファイルは、プロバイダと同じディレクトリに存在させる必要があります。起動ファイルの命名規則では、ドライバの名前に拡張子 .esa を追加します (例: /kernel/drv/vca.esa)。

  1. プロバイダに署名します。elfsign sign コマンド、Sun から受け取った証明書、および Sun の証明書を要求するための非公開鍵を使用します。


    % elfsign sign -a -k private-keyfile -c Sun-certificate -e provider-object
    
    -a

    署名付きの ELF 署名用起動 (.esa) ファイルを作成します。このオプションは、暗号化プロバイダが非リテール版の輸出の承認とリテール版の輸出の承認の両方を必要とする場合に使用します。リテール版の承認を行うには、IPsec などの輸出の影響を受けやすい呼び出し側を制限します。このオプションは、プロバイダのバイナリが制限付きの証明書であらかじめ署名されているものとします。

    -k

    Sun Microsystems, Inc. に送信された証明書要求の作成に使用された非公開鍵が含まれているファイル。

    -c

    証明書要求によって Sun から発行された証明書へのパス。

    -e

    Solaris 暗号化フレームワーク内で使用するために署名されるプロバイダ (バイナリ) へのパス。

    次の例は、プロバイダに署名する方法を示しています。


    % elfsign sign \
    -a \
    -k /securecrypt/private/MyCompany.private.key \
    -c /etc/crypto/certs/MyCompany
    -e /path/to/provider.object