dj-*_*eza 4 openssl rsa pem der swift
在我的应用程序中,我获得了一个 PEM 编码的证书,需要将其转换为不同的形式,以便以后将其用于 JWT 验证目的。我正在寻找的结果是证书中包含的公钥的 SecKey 表示、PEM 公钥字符串或转换为 DER 证书。
我对此非常陌生,所以我不知道如何解决这个问题。我在谷歌上搜索并没有找到明确的解决方案,甚至 Apple 文档也只提到了 DER 证书。如果我理解正确,一种解决方案是在我的应用程序中使用 OpenSSL(这甚至可能吗?)进行转换,但我找不到任何关于如何实现这一点的有用资源,所以我希望能更深入地了解正确的做法.
在应用程序之外进行转换不是我的选择。
dnl*_*ggr 12
如果您有 PEM 格式的证书,则可以通过剥离页眉和页脚行并对它们之间的文本进行 base64 解码来获取它的 DER 编码数据(也不要忘记丢弃换行符)。[1, 2]
然后,您可以使用SecCertificateCreateWithDataiOS 安全 API 创建一个SecCertificate以在您的应用程序中使用,如下所示:
// example data from http://fm4dd.com/openssl/certexamples.htm
let pem = """
-----BEGIN CERTIFICATE-----
MIIC2jCCAkMCAg38MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG
(...)
+tZ9KynmrbJpTSi0+BM=
-----END CERTIFICATE-----
"""
// remove header, footer and newlines from pem string
let certData = Data(base64Encoded: pemWithoutHeaderFooterNewlines)!
guard let certificate = SecCertificateCreateWithData(nil, data as CFData) else {
// handle error
}
// use certificate e.g. copy the public key
let publicKey = SecCertificateCopyKey(certificate)!
Run Code Online (Sandbox Code Playgroud)
PEM 格式只是由标题行包围的 base64 编码数据。
.pem – Base64 编码的 DER 证书,包含在“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”之间
| 归档时间: |
|
| 查看次数: |
4106 次 |
| 最近记录: |