我正在开发一个使用第三方框架和 SSL 的 iOS 应用程序。
为了连接到服务器,我需要传递服务器证书、客户端证书和密码:
[HostConfiguration hostConfigurationWithAddress:@"demo.server...."
port:743
securedWithSSL:YES
serverCertPath:[[NSBundle mainBundle] pathForResource:@"SERVER-CERT" ofType:@"der"]
clientCertChainPath:[[NSBundle mainBundle] pathForResource:@"CLIENT-CERT" ofType:@"p12"]
chainPassphrase:@"ABCDEFG"];
因此,我要求他们的支持提供证书以进行连接,他们向我发送了一个 zip 文件(我使用的是 mac):
- chain_2016.pem(mac 标识为“Root”)
- 密码
- yourCertificate.pem(“标准”)
- yourCertificate.p12(“个人”)
密码短语文件包含两个字符串,p12 文件的密码短语和一个 32 个字符长的字符串,我不知道它的用途。它看起来像这样:53CFE0E1914EF853E148F29C0A56B716
我知道 p12 文件和密码是正确的。但让我感到困惑的是两个 PEM 文件,我只需要一个 DER 编码证书。我尝试使用将每个 PEM 转换为 DER
openssl x509 -in ...
但它不起作用......
我打印了两者的内容,chain_2016
并yourCertificate.pem
注意到其中yourCertificate.pem
包含chain_2016
两个额外的证书。
链_2016.pem
cat chain_2016.pem
-----BEGIN CERTIFICATE-----
MIIERTCCAy2gAwIBAgIINQskOyELGawwDQYJKoZIhvcNAQEFBQAwga8xHjAcBgkq
[...]
VPEpWKH17rzBvmktsDjqo1Zch8xiWSzP0DnJJw13Zn/cPwBJkHY0LPA=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFSzCCBDOgAwIBAgIIPuhYaSjrBR8wDQYJKoZIhvcNAQEFBQAwga8xHjAcBgkq
[...]
ZeitvrwyCtzVo7NWb+Zf
-----END CERTIFICATE-----
你的证书.pem
cat yourCertificate.pem
Bag Attributes
localKeyID: 2E EC 57 1C 31 82 6D 82 68 59 86 93 FB FA 65 16 58 85 21 22
friendlyName: myApp.test.client
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCu9UVuZyLsOc5u
[...]
zoQQfIreqU9KN4nhmZLKR0zY
-----END PRIVATE KEY-----
Bag Attributes
localKeyID: 2E EC 57 1C 31 82 6D 82 68 59 86 93 FB FA 65 16 58 85 21 22
friendlyName: myApp.test.client
...Here some other info like subject/email etc...
-----BEGIN CERTIFICATE-----
MIIHljCCBX6gAwIBAgIIETxy2amJI0cwDQYJKoZIhvcNAQENBQAwgbUxHjAcBgkq
[...]
hdAq5P+vcHfD8cGOdI61yJB2PgJg67lWviU=
-----END CERTIFICATE-----
Bag Attributes
friendlyName: CompanyName Meta ROOT CA TEST
...Again some other info like subject/email etc...
-----BEGIN CERTIFICATE-----
MIIERTCCAy2gAwIBAgIINQskOyELGawwDQYJKoZIhvcNAQEFBQAwga8xHjAcBgkq
[This is the same as one of the certificates in chain_2016]
VPEpWKH17rzBvmktsDjqo1Zch8xiWSzP0DnJJw13Zn/cPwBJkHY0LPA=
-----END CERTIFICATE-----
Bag Attributes
friendlyName: CompanyName SUB TEST ROOT CA 1
...Again some other info like subject/email etc...
-----BEGIN CERTIFICATE-----
MIIFSzCCBDOgAwIBAgIIPuhYaSjrBR8wDQYJKoZIhvcNAQEFBQAwga8xHjAcBgkq
[Second certificate in chain_2016]
ZeitvrwyCtzVo7NWb+Zf
-----END CERTIFICATE-----
由于这是我第一次使用 SSL,我希望有人可以帮助我。谢谢 !
更新:
谢谢 pedrofb,正如我所说,我已经尝试过:
我尝试使用将每个 PEM 转换为 DER
openssl x509 -in ...
但它不起作用......
使用这个框架有两个步骤。首先,建立与服务器的连接,然后执行操作。使用任何一个转换后的 DER 文件都允许我连接,但是当我尝试执行某个操作(例如登录)时,我得到“您无权执行此操作”。这是否意味着证书一切正常,而错误来自与 SSL 无关的其他地方?