สวัสดีตอนบ่าย เรามาต่อกันที่หัวข้อนี้
วันนี้เรามาดูส่วนที่ใช้งานได้จริง เริ่มต้นด้วยการตั้งค่า CA ของเราตาม openSSL ไลบรารีการเข้ารหัสแบบโอเพ่นซอร์สที่มีคุณสมบัติครบถ้วน อัลกอริทึมนี้ได้รับการทดสอบโดยใช้ Windows 7
เมื่อติดตั้ง openSSL แล้ว เราสามารถดำเนินการเข้ารหัสต่างๆ ได้ (เช่น การสร้างคีย์และใบรับรอง) ผ่านทางบรรทัดคำสั่ง
อัลกอริทึมของการกระทำมีดังนี้:
- ดาวน์โหลดการกระจายการติดตั้ง 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 - ติดตั้ง openssl-1.1.1g บนคอมพิวเตอร์
การติดตั้งจะต้องดำเนินการตามเส้นทางมาตรฐานซึ่งจะระบุไว้โดยอัตโนมัติในโฟลเดอร์ C: Program Files โปรแกรมจะถูกติดตั้งในโฟลเดอร์ OpenSSL-Win64 - เพื่อตั้งค่า openSSL ตามที่คุณต้องการ จะมีไฟล์ openssl.cfg ไฟล์นี้อยู่ในเส้นทาง C:\Program Files\OpenSSL-Win64bin หากคุณติดตั้ง openSSL ตามที่อธิบายไว้ในย่อหน้าก่อนหน้า ไปที่โฟลเดอร์ที่เก็บ openssl.cfg และเปิดไฟล์นี้โดยใช้ เช่น Notepad++
- คุณอาจเดาได้ว่าผู้ออกใบรับรองจะได้รับการกำหนดค่าโดยการเปลี่ยนเนื้อหาของไฟล์ openssl.cfg และคุณพูดถูกอย่างแน่นอน สิ่งนี้จำเป็นต้องมีการปรับแต่งคำสั่ง [ ca ] ในไฟล์ openssl.cfg จุดเริ่มต้นของข้อความที่เราจะทำการเปลี่ยนแปลงจะพบได้ดังนี้: [ ca ]
- ตอนนี้ฉันจะยกตัวอย่างการตั้งค่าพร้อมคำอธิบาย:
[ 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) กระบวนการรับไฟล์เหล่านี้จะอธิบายไว้ด้านล่างนี้
- เราเชื่อมต่ออัลกอริธึมการเข้ารหัสที่ 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
- ก่อนอื่นคุณต้องดาวน์โหลดอัลกอริธึม Rutoken ที่จำเป็น เหล่านี้คือไฟล์ rtengine.dll, rtpkcs11ecp.dll
- การเพิ่มตัวแปรสภาพแวดล้อม
อย่าลืมเพิ่มตัวแปรสภาพแวดล้อมที่ระบุเส้นทางไปยังไฟล์การกำหนดค่า openssl.cfg ในกรณีของฉัน ตัวแปร OPENSSL_CONF ถูกสร้างขึ้นด้วยพาธ C:Program FilesOpenSSL-Win64binopenssl.cfg
ในตัวแปรเส้นทาง คุณต้องระบุเส้นทางไปยังโฟลเดอร์ที่มี openssl.exe ในกรณีของฉันคือ: C: Program FilesOpenSSL-Win64bin
- ตอนนี้คุณสามารถกลับไปที่ขั้นตอนที่ 5 และสร้างไฟล์ที่หายไปสำหรับไดเร็กทอรี demoCA
- ไฟล์สำคัญไฟล์แรกที่ไม่มีสิ่งใดจะทำงานได้คือไฟล์แบบอนุกรม นี่คือไฟล์ที่ไม่มีนามสกุล ซึ่งค่าควรเป็น 01 คุณสามารถสร้างไฟล์นี้ด้วยตนเองและเขียน 01 ลงไปข้างใน คุณยังสามารถดาวน์โหลดได้จาก Rutoken SDK ตามพาธ sdk/openssl/rtengine/samples/tool/demoCA /.
ไดเร็กทอรี demoCA มีไฟล์ซีเรียลซึ่งตรงกับที่เราต้องการ - สร้างคีย์ส่วนตัวรูท
ในการดำเนินการนี้ เราจะใช้คำสั่งไลบรารี openSSL ซึ่งจะต้องเรียกใช้โดยตรงบนบรรทัดคำสั่ง:openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key
- เราสร้างใบรับรองหลัก
เมื่อต้องการทำเช่นนี้ ให้ใช้คำสั่งไลบรารี openSSL ต่อไปนี้:openssl req -utf8 -x509 -key ca.key -out ca.crt
โปรดทราบว่าจำเป็นต้องใช้คีย์ส่วนตัวรูทซึ่งสร้างขึ้นในขั้นตอนก่อนหน้าเพื่อสร้างใบรับรองรูท ดังนั้นจึงต้องเปิดใช้บรรทัดคำสั่งในไดเร็กทอรีเดียวกัน
ตอนนี้ทุกอย่างมีไฟล์ที่ขาดหายไปทั้งหมดสำหรับการกำหนดค่าไดเร็กทอรี demoCA โดยสมบูรณ์ วางไฟล์ที่สร้างขึ้นในไดเร็กทอรีที่ระบุในจุดที่ 5
- ไฟล์สำคัญไฟล์แรกที่ไม่มีสิ่งใดจะทำงานได้คือไฟล์แบบอนุกรม นี่คือไฟล์ที่ไม่มีนามสกุล ซึ่งค่าควรเป็น 01 คุณสามารถสร้างไฟล์นี้ด้วยตนเองและเขียน 01 ลงไปข้างใน คุณยังสามารถดาวน์โหลดได้จาก Rutoken SDK ตามพาธ sdk/openssl/rtengine/samples/tool/demoCA /.
เราจะถือว่าหลังจากทำครบ 8 คะแนนแล้ว ศูนย์การรับรองของเราได้รับการกำหนดค่าอย่างสมบูรณ์
ในส่วนถัดไป ผมจะอธิบายว่าเราจะทำงานร่วมกับหน่วยงานออกใบรับรองอย่างไรเพื่อให้บรรลุผลตามที่อธิบายไว้
ที่มา: will.com