2006年4月 3日

[linux-users:106427] SSLでサーブレットと通信したい

田中と申します。

LinuxでHTTPS経由でサーバーと通信するソフトを作り使っていたのですが
先日、サーバーをServletに変更してから接続できなくなってしまいました。

Servletと接続するための手順は通常の手順と何が違うのでしょうか?

ソフト http://x68000.q-e-d.net/~68user/net/ssl-2.htmlを参考にして

作成し、動いていました。

以下はソースとログの抜粋ですが、SSL_get_peer_certificateがエラーに
なっています。
SSL_get_cipherで暗号方式がNONEとなっていますので、この段階で既にお
かしいと思うのですが、以前はこのソースで動いていたので、サーバーの
設定がいけないのか、接続するクライアント(このソース)を書き換える
必要があるのかわからず悩んでいます。

ちなみに、サーバーの方はブラウザからですと問題なくSSLで開けます。

宜しくお願いします。


【ソース抜粋】
m_soc = SocConnect( host, sname );
printf("Connect %s:%s(%d)\n", host, sname, m_soc);fflush(stdout);
if( m_soc < 0 ){
printf("Connect error(%d)\n", m_soc);
return -1;
}

SSL_load_error_strings();
SSL_library_init();
m_ctx = SSL_CTX_new(SSLv2_client_method());
printf("SSL_CTX_newOK m_ctx=%d\n",m_ctx);fflush(stdout);

m_ssl = SSL_new(m_ctx);
printf("SSL_newOK m_ssl=%d\n",m_ssl);fflush(stdout);


SSL_set_fd(m_ssl, m_soc);
printf("SSL_set_fdOK\n");fflush(stdout);

rc = SSL_connect(m_ssl);
if( rc < 0 ){
printf("SSL_connect error(%d)\n", rc);fflush(stdout);
return -1;
}
printf("SSL_connectOK rc=%d\n",rc);fflush(stdout);

printf("使用する暗号化方式は %s です。\n",
SSL_get_cipher(m_ssl));fflush(stdout);

m_server_cert = SSL_get_peer_certificate(m_ssl);
if(m_server_cert == NULL){
printf("SSL_get_peer_certificate error(%d)\n", rc);
return -1;
}

printf("Server certificate:\n");fflush(stdout);

【ログ抜粋】
Connect www.XXX.co.jp:443(6)
SSL_CTX_new OK m_ctx=135074728
SSL_new OK m_ssl=135075752
SSL_set_fd OK
SSL_connect OK rc=0
使用する暗号化方式は (NONE) です。
SSL_get_peer_certificate error(0)
Server certificate:


--

投稿者 xml-rpc : 2006年4月 3日 12:18
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/34358
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。