[英]How do I install a certificate to trusted root certificates using python?
我需要編寫一個 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.')
這段代碼對我有用。 在這里發布它以防萬一它對某人有幫助。
#Flag variables
CERT_STORE_PROV_SYSTEM = 0x0000000A
CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000
CRYPT_STRING_BASE64HEADER = 0x00000000
CERT_SYSTEM_STORE_CURRENT_USER_ACCOUNT = 1<<16
X509_ASN_ENCODING = 0x00000001
CERT_STORE_ADD_REPLACE_EXISTING = 3
CERT_CLOSE_STORE_FORCE_FLAG = 0x00000001
#replace with your certificate file path
crtPath = "D:\\certificates\\cert_file.crt"
with open(crtPath,'r') as f:
cert_str = f.read()
cert_byte = win32crypt.CryptStringToBinary(cert_str, CRYPT_STRING_BASE64HEADER)[0]
store = win32crypt.CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, None, CERT_SYSTEM_STORE_CURRENT_USER_ACCOUNT|CERT_STORE_OPEN_EXISTING_FLAG, "ROOT")
try:
store.CertAddEncodedCertificateToStore(X509_ASN_ENCODING, cert_byte, CERT_STORE_ADD_REPLACE_EXISTING)
finally:
store.CertCloseStore(CERT_CLOSE_STORE_FORCE_FLAG)
僅供參考,win32crypt 模塊可用於pywin32庫。 您可以通過運行此命令來安裝它。
pip 安裝pywin32
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.