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

こんにちは。このトピックを引き続き取り上げましょう(前回の部分はリンクからご覧いただけます).

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

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

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

  1. インストール ディストリビューション openssl-1.1.1g をダウンロードします。
    openSSL にはさまざまなバージョンがあります。 Rutoken のドキュメントには、openSSL バージョン 1.1.0 以降が必要であると記載されています。 openssl-1.1.1gバージョンを使用しました。 openSSL は公式 Web サイトからダウンロードできますが、インストールを簡単にするために、ネットワーク上で 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 FilesOpenSSL-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 で指定されたパスがここで置き換えられます。

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

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

  6. Rutokenが提供する暗号化アルゴリズムを接続します。
    この接続は openssl.cfg ファイルで行われます。
    • まず、必要な Rutoken アルゴリズムをダウンロードする必要があります。これらは、rtengine.dll、rtpkcs11ecp.dll というファイルです。
      これを行うには、Rutoken SDK をダウンロードします。 出典:.

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

      rtengine.dll は、Windows の .NET Framework 86 以降でサポートされています。
      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 で作成されました。

    パス変数では、openssl.exe が配置されているフォルダーへのパスを指定する必要があります。私の場合は、C:Program FilesOpenSSL-Win64bin です。

  8. ここで、手順 5 に戻り、demoCA ディレクトリに不足しているファイルを作成できます。
    1. 何も動作しない最初の重要なファイルは serial です。これは拡張子のないファイルで、その値は 01 である必要があります。このファイルを自分で作成し、内部に 01 を書き込むことができます。また、sdk/openssl/rtengine/samples/tool/demoCA/ にある Rutoken SDK からダウンロードすることもできます。
      demoCA ディレクトリにはシリアル ファイルがあり、それがまさに必要なものです。
    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 つのポイントをすべて完了すると、認証局が完全に構成されたと仮定します。

次のパートでは、CAと協力して、前述の内容をどのように実現するかについて説明します。 記事の前の部分.

出所: habr.com

DDoS 保護機能を備えた信頼性の高いサイト用ホスティング、VPS VDS サーバーを購入する 🔥 DDoS攻撃対策付きの信頼性の高いウェブサイトホスティング、VPS/VDSサーバーを購入しましょう | ProHoster