有没有办法将 CSR 解码为 String 以获取属性?

Is there a way to decode CSR to String to get attributes?

我的 CSR 文件的内容类似于

-----BEGIN CERTIFICATE REQUEST-----
XXXX
-----END CERTIFICATE REQUEST-----

生成的 CSR 带有属性

 Attributes:
        Requested Extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: 
                Digital Signature, Non Repudiation, Key Encipherment
            xxx: 
                ..TC200
            yyy: 
                ..1234

我试过

guard let base64data = Data(base64Encoded: request.body) else {
            return getResponse(message: "Most likely, the request sent was in a wrong format.", code: 400)
        }

但是,base64data 为零。

是否可以解码 CSR,以某种方式访问​​ Swift 中的 xxx 和 yyy 属性? 附加信息是它是用 base64 编码的。

我假设您正在寻找解码 ASN1 DER 编码的 X.509 证书。查看 ASN1Decoder CocoaPod.

安装后,您可以像下面的示例一样使用 Pod:

import ASN1Decoder

let base64CertData = "MIID..."

guard let data = Data(base64Encoded: base64CertData) else {
    return
}

do {
    let x509 = try X509Certificate(data: certData)

    let subject = x509.subjectDistinguishedName ?? ""

} catch {
    print(error)
}

请注意删除 -----BEGIN CERTIFICATE REQUEST----- 页眉和 -----END CERTIFICATE REQUEST----- 页脚。