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サーバーに接続処理渡してなかったという。
Comments