我對服務器和客戶端使用boost ssl,我有一個服務器/客戶端程序模型,我不確定它會工作。創建由我自己簽名的OpenSSL證書
我腦海中的模型是我的程序證書的唯一權威。我的主要問題是:我該怎麼做?
在我的服務器程序,我定義項,如下所示:
context_.use_certificate_chain_file("../sslkeys/server.crt");
context_.use_private_key_file("../sslkeys/server.key", boost::asio::ssl::context::pem);
context_.use_tmp_dh_file("../sslkeys/dh512.pem");
創建/登錄這些鍵/使用證書:
$ openssl genrsa -des3 -out server.key 2048
$ openssl req -new -key server.key -out server.csr
$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
$ cp server.key server.key.secure
$ openssl rsa -in server.key.secure -out server.key
$ openssl dhparam -out dh512.pem 512
對於我的客戶端程序,我想創造一個證書,並通過我的「server.key」簽名,因爲我認爲(如果我是的話,我可能是錯的,請糾正我)這是做這件事的方法。客戶端程序需要使用命令鍵:
ctx.load_verify_file("../sslkeys/client.csr");
所以我創建了一個關鍵的,這是我使用服務器密鑰簽名,用下面的命令:
$ openssl genrsa -des3 -out client.key 2048
$ openssl req -new -key client.key -out client.csr
$ openssl x509 -req -days 3650 -in client.csr -signkey ../sslkeys/server.key -out client.crt
現在,當我跑我的客戶和嘗試連接服務器,我得到的錯誤:Handshake failed: certificate verify failed
我在做什麼錯?我怎樣才能實現我提到的模型?
如果您需要任何其他信息,請詢問。
謝謝你的努力。
Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[Unix&Linux堆棧交換](http://unix.stackexchange.com/)會是一個更好的地方。另請參閱[我在哪裏發佈有關Dev Ops的問題?](http://meta.stackexchange.com/q/134306)。 – jww