OpenSSL を Proxy 対応にしてみた

前、OpenSSL が Proxy 非対応らしいということが あるブログに書かれていたので信じてしまったのですが、いろいろ試したら動いたので、メモ。

ctx = SSL_CTX_new(SSLv23_client_method());
ssl = SSL_new(ctx);
RAND_poll();
while ( !RAND_status() ){
  ret = rand() % 0x10000;
  RAND_seed(&ret, sizeof(ret));
}
::connect(sock, (struct sockaddr *)&addr, sizeof(sockaddr_in));
wsprintf(sshcon,"CONNECT %s:443 HTTP/1.1\r\n\r\n",name);
::write(sock,(char const *)sshcon, lstrlen(sshcon));
::read(sock,&sshres);
ret = SSL_connect(ssl);
wsprintf(request,"GET %s:443 HTTP/1.1\r\n\r\n",uri);
SSL_write(ssl, request, strlen(request));
SSL_read(ssl, buf, sizeof(buf)-1);
SSL_shutdown(ssl);
close(sock);

細かいエラー処理を端折るとこんな感じ。
追加したのは赤字の処理ですね。

そういえば、Proxyサーバーに接続処理渡してなかったという。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です