Kinh nghiệm sử dụng công nghệ Rutoken để đăng ký và phân quyền người dùng trong hệ thống (phần 2)

Chào buổi chiều Hãy tiếp tục với chủ đề nàyPhần trước có thể được tìm thấy tại liên kết).

Hôm nay chúng ta chuyển sang phần thực hành. Hãy bắt đầu bằng cách thiết lập CA của chúng tôi dựa trên thư viện mật mã nguồn mở chính thức openSSL. Thuật toán này đã được thử nghiệm bằng Windows 7.

Khi openSSL được cài đặt, chúng ta có thể thực hiện nhiều thao tác mã hóa khác nhau (chẳng hạn như tạo khóa và chứng chỉ) thông qua dòng lệnh.

Thuật toán của các hành động như sau:

  1. Tải xuống bản phân phối cài đặt openssl-1.1.1g.
    openSSL có các phiên bản khác nhau. Tài liệu về Rutoken nói rằng cần có openSSL phiên bản 1.1.0 hoặc mới hơn. Tôi đã sử dụng phiên bản openssl-1.1.1g. Bạn có thể tải xuống openSSL từ trang web chính thức, nhưng để cài đặt dễ dàng hơn, bạn cần tìm tệp cài đặt cho windows trên mạng. Tôi đã làm điều này cho bạn: slproweb.com/products/Win32OpenSSL.html
    Cuộn xuống trang và tải xuống Trình cài đặt Win64 OpenSSL v1.1.1g EXE 63MB.
  2. Cài đặt openssl-1.1.1g trên máy tính.
    Việc cài đặt phải được thực hiện theo đường dẫn tiêu chuẩn, được chỉ định tự động trong thư mục C:Program Files. Chương trình sẽ được cài đặt trong thư mục OpenSSL-Win64.
  3. Để thiết lập openSSL theo cách bạn cần, có tệp openssl.cfg. Tệp này nằm trong đường dẫn C:\Program Files\OpenSSL-Win64bin nếu bạn đã cài đặt openSSL như được mô tả trong đoạn trước. Đi tới thư mục lưu trữ openssl.cfg và mở tệp này bằng Notepad++ chẳng hạn.
  4. Bạn có thể đoán rằng cơ quan cấp chứng chỉ sẽ được cấu hình bằng cách nào đó bằng cách thay đổi nội dung của tệp openssl.cfg và bạn hoàn toàn đúng. Điều này đòi hỏi phải tùy chỉnh lệnh [ ca ]. Trong tệp openssl.cfg, phần đầu của văn bản nơi chúng tôi sẽ thực hiện các thay đổi có thể được tìm thấy là: [ ca ].
  5. Bây giờ tôi sẽ đưa ra một ví dụ về cài đặt cùng với mô tả của nó:
    [ 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
    

    Bây giờ chúng ta cần tạo thư mục demoCA và các thư mục con như trong ví dụ trên. Và đặt nó vào thư mục này dọc theo đường dẫn được chỉ định trong thư mục (Tôi có/Users/username/bin/openSSLca/demoCA).

    Điều rất quan trọng là phải đánh vần chính xác dir - đây là đường dẫn đến thư mục nơi đặt trung tâm chứng nhận của chúng tôi. Thư mục này phải được đặt trong /Users (nghĩa là trong tài khoản của một số người dùng). Ví dụ: nếu bạn đặt thư mục này trong C: Program Files, hệ thống sẽ không thấy tệp có cài đặt openssl.cfg (ít nhất là đối với tôi là như vậy).

    $dir - đường dẫn được chỉ định trong dir được thay thế ở đây.

    Một điểm quan trọng nữa là tạo một file index.txt trống, nếu không có file này thì các lệnh “openSSL ca…” sẽ không hoạt động.

    Bạn cũng cần phải có tệp nối tiếp, khóa riêng gốc (ca.key), chứng chỉ gốc (ca.crt). Quá trình lấy các tập tin này sẽ được mô tả dưới đây.

  6. Chúng tôi kết nối các thuật toán mã hóa do Rutoken cung cấp.
    Kết nối này diễn ra trong tệp openssl.cfg.

    • Trước hết, bạn cần tải xuống các thuật toán Rutoken cần thiết. Đây là các tệp rtengine.dll, rtpkcs11ecp.dll.
      Để thực hiện việc này, hãy tải xuống Rutoken SDK: www.rutoken.ru/developers/sdk.

      SDK Rutoken là tất cả những gì dành cho các nhà phát triển muốn dùng thử Rutoken. Có cả hai ví dụ riêng biệt để làm việc với Rutoken bằng các ngôn ngữ lập trình khác nhau và một số thư viện được trình bày. Thư viện của chúng tôi rtengine.dll và rtpkcs11ecp.dll lần lượt được đặt trong sdk Rutoken tại vị trí:

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

      Một điểm rất quan trọng. Thư viện rtengine.dll, rtpkcs11ecp.dll không hoạt động nếu không cài đặt trình điều khiển cho Rutoken. Ngoài ra Rutoken phải được kết nối với máy tính. (để cài đặt mọi thứ bạn cần cho Rutoken, hãy xem phần trước của bài viết habr.com/vi/post/506450)

    • Thư viện rtengine.dll và rtpkcs11ecp.dll có thể được lưu giữ ở bất kỳ đâu trong tài khoản người dùng.
    • Chúng tôi viết đường dẫn đến các thư viện này trong openssl.cfg. Để thực hiện việc này, hãy mở tệp openssl.cfg, đặt dòng ở đầu tệp này:
      openssl_conf = openssl_def

      Vào cuối tập tin bạn cần thêm:

      [ 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 - bạn phải chỉ định đường dẫn đến thư viện rtengine.dll.
      MODULE_PATH - bạn cần đặt đường dẫn đến thư viện rtpkcs11ecp.dll.

  7. Thêm các biến môi trường.

    Đảm bảo thêm biến môi trường chỉ định đường dẫn đến tệp cấu hình openssl.cfg. Trong trường hợp của tôi, biến OPENSSL_CONF được tạo bằng đường dẫn C:Program FilesOpenSSL-Win64binopenssl.cfg.

    Trong biến đường dẫn, bạn phải chỉ định đường dẫn đến thư mục chứa openssl.exe, trong trường hợp của tôi là: C:Program FilesOpenSSL-Win64bin.

  8. Bây giờ bạn có thể quay lại bước 5 và tạo các tệp còn thiếu cho thư mục demoCA.
    1. Tệp quan trọng đầu tiên nếu không có nó sẽ không hoạt động được là nối tiếp. Đây là một tệp không có phần mở rộng, giá trị của nó phải là 01. Bạn có thể tự tạo tệp này và viết 01 vào bên trong. Bạn cũng có thể tải xuống từ Rutoken SDK theo đường dẫn sdk/openssl/rtengine/samples/tool/demoCA /.
      Thư mục demoCA chứa tệp nối tiếp, đây chính xác là những gì chúng ta cần.
    2. Tạo một khóa riêng gốc.
      Để thực hiện việc này, chúng ta sẽ sử dụng lệnh thư viện openSSL, lệnh này phải được chạy trực tiếp trên dòng lệnh:

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

    3. Chúng tôi tạo một chứng chỉ gốc.
      Để thực hiện việc này, hãy sử dụng lệnh thư viện openSSL sau:

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

      Xin lưu ý rằng cần phải có khóa riêng gốc được tạo ở bước trước để tạo chứng chỉ gốc. Vì vậy, dòng lệnh phải được khởi chạy trong cùng thư mục.

    Bây giờ mọi thứ đều có tất cả các tệp bị thiếu để cấu hình hoàn chỉnh thư mục demoCA. Đặt các tệp đã tạo vào các thư mục được chỉ ra ở điểm 5.

Chúng tôi sẽ cho rằng sau khi hoàn thành tất cả 8 điểm, trung tâm chứng nhận của chúng tôi đã được cấu hình đầy đủ.

Trong phần tiếp theo, tôi sẽ mô tả cách chúng tôi sẽ làm việc với cơ quan cấp chứng chỉ để đạt được những gì được mô tả trong phần trước của bài viết.

Nguồn: www.habr.com

Thêm một lời nhận xét