0

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

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

蟒蛇代码:

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()
4

2 回答 2

0

您应该能够同时使用MyPEMFile.pemascertfilekeyfile. 底层 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()
于 2020-03-31T18:32:09.437 回答
0

你可以在这里得到你的答案。 否则使用以下代码段:

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()

快乐编码!!!你需要缩进它。(道歉)

于 2021-01-14T11:51:33.017 回答