有没有办法将CSR解码为字符串以获取属性?



>我有 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-----页脚。