Openssl X509证书获得字符串人类可读

时间:2017-09-14 10:31:03

标签: c++ openssl x509certificate tls1.2 pem

我有一个客户端/服务器架构,我在其中使用openssl库来实现加密通信(TLSv1.2)。 由于我使用的是“自签名”证书,为了验证服务器的身份,我的想法是在客户端放入服务器公钥(server_public_key.pem)的物理副本,然后验证它是否等于收到的在TLS的握手阶段。

在客户端上,我可以使用以下命令检索后者:

X509 *cert = SSL_get_peer_certificate(ssl);

现在,我将提取此对象中包含的公钥的人类可读字符串

我知道我可以这样打印:

EVP_PKEY *pkey = X509_get_pubkey(cert);
PEM_write_PUBKEY(stdout, pkey);

但是我需要将它保存为字符串(而不是将其发送到stdout)。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

使用BIO_new()创建一个由内部内存缓冲区支持的新BIO(最初为空)。

然后使用PEM_write_bio_PUBKEY()将公钥写入BIO,此时使用BIO手册页中记录的功能来检索公钥。

有关创建BIO,写入,然后从中读取的简单示例,请参阅引用的文档。用PEM_write_bio_PUBKEY()替换样本写操作就足够了。