그래서 기본 노드 응용 프로그램에서 작업하고 있습니다. 클라이언트는 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
고맙습니다.