websocketpp wss

一. wss 認證

關於SSL認證說明(轉載)https://www.cnblogs.com/bluestorm/p/10571989.html

二.從瀏覽器生成wss客戶端

1.用谷歌打開網站

在這裏插入圖片描述

2.點擊"小鎖", 在證書路徑中所有的證書都需要生成*.pem。


在這裏插入圖片描述

3.導出證書

選擇第一級證書,點擊查看證書>>詳細信息>>複製到文件>>下一步>>選擇DER 編碼二進制X.509(.CER)>>下一步>>指定導出文件路徑文件名(可直接導出到openssl的bin目錄下),完成證書導出(文件後綴.cer)。

4.生成 .pem 文件

使用 openssl.exe 將證書文件轉爲.pem 文件,命令如下

openssl x509 -in xxx.cer -inform der -out xxx.pem

重複 2 3 4步驟依次將各級證書,全部生成對應的.pem文件。然後將各個.pem文件的內容copy到同一個.pem文件內(如client.pem)。
websocketpp/examples/print_client_tls/print_client_tls.cpp測試只生成一級目錄證書,即可連接成功

三.websocketpp的wss client demo

修改 websocketpp/examples/print_client_tls/print_client_tls.cpp內容

context_ptr on_tls_init(const char * hostname, websocketpp::connection_hdl) {

    context_ptr ctx = websocketpp::lib::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::sslv23); 
    try {
        ctx->set_options(boost::asio::ssl::context::default_workarounds |
                         boost::asio::ssl::context::no_sslv2 |
                         boost::asio::ssl::context::no_sslv3 |
                         boost::asio::ssl::context::single_dh_use);
		// 注意此處:set_verify_mode
		//  選擇 verify_peer	  需要  load_verify_file
		//  選擇 verify_none   不需要  load_verify_file
        ctx->set_verify_mode(boost::asio::ssl::verify_peer);
        ctx->set_verify_callback(bind(&Mverify_certificate, hostname, ::_1, ::_2));
        
        // Here we load the CA certificates of all CA's that this client trusts.
        ctx->load_verify_file("client.pem");

    } catch (std::exception& e) {
        std::cout << e.what() << std::endl;
    }
    return ctx;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章