質問編集履歴

5 エラーに対する追記

akakou

akakou score 32

2017/10/26 08:21  投稿

Node.jsでhttpsプロキシを立てcurlで繋ぐと、curl側でエラーが出てしまう
###前提・実現したいこと
HTTPSでクライアント及びgoogle.comに接続するLプロキシを書こうとしたのですが、デバッグとして以下のコマンドでcurlで繋ごうとしたところ、エラーが出てしまいます。
```
curl -v --proxy-insecure -x https://localhost -L http://google.com
```
###発生している問題・エラーメッセージ
curlには以下のようなエラーが出ました。  
```
* Rebuilt URL to: http://google.com/
*  Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 443 (#0)
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
 CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* Proxy certificate:
* subject: //
* start date: Oct 4 22:59:50 2017 GMT
* expire date: Oct 4 22:59:50 2018 GMT
* issuer: //
* SSL certificate verify result: self signed certificate (18), continuing anyway.
> GET http://google.com/ HTTP/1.1
> Host: google.com
> User-Agent: curl/7.56.0
> Accept: */*
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 302 Found
< cache-control: private
< content-type: text/html; charset=UTF-8
< referrer-policy: no-referrer
< location: https://www.google.co.jp/?gfe_rd=cr&dcr=0&ei=SRrxWYrHMbHU8AeByq2ABg
< content-length: 272
< date: Wed, 25 Oct 2017 23:12:09 GMT
< alt-svc: quic=":443"; ma=2592000; v="39,38,37,35"
< connection: close
<
* Closing connection 0
* TLSv1.2 (OUT), TLS alert, Client hello (1):
* Issue another request to this URL: 'https://www.google.co.jp/?gfe_rd=cr&dcr=0&ei=SRrxWYrHMbHU8AeByq2ABg'
* Hostname localhost was found in DNS cache
*  Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 443 (#1)
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
 CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server accepted to use http/1.1
* Proxy certificate:
* subject: //ここは隠します
* start date: Oct 4 22:59:50 2017 GMT
* expire date: Oct 4 22:59:50 2018 GMT
* issuer: // ここは隠します
* SSL certificate verify result: self signed certificate (18), continuing anyway.
* allocate connect buffer!
* Establish HTTP proxy tunnel to www.google.co.jp:443
> CONNECT www.google.co.jp:443 HTTP/1.1
> Host: www.google.co.jp:443
> User-Agent: curl/7.56.0
> Proxy-Connection: Keep-Alive
>
* Proxy CONNECT aborted
* CONNECT phase completed!
* Connection #1 to host localhost left intact
curl: (56) Proxy CONNECT aborted
```
###該当のソースコード
```javascript
var httpProxy = require('http-proxy');
var fs = require('fs');
var config = {
 port: process.env['PORT'], // 443
 ssl: {
   key: fs.readFileSync(__dirname + process.env['SSL_KEY'], 'utf8'), // ssl key
   cert: fs.readFileSync(__dirname + process.env['SSL_CERT'], 'utf8') // ssl cert
 }
};
var proxy = httpProxy.createServer({
   ssl: config.ssl,
   target: 'https://google.com',
   secure: true
}).listen(config.port);
proxy.on('proxyReq', function (proxyReq, req, res) {
 console.log('proxyReq');
});
proxy.on('proxyRes', function(proxyRes, req, res) {
 console.log('proxyRes');
});
console.log('Server running at https://localhost:' + config.port);
```
###試したこと
実行してみたところ以下の文字列は表示されてましたので、最後にクライアントへのレスポンス送信がうまくいってないのかと思います。
```
proxyReq
proxyRes
```
###補足情報(言語/FW/ツール等のバージョンなど)
* node.js
* docker, docker-compose
  • JavaScript

    28610 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • HTTPS

    481 questions

    HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

  • Node.js

    3393 questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

4 curlのコマンドに-vを追加

akakou

akakou score 32

2017/10/26 08:19  投稿

Node.jsでhttpsプロキシを立てcurlで繋ぐと、curl側でエラーが出てしまう
###前提・実現したいこと
HTTPSでクライアント及びgoogle.comに接続するLプロキシを書こうとしたのですが、デバッグとして以下のコマンドでcurlで繋ごうとしたところ、エラーが出てしまいます。
```shell
curl --proxy-insecure -x https://localhost -L http://google.com
```
curl -v --proxy-insecure -x https://localhost -L http://google.com
```
###発生している問題・エラーメッセージ
```
* Rebuilt URL to: http://google.com/  
*  Trying ::1...  
* TCP_NODELAY set  
* Connected to localhost (::1) port 443 (#0)  
* successfully set certificate verify locations:  
*  CAfile: /etc/ssl/certs/ca-certificates.crt  
 CApath: none  
* TLSv1.2 (OUT), TLS handshake, Client hello (1):  
* TLSv1.2 (IN), TLS handshake, Server hello (2):  
* TLSv1.2 (IN), TLS handshake, Certificate (11):  
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):  
* TLSv1.2 (IN), TLS handshake, Server finished (14):  
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):  
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):  
* TLSv1.2 (OUT), TLS handshake, Finished (20):  
* TLSv1.2 (IN), TLS handshake, Finished (20):  
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256  
* Proxy certificate:  
* subject: //  
* start date: Oct 4 22:59:50 2017 GMT  
* expire date: Oct 4 22:59:50 2018 GMT  
* issuer: //  
* SSL certificate verify result: self signed certificate (18), continuing anyway.  
> GET http://google.com/ HTTP/1.1  
> Host: google.com  
> User-Agent: curl/7.56.0  
> Accept: */*  
> Proxy-Connection: Keep-Alive  
>  
< HTTP/1.1 302 Found  
< cache-control: private  
< content-type: text/html; charset=UTF-8  
< referrer-policy: no-referrer  
< location: https://www.google.co.jp/?gfe_rd=cr&dcr=0&ei=SRrxWYrHMbHU8AeByq2ABg  
< content-length: 272  
< date: Wed, 25 Oct 2017 23:12:09 GMT  
< alt-svc: quic=":443"; ma=2592000; v="39,38,37,35"  
< connection: close  
<  
* Closing connection 0  
* TLSv1.2 (OUT), TLS alert, Client hello (1):  
* Issue another request to this URL: 'https://www.google.co.jp/?gfe_rd=cr&dcr=0&ei=SRrxWYrHMbHU8AeByq2ABg'  
* Hostname localhost was found in DNS cache  
*  Trying ::1...  
* TCP_NODELAY set  
* Connected to localhost (::1) port 443 (#1)  
* ALPN, offering http/1.1  
* successfully set certificate verify locations:  
*  CAfile: /etc/ssl/certs/ca-certificates.crt  
 CApath: none  
* TLSv1.2 (OUT), TLS handshake, Client hello (1):  
* TLSv1.2 (IN), TLS handshake, Server hello (2):  
* TLSv1.2 (IN), TLS handshake, Certificate (11):  
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):  
* TLSv1.2 (IN), TLS handshake, Server finished (14):  
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):  
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):  
* TLSv1.2 (OUT), TLS handshake, Finished (20):  
* TLSv1.2 (IN), TLS handshake, Finished (20):  
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256  
* ALPN, server accepted to use http/1.1  
* Proxy certificate:  
* subject: //ここは隠します  
* start date: Oct 4 22:59:50 2017 GMT  
* expire date: Oct 4 22:59:50 2018 GMT  
* issuer: // ここは隠します  
* SSL certificate verify result: self signed certificate (18), continuing anyway.  
* allocate connect buffer!  
* Establish HTTP proxy tunnel to www.google.co.jp:443  
> CONNECT www.google.co.jp:443 HTTP/1.1  
> Host: www.google.co.jp:443  
> User-Agent: curl/7.56.0  
> Proxy-Connection: Keep-Alive  
>  
* Proxy CONNECT aborted  
* CONNECT phase completed!  
* Connection #1 to host localhost left intact  
curl: (56) Proxy CONNECT aborted
```
###該当のソースコード
```javascript
var httpProxy = require('http-proxy');
var fs = require('fs');
var config = {
 port: process.env['PORT'], // 443
 ssl: {
   key: fs.readFileSync(__dirname + process.env['SSL_KEY'], 'utf8'), // ssl key
   cert: fs.readFileSync(__dirname + process.env['SSL_CERT'], 'utf8') // ssl cert
 }
};
var proxy = httpProxy.createServer({
   ssl: config.ssl,
   target: 'https://google.com',
   secure: true
}).listen(config.port);
proxy.on('proxyReq', function (proxyReq, req, res) {
 console.log('proxyReq');
});
proxy.on('proxyRes', function(proxyRes, req, res) {
 console.log('proxyRes');
});
console.log('Server running at https://localhost:' + config.port);
```
###試したこと
実行してみたところ以下の文字列は表示されてましたので、最後にクライアントへのレスポンス送信がうまくいってないのかと思います。
```
proxyReq
proxyRes
```
###補足情報(言語/FW/ツール等のバージョンなど)
* node.js
* docker, docker-compose
  • JavaScript

    28610 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • HTTPS

    481 questions

    HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

  • Node.js

    3393 questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

3 docker-compose 周りのコメントを追加

akakou

akakou score 32

2017/10/24 15:34  投稿

Node.jsでhttpsプロキシを立てcurlで繋ぐと、curl側でエラーが出てしまう
###前提・実現したいこと
HTTPSでクライアント及びgoogle.comに接続するLプロキシを書こうとしたのですが、デバッグとして以下のコマンドでcurlで繋ごうとしたところ、エラーが出てしまいます。
```shell
curl --proxy-insecure -x https://localhost -L http://google.com
```
###発生している問題・エラーメッセージ
```
curl: (56) Proxy CONNECT aborted
```
###該当のソースコード
```javascript
var httpProxy = require('http-proxy');
var fs = require('fs');
var config = {
 port: process.env['PORT'],
 port: process.env['PORT'], // 443
 ssl: {
   key: fs.readFileSync(__dirname + process.env['SSL_KEY'], 'utf8'),
   cert: fs.readFileSync(__dirname + process.env['SSL_CERT'], 'utf8')
   key: fs.readFileSync(__dirname + process.env['SSL_KEY'], 'utf8'), // ssl key
   cert: fs.readFileSync(__dirname + process.env['SSL_CERT'], 'utf8') // ssl cert
 }
};
var proxy = httpProxy.createServer({
   ssl: config.ssl,
   target: 'https://google.com',
   secure: true
}).listen(config.port);
proxy.on('proxyReq', function (proxyReq, req, res) {
 console.log('proxyReq');
});
proxy.on('proxyRes', function(proxyRes, req, res) {
 console.log('proxyRes');
});
console.log('Server running at https://localhost:' + config.port);
```
###試したこと
実行してみたところ以下の文字列は表示されてましたので、最後にクライアントへのレスポンス送信がうまくいってないのかと思います。
```
proxyReq
proxyRes
```
###補足情報(言語/FW/ツール等のバージョンなど)
* node.js
* docker, docker-compose
  • JavaScript

    28610 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • HTTPS

    481 questions

    HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

  • Node.js

    3393 questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

2 タイトルをより明確にした

akakou

akakou score 32

2017/10/22 22:50  投稿

Node.jsでhttpsプロキシを立てたい
Node.jsでhttpsプロキシを立てcurlで繋ぐと、curl側でエラーが出てしまう
###前提・実現したいこと
HTTPSでクライアント及びgoogle.comに接続するLプロキシを書こうとしたのですが、デバッグとして以下のコマンドでcurlで繋ごうとしたところ、エラーが出てしまいます。
```shell
curl --proxy-insecure -x https://localhost -L http://google.com
```
###発生している問題・エラーメッセージ
```
curl: (56) Proxy CONNECT aborted
```
###該当のソースコード
```javascript
var httpProxy = require('http-proxy');
var fs = require('fs');
var config = {
port: process.env['PORT'],
ssl: {
key: fs.readFileSync(__dirname + process.env['SSL_KEY'], 'utf8'),
cert: fs.readFileSync(__dirname + process.env['SSL_CERT'], 'utf8')
}
};
var proxy = httpProxy.createServer({
ssl: config.ssl,
target: 'https://google.com',
secure: true
}).listen(config.port);
proxy.on('proxyReq', function (proxyReq, req, res) {
console.log('proxyReq');
});
proxy.on('proxyRes', function(proxyRes, req, res) {
console.log('proxyRes');
});
console.log('Server running at https://localhost:' + config.port);
```
###試したこと
実行してみたところ以下の文字列は表示されてましたので、最後にクライアントへのレスポンス送信がうまくいってないのかと思います。
```
proxyReq
proxyRes
```
###補足情報(言語/FW/ツール等のバージョンなど)
* node.js
* docker, docker-compose
  • JavaScript

    28610 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • HTTPS

    481 questions

    HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

  • Node.js

    3393 questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

1 curlで使ったコマンドを追加

akakou

akakou score 32

2017/10/15 18:52  投稿

Node.jsでhttpsプロキシを立てたい
###前提・実現したいこと
HTTPSでクライアント及びgoogle.comに接続するLプロキシを書こうとしたのですが、デバッグとしてcurlで繋いでみたところ、エラーが出てしまいます。
HTTPSでクライアント及びgoogle.comに接続するLプロキシを書こうとしたのですが、デバッグとして以下のコマンドでcurlで繋ごうとしたところ、エラーが出てしまいます。
```shell
curl --proxy-insecure -x https://localhost -L http://google.com
```
###発生している問題・エラーメッセージ
```
curl: (56) Proxy CONNECT aborted
```
###該当のソースコード
```javascript
var httpProxy = require('http-proxy');
var fs = require('fs');
var config = {
 port: process.env['PORT'],
 ssl: {
   key: fs.readFileSync(__dirname + process.env['SSL_KEY'], 'utf8'),
   cert: fs.readFileSync(__dirname + process.env['SSL_CERT'], 'utf8')
 }
};
var proxy = httpProxy.createServer({
   ssl: config.ssl,
   target: 'https://google.com',
   secure: true
}).listen(config.port);
proxy.on('proxyReq', function (proxyReq, req, res) {
 console.log('proxyReq');
});
proxy.on('proxyRes', function(proxyRes, req, res) {
 console.log('proxyRes');
});
console.log('Server running at https://localhost:' + config.port);
```
###試したこと
実行してみたところ以下の文字列は表示されてましたので、最後にクライアントへのレスポンス送信がうまくいってないのかと思います。
```
proxyReq
proxyRes
```
###補足情報(言語/FW/ツール等のバージョンなど)
* node.js
* docker, docker-compose
  • JavaScript

    28610 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • HTTPS

    481 questions

    HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

  • Node.js

    3393 questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る