2017-04-13 1 views
0

모두에서 HTTP 프록시,UNABLE_TO_VERIFY_LEAF_SIGNATURE 노드

를 사용하는 동안 나는 다른 서버로 verbatum 모든 요청을 전달하는 간단한 프록시를 만들려고하고 있습니다. 이렇게하려면 "http-proxy"npm을 사용합니다. 로컬에서 클라우드 서버로 이동하려고합니다. 처음에 http-proxy를 설정할 때 "첫 번째 인증서를 확인할 수 없음"이라는 오류가 나타났습니다. 온라인으로 조사한 결과 자체 서명 인증서가 있다는 사실을 알았습니다. 자체 서명되었으므로 인증서 저장소에 없으므로 유효성을 확인할 수 없습니다. 그러나 개발 과정에서이 작업이 필요하지 않기 때문에 인증서 확인을 무시하기 위해 "secure : false"를 추가했습니다. 나는 그것이 생산에서 안전하지 못하다는 것을 알고 있지만, 나는 지금 당장이 문제를 해결하려고 노력하고있다. 이 업데이트는 실제로이 오류를 해결했습니다.

이제 "UNABLE_TO_VERIFY_LEAF_SIGNATURE"오류가 발생합니다.

이 오류를 제거하는 방법을 알아낼 수 있습니까? 나는 이것을 추가하려고 시도했다 :process.env [ 'NODE_TLS_REJECT_UNAUTHORIZED'] = '0'

그러나 여전히 오류를 보여줍니다. http-proxy가 내 보낸 이벤트에서 오류가 발생합니다 (이 이벤트의 경우 아래 코드 참조). 내가 itno 'proxyRes'를 드릴 다운하면 나는 proxyRes에서이 오류를 볼 수 있습니다 -> 연결 -> authorizationError -> UNABLE_TO_VERIFY_LEAF_SIGNATURE

다음

아래에있는 내 코드입니다 :

'use strict' 
require('dotenv').config({silent: true}) 
var util = require('util'); 
const loggerFactory = require('./utils/logger') 
const express = require('express') 
const defaultRouter = require('./routes/default') 
var logger = loggerFactory.consoleLogger 
const proxy = require('http-proxy'); 

module.exports = (config) => { 
const app = express() 
// app.use(loggerFactory.requestLogger()) 
app.set('json spaces', 2) 
app.set('port', config.express.port) 

app.use('', defaultRouter) 

process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0' 
var apiProxy = proxy.createProxyServer({}); 
var proxyUrl = process.env.HOMEINSPECTIONSERVER_URL; 

app.use((req,res,next) => { 
apiProxy.web(req, res, 
    { 
     target: proxyUrl, 
     secure: false, 
    } 
); 

apiProxy.on('error', function(e) { 
    logger.error("Error during proxy call!") 
    logger.error("This is the error : " + e) 
    next('route') 
}); 

apiProxy.on('proxyReq', function(proxyReq, req, res, options) { 
    logger.info("---REQUEST---") 
    console.log("---REQUEST---") 
    // logger.info(util.inspect(proxyReq)) 
    proxyReq.setHeader('X-Special-Proxy-Header', 'foobar'); 
}); 

apiProxy.on('proxyRes', function (proxyRes, req, res) { 
    // logger.info("---RESPONSE---") 
    // logger.info(util.inspect(proxyRes)) 
    // logger.info("---RESPONSEEND---") 
    logger.info('RAW Response from the target', 
JSON.stringify(proxyRes.headers, true, 2)); 
}); 

apiProxy.on('open', function (proxySocket) { 
    proxySocket.on('data', hybiParseAndLogMessage); 
}); 

apiProxy.on('close', function (res, socket, head) { 
    console.log('Client disconnected'); 
}); 

apiProxy.on('start', function (req, res, target) { 
    // console.log('Started Request!'); 
}); 
}) 

app.use((req, res) => { 
// logger.info('starting request...') 
res.json(res.locals.standardResponse) 
}) 
app.use((err, req, res, next) => { 
var statusCode = 500 

if (res.locals.standardResponse) { 
    res.locals.standardResponse.error = err 
    statusCode = err.statusCode || 600 
    logger.error(err) 
    res.status(statusCode).json(res.locals.standardResponse) 
} 

if (err.error !== undefined && err.error.httpStatus !== undefined) { 
    statusCode = err.error.httpStatus 
} else { 
    statusCode = err.statusCode || 600 
} 

logger.error(err) 
res.status(statusCode).json(res.body) 
}) 

return app 

} 어떤 들어

답변

0

가 하나는 또한 위 의이 문제가 있습니다. express-http-proxy라는 npm 패키지를 사용하여 문제를 해결했습니다. 당신은 여기 그것을 얻을 수 있습니다

'use strict' 
require('dotenv').config({silent: true}) 
const loggerFactory = require('./utils/logger') 
const express = require('express') 
const defaultRouter = require('./routes/default') 
var logger = loggerFactory.consoleLogger 

module.exports = (config) => { 
    process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0' 

    const app = express() 
    app.set('json spaces', 2) 
    app.set('port', config.express.port) 
    app.use('', defaultRouter) 
    var proxy = require('express-http-proxy'); 
    app.use(proxy(process.env.HOMEINSPECTIONSERVER_URL)) 

    return app 
} 

참고 여기에 코드의 중요한 부분 :

process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0' 

희망 사람이 사람을 도움이

enter link description here

그래서 내 코드는 지금과 같은

걸리다!