You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.5 KiB

from cryptography import x509
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
from OpenSSL import crypto
import tkinter
import tkinter.filedialog
root=tkinter.Tk()
root.withdraw()
path=tkinter.filedialog.askopenfilename(title="选择公钥文件",filetypes=[("PEM files","*.pem")])
with open(path, 'rb') as f:
public_key = f.read()
#加载公钥
public_key = crypto.load_publickey(crypto.FILETYPE_PEM, public_key)
path=tkinter.filedialog.askopenfilename(title="选择私钥文件",filetypes=[("PEM files","*.pem")])
with open(path, 'rb') as f:
private_key = f.read()
#加载私钥
private_key = crypto.load_privatekey(crypto.FILETYPE_PEM, private_key)
#加载证书
path=tkinter.filedialog.askopenfilename(title="选择证书文件",filetypes=[("PEM files","*.pem")])
with open(path, 'rb') as f:
cert_pem = f.read()
cert = crypto.load_certificate(crypto.FILETYPE_PEM, cert_pem)
print("Certificate:\n", cert_pem.decode())
#输出证书相关信息
print("Subject: ", cert.get_subject().CN)
print("Issuer: ", cert.get_issuer().CN)
print("Serial Number: ", hex(cert.get_serial_number()))
print("Not Before: ", cert.get_notBefore())
print("Not After: ", cert.get_notAfter())
# 验证证书
store = crypto.X509Store()
store.add_cert(cert)
store_ctx = crypto.X509StoreContext(store, cert)
try:
if store_ctx.verify_certificate():
print("Certificate is valid.")
except crypto.X509StoreContextError as e:
print("Certificate is invalid:", e)