使用 python 进行 SSL 连接来处理 PEM 文件

Working with PEM files using python for SSL connection

我有 PEM 文件,其中包含 RSA 私钥和证书列表。我使用下面的代码使用 pem 包将 PEM 文件分离为密钥文件和证书文件,然后将它们插入到烧瓶服务器中。

此代码有效,但我想看看是否有使用 python 处理 pem 文件的有效方法?

Python代码:

from api import app
from gevent.pywsgi import WSGIServer
import pem
from pem import RSAPrivateKey
from pem import Certificate
import os

Mylist = pem.parse_file(r"C:\Desktop\MyPEMFile.pem")
if os.path.exists("APIKEY.key") == False:
    for ele in Mylist:
        if isinstance(ele, RSAPrivateKey):
            f = open ("APIKEY.key","w")
            f.write(str(ele))
            f.close()

if os.path.exists("APICERTIFICATE.crt") == False:
    for ele in Mylist:
        if isinstance(ele, Certificate):
            f= open ("APICERTIFICATE.crt","a")
            f.write(str(ele))
            f.close


http_server = WSGIServer(("localhost", 443), app,keyfile='APIKEY.key', certfile='APICERTIFICATE.crt')
http_server.serve_forever()

您应该可以将 MyPEMFile.pem 用作 certfilekeyfile。底层 OpenSSL 只会从文件中提取 certfile 参数的证书和 keyfile 参数的密钥。简而言之,扔掉 PEM 解析并执行:

cert_and_key = "C:\Desktop\MyPEMFile.pem"
http_server = WSGIServer(("localhost", 443), app, \
    keyfile=cert_and_key, certfile=cert_and_key)
http_server.serve_forever()

You can get your answer here. 否则使用以下代码段:

certs = pem.parse_file(file_path)  # using pem module
            for pem_certificates in certs:
                strcert = str(pem_certificates)
                # using pyOpenSSL module. 
                loadCert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM,
                                                           strcert)  # FILETYPE_ASC1
                issuer = loadCert.get_issuer()

编码愉快!!! 你需要缩进它。 (抱歉)