SSL_get_verify_result

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が出ている。問題なく読み込めた模様。

Sample/openssl/SSL_get_verify_result/SSL_get_verify_result/src/SSL_get_verify_result at master · bg1bgst333/Sample · GitHub