2016-06-23 60 views
0

我正在使用boost :: asio在客户端和服务器应用程序之间建立加密连接。我生成以下列方式私钥文件和自签名证书:加载升级证书时出错:: asio

openssl genrsa -out private_key.pem 2048 
openssl req -new -key private_key.pem -out public_key.pem 

所生成的证书是:

-----BEGIN CERTIFICATE REQUEST----- 
MIICxjCCAa4CAQAwgYAxCzAJBgNVBAYTAkJHMQ4wDAYDVQQIDAVTb2ZpYTEOMAwG 
A1UEBwwFU29maWExDDAKBgNVBAoMA0VHVDEMMAoGA1UECwwDU0JTMRMwEQYDVQQD 
DApJdmFuIEJvYmV2MSAwHgYJKoZIhvcNAQkBFhFib2JlZmZAZWd0LWJnLmNvbTCC 
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM2OyY0BvtnmtxbPw7tblSc+ 
2TOopefy1/voELFT+6SCfmmXhIkL7HXcbFekc0z3VtCaSpq64Tk7NMGPtm2XiVt7 
Yzftw5pItsgyVwGuCk5sAMZ5qtDVjwTJv6m9TEV4hBA91ypYsXgcYBz4CIIw9Zm9 
uSJVznEsnraQE8xFE87D6Z78BLSFej83A7YsGqxPRIbNCtismtj1GeLFegnX/u5l 
PeyPa6A4bgXKgtWFoOEfdCQhWxZwxER0la16JAbMPuKmM+ZM0JJOPBhwdDmXEpv4 
tvZ+LXgVo8v71jKK1eMTjvQA2e3bBqZFtpPi0gvYTENQE1yXoRE479wPDHqrum8C 
AwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQAypIZnsX/C63kdeRoQeMOVJa5CObWr 
ALxtQIHdaR83SzY6K1Gg3SybHMnQ3wVUr71/tcuCYri6hJAzFKNYo676EdOxH8X4 
IJSNQIHUPBRRvcaB2us+wmAEsHhFytzlBdsYNo1UM+QXgDArV/BeHt9R1GYaN9kz 
C8ZSf5IYd/8vjDHRzpoeJ5+n4zMONOtCgXZU2WMEa7n9xbumfTnnZmaYGb3y3VVg 
FHtEAFsM1K80zKDW7Nech1vLXnJVi/SS5ABl+jqLOdVVqM+WKaowJY6y+U786by4 
q55Eoas7JZQIN+g6LeKywWj59CpYpeMczsp/WygKey6JkQ3qi1FiLaUB 
-----END CERTIFICATE REQUEST----- 

在我的程序代码,我有SSL上下文结构的以下初始化:

... 
, m_sslContext(ssl::context::sslv23) 
... 
m_sslContext.set_verify_mode(ssl::verify_peer | ssl::verify_fail_if_no_peer_cert); 
m_sslContext.use_rsa_private_key_file("private_key.pem", ssl::context::pem); 
m_sslContext.use_certificate_file("public_key.pem", ssl::context::pem); 
... 

use_ceritificate_file方法救援人员到场WS与消息的异常:

use_certificate_file:没有启动线

为什么功能失效,什么是建立与升压各地OpenSSL的安全连接:: ASIO包装的正确方法?

+0

公钥不是证书。 – tkausl

+0

根据[this](http://superuser.com/questions/620121/what-is-the-difference-between-a-certificate-and-a-key-with-respect-to-ssl)证书包含一个公钥,所以我可以互换使用它。 – bobeff

+0

证书包含公钥,是的。但公钥不包含证书。 – tkausl

回答

1

正如评论中所述,公钥不是证书。但是,您的public_key.pem也不是公钥。这是证书请求,您通常会将其发送给证书颁发机构为您签名。由于您想亲自签名,因此您可以查看How to create a self-signed certificate with openssl?以了解如何签署您的请求。