日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

openssl https 单向认证连接成功示例

發(fā)布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 openssl https 单向认证连接成功示例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
openssl https 單向認證連接成功示例

研究這個玩意也有幾天的時間了,剛學C 因為不熟悉編譯折騰了不少時間,終于弄通了,發(fā)個隨筆給研究openssl https的同學一點提示吧。

環(huán)境:

==========================================================

UBUNTU 12.04

OPENSSL 1.0.2d

SSL:SSL2(同學們可以研究下使用TSL和SSL3,我還木有研究好)

TOOL: code::blocks

==========================================================

測試結(jié)果截圖:

CODE:

#include <stdio.h> #include <stdlib.h> #include "openssl/bio.h" #include "openssl/ssl.h" #include "openssl/err.h"char* join(char *s1, char *s2); int main() {BIO *sbio, *out;int len;char tmpbuf[1024];SSL_CTX *ctx;SSL *ssl;//ERR_load_crypto_strings();ERR_load_SSL_strings();//OpenSSL_add_all_algorithms();SSL_library_init();//如果系統(tǒng)平臺不支持自動進行隨機數(shù)種子的設(shè)置,這里應(yīng)該進行設(shè)置(seed PRNG)ctx = SSL_CTX_new(SSLv23_client_method());//ctx = SSL_CTX_new(TLS_client_method());//SSL_CTX_set_cipher_list(ctx,"EXP-RC4-MD5");//通常應(yīng)該在這里設(shè)置一些驗證路徑和模式等,因為這里沒有設(shè)置,所以該例子可以跟使用任意CA簽發(fā)證書的任意服務(wù)器建立連接sbio = BIO_new_ssl_connect(ctx);BIO_get_ssl(sbio, &ssl);if(!ssl){fprintf(stderr, "Can't locate SSL pointer/n");ERR_print_errors_fp(stderr);}/* 不需要任何重試請求*/SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);//這里你可以添加對SSL的其它一些設(shè)置BIO_set_conn_hostname(sbio, "106.39.167.232:443");out = BIO_new_fp(stdout, BIO_NOCLOSE);if(BIO_do_connect(sbio) <= 0){fprintf(stderr, "Error connecting to server/n");ERR_print_errors_fp(stderr);}printf("SSL?connection?using?%s\n",SSL_get_cipher(ssl));//SSL_CTX_set_cipher_list(ctx,SSL_get_cipher(ssl));X509 *cert = SSL_get_peer_certificate(ssl);printf ("Server certificate:\n");char *str = X509_NAME_oneline(X509_get_subject_name(cert),0,0);printf ("\t subject: %s\n", str);OPENSSL_free(str);str = X509_NAME_oneline(X509_get_issuer_name(cert),0,0);printf ("\t issuer: %s\n", str);OPENSSL_free(str);X509_free(cert);if(BIO_do_handshake(sbio) <= 0){fprintf(stderr, "Error establishing SSL connection/n");ERR_print_errors_fp(stderr);}/* 這里可以添加檢測SSL連接的代碼,得到一些連接信息*/const char *http_req_hdr_tmpl = "GET %s HTTP/1.1\r\n""Accept: image/gif, image/jpeg, text/json,text/html */*\r\nAccept-Language: zh-cn\r\n""Accept-Encoding: gzip, deflate\r\nHost: %s\r\n""User-Agent: %s <0.1>\r\nConnection: Keep-Alive\r\n\r\n";int bufsize = 1024;char header_get[bufsize];len = sprintf(header_get,http_req_hdr_tmpl,"/routerjson","api.jd.com","User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36");//BIO_puts(sbio, header_get);BIO_write(sbio,header_get,len);for(;;){len = BIO_read(sbio, tmpbuf, 1024);if(len <= 0) break;BIO_write(out, tmpbuf, len);}BIO_free_all(sbio);BIO_free(out);return 0; }

?如果不知道怎么編譯鏈接或者出錯的同學請看我的另一篇隨筆

?解決引用openssl靜態(tài)庫libcrypto.a和libssl.a出現(xiàn)undefined reference to錯誤的問題

?

posted on 2015-11-27 22:45 Rhina 閱讀(...) 評論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/Boyona/p/5001921.html

總結(jié)

以上是生活随笔為你收集整理的openssl https 单向认证连接成功示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。