|
Sertifikatni taqdim etuvchisini va taqdim etuvchi sertifikatlarini tekshirish (masalan, CA sertifikatlari)
|
bet | 7/8 | Sana | 20.05.2024 | Hajmi | 0,62 Mb. | | #246235 |
Bog'liq induvidualish2 Sertifikatni taqdim etuvchisini va taqdim etuvchi sertifikatlarini tekshirish (masalan, CA sertifikatlari)
Xoch-sertifikatlash - bu Windows 2003 PKI-da joriy qilingan yangi ishonch qobiliyatidir (qo'shimcha ma'lumot olish uchun PKI ishonch tamoyillarini qanday ko'ring). CTL-lardan farqli o'laroq, kross-sertifikatlash turli markaziy infratuzilmalar o'rtasida PKI donalarini o'rnatishga imkon beradi. Turli tashkilotlarning infratuzilmasining tarkibiy qismi bo'lgan ikkita CA o'rtasida o'zaro aloqa o'rnatilganda, ushbu CAlarning har biri bir vaqtning o'zida ota-ona va bo'ysunuvchiga aylanadi va sertifikat zanjirlarini yaratish jarayonida juda qiziqarli effektlar kuzatiladi.
2.6-rasmda sertifikatlararo o'zaro ishonchlar qanday ishlashi va bu sertifikatlar xususiyatlariga qanday ta'sir qilishi ko'rsatilgan.
Quyidagi Python kodida OpenSSL kutubxonasini o'rnatish, sertifikat yaratish va tekshirish jarayonlarini ifodalovchi funktsiyalar yaratish, sertifikat yaratish va tekshirish uchun dastur boshqaruvchi funktsiyani yaratish, foydalanuvchidan ma'lumotlarni olish va sertifikat yaratish va tekshirish funktsiyalarini chaqirish, yaratilgan sertifikatlarni fayllarga yozish va ekranga chiqarish amallari amalga oshirilgan:
import OpenSSL
from OpenSSL import crypto
def create_certificate(subject_name, issuer_name, valid_days): # Sertifikat obyektini yaratish
certificate = crypto.X509()
# Sertifikatning asosiy ma'lumotlarini to'ldirish certificate.get_subject().CN = subject_name certificate.set_serial_number(1000) certificate.gmtime_adj_notBefore(0) certificate.gmtime_adj_notAfter(valid_days * 24 * 60 * 60) # Taqdim etuvchi sertifikatni yaratish
issuer_cert = crypto.X509() issuer_cert.get_subject().CN = issuer_name # Asosiy kalit va kalit joylashuvini yaratish key = crypto.PKey() key.generate_key(crypto.TYPE_RSA, 2048) certificate.set_pubkey(key)
certificate.set_issuer(issuer_cert.get_subject()) # Sertifikatni imzolash
certificate.sign(key, 'sha256') return certificate
def verify_certificate(certificate, ca_certificate):
# Sertifikatni tekshirish store = crypto.X509Store()
store.add_cert(ca_certificate)
store_ctx = crypto.X509StoreContext(store, certificate) store_ctx.verify_certificate()
return store_ctx.get_error() == 0 def main():
# Foydalanuvchidan ma'lumotlarni olish
subject_name = input("Iltimos, sertifikatning Umumiy Ismini kiriting: ")
issuer_name = input("Iltimos, taqdim etuvchining Ismini kiriting: ")
valid_days = int(input("Iltimos, sertifikatning amal qilish muddatini kundalarda kiriting: "))
# Sertifikat yaratish
certificate = create_certificate(subject_name, issuer_name, valid_days) # Sertifikatni tekshirish
ca_certificate = create_certificate("CA", "CA", 3650) # Taqdim etuvchi sertifikat (CA sertifikati) o'rniga o'zingizning kerakli sertifikatingizni kiriting
is_valid = verify_certificate(certificate, ca_certificate) # Sertifikatni faylga saqlash
with open("sertifikat.crt", "wb") as f: f.write(crypto.dump_certificate(crypto.FILETYPE_PEM, certificate)) # Sertifikatni ekranga chiqarish
print("Yaratilgan sertifikat:") print(crypto.dump_certificate(crypto.FILETYPE_TEXT, certificate).decode()) # Sertifikatning tekshirish natijas:
`main()`: Bu funktsiya dastur boshqaruvchisidir. U foydalanuvchidan sertifikatning Umumiy Ismini, taqdim etuvchining Ismini va amal qilish muddatini olish uchun so'rovnoma chiqaradi. Keyin `create_certificate()` va
`verify_certificate()` funksiyalarini chaqirib, sertifikatni yaratadi va tekshiradi. So'ng sertifikatni faylga saqlab, ekranga chiqaradi [1].
`verify_certificate(certificate, ca_certificate)`: Bu funktsiya sertifikatni tekshirish uchun ishlatiladi. U berilgan sertifikatni va taqdim etuvchi sertifikatini (CA sertifikati) parametr sifatida qabul qiladi. Funktsiya sertifikatni OpenSSL kutubxonasidagi `X509Store` va `X509StoreContext` obyektlari yordamida tekshiradi. Tekshirish natijasini xato kodi (error code) yordamida aniqlaydi va
`True` yoki `False` qiymatini qaytaradi.
`create_certificate(subject_name, issuer_name, valid_days)`: Bu funktsiya sertifikat yaratish uchun ishlatiladi. U sertifikatning Umumiy Ismini, taqdim etuvchining Ismini va amal qilish muddatini parametr sifatida qabul qiladi.
Funktsiya OpenSSL kutubxonasidagi `X509` obyektini yaratadi va sertifikatning asosiy ma'lumotlarini to'ldiradi. Asosiy kalit va kalit joylashuvini yaratadi, taqdim etuvchi sertifikatini tuzadi va sertifikatni imzolaydi. Natijada yaratilgan sertifikatni qaytaradi[6].
Ushbu funksiyalar sizga sertifikat yaratish, tekshirish va dastur boshqarish imkonini beradi. Siz kerakli ma'lumotlarni kiritganingizdan so'ng `main()` funktsiyasini chaqirib dasturni ishga tushirishingiz mumkin.
Quyidagi kodlar orqali sertifikatlarni fayllarga yozish va ekranga chiqarishni amalga oshirishingiz mumkin:
import OpenSSL
from OpenSSL import crypto
def create_certificate(subject_name, issuer_name, valid_days): # Sertifikat obyektini yaratish
certificate = crypto.X509()
# Sertifikatning asosiy ma'lumotlarini to'ldirish certificate.get_subject().CN = subject_name certificate.set_serial_number(1000) certificate.gmtime_adj_notBefore(0) certificate.gmtime_adj_notAfter(valid_days * 24 * 60 * 60) # Taqdim etuvchi sertifikatni yaratish
issuer_cert = crypto.X509() issuer_cert.get_subject().CN = issuer_name # Asosiy kalit va kalit joylashuvini yaratish key = crypto.PKey() key.generate_key(crypto.TYPE_RSA, 2048) certificate.set_pubkey(key)
certificate.set_issuer(issuer_cert.get_subject()) # Sertifikatni imzolash
certificate.sign(key, 'sha256') return certificate
def save_certificate_to_file(certificate, file_name): # Sertifikatni faylga saqlash
with open(file_name, "wb") as f: f.write(crypto.dump_certificate(crypto.FILETYPE_PEM, certificate))
def print_certificate(certificate): # Sertifikatni ekranga chiqarish print("Yaratilgan sertifikat:")
print(crypto.dump_certificate(crypto.FILETYPE_TEXT, certificate).decode()) def main():
# Foydalanuvchidan ma'lumotlarni olish
subject_name = input("Iltimos, sertifikatning Umumiy Ismini kiriting: ") issuer_name = input("Iltimos, taqdim etuvchining Ismini kiriting: ")
valid_days = int(input("Iltimos, sertifikatning amal qilish muddatini kundalarda kiriting: "))
# Sertifikat yaratish
certificate = create_certificate(subject_name, issuer_name, valid_days) # Sertifikatni faylga saqlash
save_certificate_to_file(certificate, "sertifikat.crt") # Sertifikatni ekranga chiqarish print_certificate(certificate)
main()
Ushbu kodlar sertifikatni save_certificate_to_file() funktsiyasi yordamida "sertifikat.crt" nomli faylga saqlaydi va sertifikatni print_certificate() funktsiyasi orqali ekranga chiqaradi. main() funktsiyasini chaqirganingizda, foydalanuvchidan ma'lumotlarni olish, sertifikatni yaratish, saqlash va ekranga chiqarish jarayonlari amalga oshiriladi.
Quyidagi funksiyalarni tushuntirib beraman:
`create_certificate(subject_name, issuer_name, valid_days)`: Bu funktsiya sertifikat yaratish uchun ishlatiladi. U sertifikatning Umumiy Ismini, taqdim etuvchining Ismini va amal qilish muddatini parametr sifatida qabul qiladi. Funktsiya OpenSSL kutubxonasidagi `crypto.X509()` obyektini yaratadi va sertifikatning asosiy ma'lumotlarini to'ldiradi. Asosiy kalit va kalit joylashuvini yaratadi, taqdim etuvchi sertifikatini tuzadi va sertifikatni imzolaydi. Natijada yaratilgan sertifikatni qaytaradi.
`save_certificate_to_file(certificate, file_name)`: Bu funktsiya sertifikatni faylga saqlash uchun ishlatiladi. U sertifikatni va fayl nomini parametr sifatida qabul qiladi. Funktsiya OpenSSL kutubxonasidagi `crypto.dump_certificate()` metodidan foydalanib, sertifikatni faylga saqlayadi.
`print_certificate(certificate)`: Bu funktsiya sertifikatni ekranga chiqarish uchun ishlatiladi. U sertifikatni parametr sifatida qabul qiladi va OpenSSL kutubxonasidagi `crypto.dump_certificate()` metodidan foydalanib, sertifikatni matn ko'rinishida ekranga chiqaradi.
`main()`: Bu funktsiya dastur boshqaruvchisidir. U foydalanuvchidan sertifikatning Umumiy Ismini, taqdim etuvchining Ismini va amal qilish muddatini
olish uchun so'rovnoma chiqaradi. Keyin `create_certificate()` funksiyasini chaqirib sertifikatni yaratadi. So'ng fayl nomini va yaratilgan sertifikatni
`save_certificate_to_file()` funktsiyasiga uzatib, sertifikatni faylga saqlayadi. So'ng
`print_certificate()` funktsiyasini chaqirib, sertifikatni ekranga chiqaradi.
Ushbu funksiyalar sizga sertifikat yaratish, faylga saqlash, ekranga chiqarish va dastur boshqarish imkonini beradi. Siz `main()` funktsiyasini chaqirib dasturni ishga tushirishingiz mumkin[6].
|
| |