ประสบการณ์ในการใช้เทคโนโลยี Rutoken ในการลงทะเบียนและอนุญาตผู้ใช้ในระบบ (ตอนที่ 2)

สวัสดีตอนบ่าย เรามาต่อกันที่หัวข้อนี้ส่วนก่อนหน้าสามารถดูได้ที่ลิงค์).

วันนี้เรามาดูส่วนที่ใช้งานได้จริง เริ่มต้นด้วยการตั้งค่า CA ของเราตาม openSSL ไลบรารีการเข้ารหัสแบบโอเพ่นซอร์สที่มีคุณสมบัติครบถ้วน อัลกอริทึมนี้ได้รับการทดสอบโดยใช้ 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 Installer
  2. ติดตั้ง openssl-1.1.1g บนคอมพิวเตอร์
    การติดตั้งจะต้องดำเนินการตามเส้นทางมาตรฐานซึ่งจะระบุไว้โดยอัตโนมัติในโฟลเดอร์ C: Program Files โปรแกรมจะถูกติดตั้งในโฟลเดอร์ OpenSSL-Win64
  3. เพื่อตั้งค่า openSSL ตามที่คุณต้องการ จะมีไฟล์ openssl.cfg ไฟล์นี้อยู่ในเส้นทาง C:\Program Files\OpenSSL-Win64bin หากคุณติดตั้ง openSSL ตามที่อธิบายไว้ในย่อหน้าก่อนหน้า ไปที่โฟลเดอร์ที่เก็บ 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

      จุดที่สำคัญมาก ไลบรารี rtengine.dll, rtpkcs11ecp.dll ไม่ทำงานหากไม่มีไดรเวอร์ที่ติดตั้งสำหรับ Rutoken Rutoken จะต้องเชื่อมต่อกับคอมพิวเตอร์ด้วย (สำหรับการติดตั้งทุกสิ่งที่คุณต้องการสำหรับ Rutoken โปรดดูส่วนก่อนหน้าของบทความ habr.com/th/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 คะแนนแล้ว ศูนย์การรับรองของเราได้รับการกำหนดค่าอย่างสมบูรณ์

ในส่วนถัดไป ผมจะอธิบายว่าเราจะทำงานร่วมกับหน่วยงานออกใบรับรองอย่างไรเพื่อให้บรรลุผลตามที่อธิบายไว้ ส่วนก่อนหน้าของบทความ.

ที่มา: will.com

เพิ่มความคิดเห็น