2016-06-23 6 views
0

私はboost :: asioを使用して、クライアントとサーバーアプリケーション間の暗号化された接続を確立しています。boost :: 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----- 

、I 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方法のthroメッセージとWS例外:

use_certificate_file:なしスタートライン

なぜ関数は失敗し、何ブーストとの安全な接続を確立するための正しい方法があるん:: OpenSSLの周りASIOラッパー?

+0

公開鍵は証明書ではありません。 – tkausl

+0

[this](http://superuser.com/questions/620121/what-is-the-difference-between-a-certificate-and-key-with-respect-to-ssl)によると、証明書には以下が含まれます。私はそれを同じ意味で使っていました。 – bobeff

+0

証明書には公開鍵が含まれています。しかし、公開鍵には証明書が含まれていません。 – tkausl

答えて

1

コメントで説明したように、公開鍵は証明書ではありません。あなたのpublic_key.pemは公開鍵でもありません。それはあなたが通常あなたに署名する証明書当局に送る証明書要求です。あなた自身で署名したいので、How to create a self-signed certificate with openssl?をチェックして、あなたのリクエストに署名する方法を見てください。

関連する問題