SSL認証をするには?


sec  2009-09-12 23:50:11  No: 70907

いまネットワークプログラミングについて勉強中のものですが、
「SSL認証」というものがまったく分かりません。
「暗号化してどーたら」という概念的なことは分かるのですが、
コーディングの仕方がまったく分からないのです。
SMTPでSSL認証を使いたいのですが、どなたかコーディングの仕方について
教えていただけませんでしょうか?


瀬戸っぷ  2009-09-13 00:16:19  No: 70908

SMTPはやったことありませんが……

OpenSSLのライブラリを使用するのであれば、
http://d.hatena.ne.jp/lemniscus/20090730/1248970407
のページとか。
他にも検索で見つかるでしょう。
# API名で検索するとか。

Socketが作成済みとして…
SSL_CTX_new()でSSL_CTXを作成し、SSL_newで関連づけ。
WinSock使ってconnect()してSSL_set_fd()でFDSETに登録(?)、
SSL_connect()でSSLのネゴシエーションしてからSSL_write()やSSL_read()で送受信。
切断はSSL_shutdown()で行い、SSL_free()とSSL_CTX_free()で後始末。
# Socketの切断やクローズも必要です。

ノンブロッキングモードの場合、FD_READでSSL_read()してもデータがとれない場合がありますので、その辺は注意…でしょうか。
# SSLの認証中のデータのやりとりでもFD_READが発生するため。
# 私はSSL_in_connect_init()で認証中か判定して対処しました。
# SSLの暗号化パケットから複合するのに受信データが足りない状態でもFD_READは発生するようです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加