首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混淆PEM和DER证书

混淆PEM和DER证书
EN

Stack Overflow用户
提问于 2016-08-01 16:11:35
回答 1查看 1.8K关注 0票数 2

我正在开发一个使用第三方框架和SSL的iOS应用程序。

为了连接到服务器,我需要传递一个服务器证书、一个客户端证书和一个密码:

代码语言:javascript
复制
[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识别为“根”)
  • 密码酶
  • yourCertificate.pem (标准)
  • yourCertificate.p12 (“个人”)

密码文件包含两个字符串,一个用于p12文件的密码和一个32个字符的长字符串,我不知道它是用来做什么的。看起来如下: 53CFE0E1914EF853E148F29C0A56B716

我知道p12文件和密码是correct.But,使我困惑的是两个PEM文件,其中我只需要一个DER编码的证书。我试图将每个PEM转换为

openssl x509 -in ...

但没有用..。

我打印出了chain_2016yourCertificate.pem的内容,并注意到yourCertificate.pem包含chain_2016和两个额外的证书。

chain_2016.pem

代码语言:javascript
复制
cat chain_2016.pem
-----BEGIN CERTIFICATE-----
MIIERTCCAy2gAwIBAgIINQskOyELGawwDQYJKoZIhvcNAQEFBQAwga8xHjAcBgkq
[...]
VPEpWKH17rzBvmktsDjqo1Zch8xiWSzP0DnJJw13Zn/cPwBJkHY0LPA=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFSzCCBDOgAwIBAgIIPuhYaSjrBR8wDQYJKoZIhvcNAQEFBQAwga8xHjAcBgkq
[...]
ZeitvrwyCtzVo7NWb+Zf
-----END CERTIFICATE-----

yourCertificate.pem

代码语言:javascript
复制
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,我希望有人能帮助我。谢谢!

更新:

谢谢你,就像我说的,我已经试过了

我试图将每个PEM转换为 openssl x509 -in ... 但没有用..。

在使用此框架时有两个步骤。首先,建立到服务器的连接,然后执行操作。使用任何一个转换的DER-文件允许我连接,但当我试图执行一个动作(例如。(登录)我得到“您没有被授权执行此操作”。这是否意味着证书一切正常,错误来自与SSL无关的其他地方?

EN

回答 1

Stack Overflow用户

发布于 2016-08-02 07:17:12

似乎您正在执行双向SSL。你需要:

  • 将服务器证书路径添加到信任库,并在握手期间进行验证。可能是chain_2016.pem
  • 客户端证书在握手时出现。yourCertificate.p12和密码短语

PEM文件可以包含多个证书和/或私钥。它们由----- BEGIN ----- -----END -----标头分隔。

可能他们在yourCertificate.pemyourCertificate.p12中发送了相同的信息,只需更改格式,在第一种情况下,密码对应于私钥,在第二种情况下,对应于p12文件的密码。您可以使用GUI工具.p12或openssl轻松地检查KeyStoreExplorer文件的内容。

DER是对证书进行编码的二进制格式。PEM是一个DER文件,转换为base64并添加标头。要将PEM转换为DER,请使用openssl (参见)

代码语言:javascript
复制
 openssl x509 -in chain_2016.pem -outform der -out chain_2016.der

所以,总之,检查你的文档,我想你需要

代码语言:javascript
复制
serverCertPath: chain_2016.der
clientCertChainPath: yourcertificate.p12
chainPassphrase: theP12Passphrase
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38703470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档