使用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 点后,我们的认证中心已完全配置。

在下一部分中,我将描述我们将如何与认证机构合作以完成中描述的内容 文章的前一部分.

来源: habr.com

添加评论