Мне нужно написать код Python, который устанавливает сертификат в доверенные корневые сертификаты моей машины (Windows) или локального пользователя. Я попробовал приведенный ниже код. Код работает без ошибок, но похоже, что хранилище не является доверенным корнем Windows. Я также прочитал документацию по wincert и win32crypt модулю python, похоже, ничего не помогает.
import OpenSSL.crypto
cert = OpenSSL.crypto.load_certificate(
OpenSSL.crypto.FILETYPE_PEM,
open('certFile.crt').read()
)
store = OpenSSL.crypto.X509Store()
if not store.add_cert(cert):
print('Success')
Изменить: мне нужно сделать что-то подобное, упомянутое здесь, но с использованием python.
Редактировать 2: я также попробовал метод ниже (не уверен, что он выполнит намеченную работу):
import win32crypt
import sys
CERT_STORE_PROV_SYSTEM = 0x0000000A
CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000
CRYPT_STRING_BASE64HEADER = 0x00000000
def main():
store = win32crypt.CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, None, CERT_SYSTEM_STORE_LOCAL_MACHINE|CERT_STORE_OPEN_EXISTING_FLAG, "ROOT")
cert_str = open('D:\\Certificates\\certFile.crt').read()
cert_byte = win32crypt.CryptStringToBinary(cert_str, CRYPT_STRING_BASE64HEADER)[0]
win32crypt.CertAddSerializedElementToStore(store,cert_byte,1,2,0)
if __name__ == "__main__":
main()
print('done')
но я получаю следующую ошибку:
win32crypt.CertAddSerializedElementToStore(store,cert_byte,1,2,0)
pywintypes.error: (-2146885629, 'CertAddSerializedElementToStore', 'An error occurred while reading or writing to a file.')