使用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 中指定的路徑。

    另一個重要的一點是創建一個空的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

      非常重要的一點。 如果沒有安裝 Rutoken 驅動程序,則庫 rtengine.dll、rtpkcs11ecp.dll 將無法工作。 Rutoken 還必須連接到計算機。 (要安裝 Rutoken 所需的一切,請參閱文章的前一部分 habr.com/en/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. 第一個重要的文件是串行文件,沒有它,任何事情都無法進行。 這是一個沒有擴展名的文件,其值應該是01。您可以自己創建這個文件,並在裡面寫入01。您也可以從Rutoken SDK中沿著路徑sdk/openssl/rtengine/samples/tool/demoCA下載它/。
      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 點後,我們的認證中心已完全配置。

在下一部分中,我將描述我們將如何與認證機構合作以完成中描述的內容 文章的前一部分.

來源: www.habr.com

添加評論