ios 如何在swift中使用以字符串形式提供的证书发出REST API请求?

3phpmpom  于 2023-02-01  发布在  iOS
关注(0)|答案(1)|浏览(104)

我必须向一个端点发出POST请求,该请求应该包含在客户端证书中,这里的问题是,我收到的客户端证书cert-chain是一个字符串(格式如下)。

-----BEGIN CERTIFICATE-----

MIID9jCCAt6gAwIBAgIQNwHqBnL+445eqCUKVWroxDANBgkqhkiG9w0BAQsFADCB

XufZCQ4mDV3MU0z+wsS4alR7b410V5Wet36pjUkrWtHEI2dBWZFzCOay19Vpb2V2

0M/zl07YpoZYxw==

-----END CERTIFICATE-----

注意:字符串要大得多:)
我尝试将字符串转换为NSData对象并创建一个PKCS12对象,但转换为NSData本身失败。
我的转变方式是
let dataDecoded = Data(base64Encoded: certChainString, options: .ignoreUnknownCharacters)
这将返回空数据对象,因为dataDecoded的大小为0字节。
如果提供了certChainString,如何发送POST请求和证书?

ehxuflar

ehxuflar1#

您是否尝试在它仍然包含-----BEGIN CERTIFICATE----------END CERTIFICATE-----时对其进行转换?
它不是有效的base64与那些包括,所以删除他们第一。

let certChainString = """
-----BEGIN CERTIFICATE-----

...

-----END CERTIFICATE-----
"""
let certString = certChainString
                      .replacingOccurrences(of: "-----BEGIN CERTIFICATE-----", with: "")
                      .replacingOccurrences(of: "-----END CERTIFICATE-----", with: "")

let dataDecoded  = Data(base64Encoded: certString, options: .ignoreUnknownCharacters)

如果API请求返回重要数据,请考虑先阅读更多关于Security topic的内容或使用frameworks

相关问题