SSL_get_verify_resultで、接続先のSSL証明書の検証結果を取得する。
これで問題ないならば、リクエストの書き込みをするという流れとなる。
/docs/man1.0.2/ssl/SSL_get_verify_result.html
SSL_get_verify_result.cで、
BIO_do_connectで接続後、SSL_get_verify_resultにsslを渡す。
ssl_resultがX509_V_OKなら、問題ないのでGETリクエストを書き込み、そしてレスポンスを読み込む。
今回はちゃんとした証明書がある"www.google.co.jp"に接続した。
"bgstation0.com"のオレオレ証明書だとエラーが出たので。
$ vi SSL_get_verify_result.c $ gcc -o SSL_get_verify_result SSL_get_verify_result.c -lssl -lcrypto $ ./SSL_get_verify_result ctx = 01d75820 SSL_CTX_load_verify_locations success! BIO_new_ssl_connect success! bio = 01d78090 ssl = 01d78150 ssl_mode = 00000000 ssl_mode = 00000004 SSL_MODE_AUTO_RETRY SSL_get_verify_result! ssl_result = 0 BIO_do_connect success! bio = 01d78090 HTTP/1.1 200 OK Date: Wed, 17 May 2017 07:45:56 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=Shift_JIS P3P: CP="This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info." Server: gws X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN Set-Cookie: NID=103=Yl-M1w_g4Ry_vJy8e1mtK4YuiHfH7dhrstOZdtfuGPFcPkKYXOW3C8wEkrQzbILrBsMKKecRjaHTtPyjoK2JI4DB5-NIIgH1wjRelP6f8699sTfQ9IKdyYmn2rEwEfnV; expires=Thu, 16-Nov-2017 07:45:56 GMT; path=/; domain=.google.co.jp; HttpOnly Alt-Svc: quic=":443"; ma=2592000; v="37,36,35" Accept-Ranges: none Vary: Accept-Encoding Connection: close <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ja"><head><meta content="
(長いので省略)
google.j.en&&google.j.xi){window.setTimeout(google.j.xi,0);} </script></div></body></html>$ $
200 OKが出ている。問題なく読み込めた模様。