システムでのユーザーの登録と認可に Rutoken テクノロジーを使用した経験 (パート 2)

こんにちはこの話題を続けましょう前の部分はリンクからご覧いただけます).

今日は実践的な部分に移ります。 まずは、本格的なオープンソース暗号ライブラリ openSSL に基づいて CA を設定しましょう。 このアルゴリズムは Windows 7 を使用してテストされています。

openSSL がインストールされていると、コマンド ラインを介してさまざまな暗号化操作 (キーや証明書の作成など) を実行できます。

アクションのアルゴリズムは次のとおりです。

  1. インストール ディストリビューション openssl-1.1.1g をダウンロードします。
    openSSL にはさまざまなバージョンがあります。 Rutoken のドキュメントには、openSSL バージョン 1.1.0 以降が必要であると記載されています。 openssl-1.1.1g バージョンを使用しました。 openSSL は公式サイトからダウンロードできますが、より簡単にインストールするには、ネット上で Windows 用のインストール ファイルを見つける必要があります。 私はあなたのためにこれをしました: slproweb.com/products/Win32OpenSSL.html
    ページを下にスクロールして、Win64 OpenSSL v1.1.1g EXE 63MB インストーラーをダウンロードします。
  2. openssl-1.1.1g をコンピューターにインストールします。
    インストールは、C:Program Files フォルダーに自動的に示される標準パスに従って実行する必要があります。 プログラムは OpenSSL-Win64 フォルダーにインストールされます。
  3. openSSL を必要な方法でセットアップするために、openssl.cfg ファイルがあります。 前の段落で説明したように openSSL をインストールした場合、このファイルは C:\Program Files\OpenSSL-Win64bin パスにあります。 openssl.cfg が保存されているフォルダーに移動し、Notepad++ などを使用してこのファイルを開きます。
  4. おそらく、openssl.cfg ファイルの内容を変更することで証明機関が何らかの方法で設定されるだろうと推測していましたが、その通りです。 これには、[ ca ] コマンドのカスタマイズが必要です。 openssl.cfg ファイルでは、変更を加えるテキストの先頭が [ ca ] となっています。
  5. 次に、設定の例とその説明を示します。
    [ ca ]
    default_ca	= CA_default		
    
     [ CA_default ]
    dir		= /Users/username/bin/openSSLca/demoCA		 
    certs		= $dir/certs		
    crl_dir		= $dir/crl		
    database	= $dir/index.txt	
    new_certs_dir	= $dir/newcerts	
    certificate	= $dir/ca.crt 	
    serial		= $dir/private/serial 		
    crlnumber	= $dir/crlnumber	
    					
    crl		= $dir/crl.pem 		
    private_key	= $dir/private/ca.key
    x509_extensions	= usr_cert
    

    次に、上の例に示すように、demoCA ディレクトリとサブディレクトリを作成する必要があります。 そして、 dir で指定されたパスに沿ってこのディレクトリに配置します (私は /Users/username/bin/openSSLca/demoCA を持っています)。

    dir の綴りを正しくすることが非常に重要です。これは、認定センターが配置されるディレクトリへのパスです。 このディレクトリは /Users (つまり、あるユーザーのアカウント) に配置する必要があります。 たとえば、このディレクトリを C: Program Files に配置した場合、システムは openssl.cfg 設定を含むファイルを認識しません (少なくとも私にとってはそうでした)。

    $dir - dir で指定されたパスがここに置き換えられます。

    もう XNUMX つの重要な点は、空の Index.txt ファイルを作成することです。このファイルがないと、「openSSL ca …」コマンドは機能しません。

    シリアル ファイル、ルート秘密キー (ca.key)、ルート証明書 (ca.crt) も必要です。 これらのファイルを取得するプロセスを以下に説明します。

  6. Rutoken が提供する暗号化アルゴリズムを接続します。
    この接続は openssl.cfg ファイル内で行われます。

    • まず、必要な Rutoken アルゴリズムをダウンロードする必要があります。 これらは、rtengine.dll、rtpkcs11ecp.dll ファイルです。
      これを行うには、Rutoken SDK をダウンロードします。 www.rutoken.ru/developers/sdk.

      Rutoken SDK は、Rutoken を試してみたい開発者にとって必要なもののすべてです。 さまざまなプログラミング言語で Rutoken を操作するための個別の例と、いくつかのライブラリが紹介されています。 ライブラリ rtengine.dll と rtpkcs11ecp.dll は、それぞれ Rutoken SDK の次の場所にあります。

      sdk/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
      sdk/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll

      非常に重要な点です。 ライブラリ rtengine.dll、rtpkcs11ecp.dll は、Rutoken 用のドライバーがインストールされていないと機能しません。 また、Rutoken がコンピューターに接続されている必要があります。 (Rutoken に必要なものをすべてインストールするには、記事の前の部分を参照してください) habr.com/ru/post/506450)

    • rtengine.dll ライブラリと rtpkcs11ecp.dll ライブラリは、ユーザー アカウント内のどこにでも保存できます。
    • これらのライブラリへのパスを openssl.cfg に書き込みます。 これを行うには、openssl.cfg ファイルを開き、このファイルの先頭に次の行を追加します。
      openssl_conf = openssl_def

      ファイルの最後に以下を追加する必要があります。

      [ openssl_def ]
      engines = engine_section
      [ engine_section ]
      rtengine = gost_section
      [ gost_section ]
      dynamic_path = /Users/username/bin/sdk-rutoken/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
      MODULE_PATH = /Users/username/bin/sdk-rutoken/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll
      RAND_TOKEN = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP
      default_algorithms = CIPHERS, DIGEST, PKEY, RAND
      

      Dynamic_path - rtengine.dll ライブラリへのパスを指定する必要があります。
      MODULE_PATH - rtpkcs11ecp.dll ライブラリへのパスを設定する必要があります。

  7. 環境変数を追加します。

    openssl.cfg 構成ファイルへのパスを指定する環境変数を必ず追加してください。 私の場合、OPENSSL_CONF 変数はパス C:Program FilesOpenSSL-Win64binopenssl.cfg で作成されました。

    path 変数には、openssl.exe が存在するフォルダーへのパスを指定する必要があります。私の場合は、C: Program FilesOpenSSL-Win64bin です。

  8. ここで、ステップ 5 に戻り、demoCA ディレクトリに不足しているファイルを作成できます。
    1. 最初の重要なファイルは、これなしでは何も動作しません。シリアル ファイルです。 これは拡張子のないファイルで、その値は 01 である必要があります。このファイルを自分で作成し、中に 01 を書き込むこともできます。また、パス sdk/openssl/rtengine/samples/tool/demoCA に沿って Rutoken SDK からダウンロードすることもできます。 /。
      DemonCA ディレクトリには、まさに必要なものであるシリアル ファイルが含まれています。
    2. ルート秘密キーを作成します。
      これを行うには、openSSL ライブラリ コマンドを使用します。このコマンドはコマンド ラインで直接実行する必要があります。

      openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key

    3. ルート証明書を作成します。
      これを行うには、次の openSSL ライブラリ コマンドを使用します。

      openssl req -utf8 -x509 -key ca.key -out ca.crt

      ルート証明書を生成するには、前の手順で生成したルート秘密キーが必要であることに注意してください。 したがって、コマンド ラインは同じディレクトリで起動する必要があります。

    これで、demoCA ディレクトリの完全な構成に不足していたファイルがすべて含まれています。 作成したファイルをポイント5で示したディレクトリに配置します。

8 つのポイントをすべて完了すると、認定センターが完全に構成されたと想定します。

次のパートでは、で説明したことを達成するために認証局とどのように連携するかについて説明します。 記事の前の部分.

出所: habr.com

コメントを追加します