【问题标题】:Extract all the certificates from a file in python [closed]从python中的文件中提取所有证书[关闭]
【发布时间】:2026-01-16 02:10:01
【问题描述】:

我是 python 新手。我有一个带有可信 CA 证书的文件。文件可以有任意数量的这种格式的证书:

-----开始证书----- sfsdfsfdsafs -----结束证书-----

-----开始证书----- MCUwIwYIKwYBBQUHA -----结束证书----- -----开始证书----- OmyeEZm0CK6ZZZpAp -----结束证书-----

我想读取所有的证书并将其存储在我的数据库中。 读取此文件并获取所有证书的最有效方法是什么?

【问题讨论】:

    标签: python regex file parsing certificate


    【解决方案1】:

    如果您想在给定字符串中查找子字符串,请使用“re”模块。

    import re
    
    start        = '-----BEGIN CERTIFICATE-----'
    end          = '-----END CERTIFICATE-----'
    contents     = open(FILENAME).read()
    certificates = re.findall(f'{start}(.*?){end}',contents,re.DOTALL)
    

    DOTALL 表示搜索换行符,而不是单独处理单独的行。

    我应该注意,您不应该像这样手动操作证书文件。如果您希望它们采用不同的格式或其他方式,您真的应该使用 openssl。

    【讨论】:

    • 我收到 python 2.7 版不支持'F'前缀的错误
    • 为什么人们还在使用 python 2.7,它已经不再被支持了。无论如何,将 f 字符串改为 start+'(.*?)'+end 。
    • 这行得通,但我想在结果中也包括开始和结束。我能做些什么呢?
    • 改变re表达式的捕获范围。 '(' + start + '.*?' + end + ')'
    • 会兼容python 3吗?