2012-10-10 5 views
0

그래서 기본 노드 응용 프로그램에서 작업하고 있습니다. 클라이언트는 SSL을 사용하여 클라이언트에 연결합니다. 그것은 단지 서버 인증서를 사용할 때 잘 작동하는 것처럼 보이지만 클라이언트 인증서를 요청하려고 할 때 클라이언트 인증서를 던지더라도 계속 작동합니다.node.js + restify - 클라이언트 인증서가 필요합니다

이 사이트와 관련된 질문을 찾았지만 거기에 포함 된 답변이 저에게 도움이되지 않았습니다. 들어오는 요청 객체가 콘솔에 기록되도록 내가 연결을 테스트 컬 사용하고

var restify=require('restify'); 
var fs=require('fs'); 

var server=restify.createServer({ 
    certificate: fs.readFileSync('../certs/server.crt'), 
    key: fs.readFileSync('../certs/server.key'), 
    ca: fs.readFileSync('../certs/ca.crt'), 
    requestCert: true, 
    rejectUnauthorized: true, 
}); 

... 

server.listen(8080, function() { 
    console.log('servers up...'); 
}); 

, 그리고 거의 아무것도 : Here's one.

여기에 관련 코드입니다.

내가 사용했던 다양한 컬 명령 줄이

은 다음과 같습니다 인증서가 로컬에서 생성 된 컬이 그들을 확인하고 싶어하기 때문에 나는 -k 사용하고

curl -k https://localhost:8080/hello 
curl -k -E user.combined:password https://localhost:8080/hello 

. (이것은 문제가 될 수 있습니까 ??)

노드 인스턴스에 무엇을 보내더라도 사용자가 적절한 인증서를 사용하고 있다면 기대할 수있는 결과를 얻습니다 (두 번째 컬 명령에있는 것처럼). 위의 줄). 에 속도까지 내가 완벽하지 않다가 여기에 무슨 일이있어, 분명히

req = { socket: 
    { pair: 
     _secureEstablished: true, 
     _isServer: true, 
     ... 
     _rejectUnauthorized: false, 
     _requestCert: false, 

     (further down) 

     authorized: false 

: 콘솔에 기록

는,이 참조하십시오. 뭐가 될수 있었는지? 컬과 -v 사용

== UPDATE ==

컬 출력이를 포함하여 나에게 몇 가지 추가 정보를 가져옵니다

* About to connect() to localhost port 8080 (#0) 
* Trying 127.0.0.1... connected 
* successfully set certificate verify locations: 
* CAfile: none 
    CApath: /etc/ssl/certs 

위에서 언급 한 바와 같이, 내 ca.crt 파일은에 (상대) 디렉토리 ../certs

고맙습니다.

답변

2

이 기능은 restify 1.4.4부터 지원되지 않습니다. Git 저장소의 마스터 브랜치에 코드가 추가 된 것을 볼 때 2.0 버전에 포함될 것이라고 나는 믿는다.

관련 문제