2012-01-14 5 views
2

PHP 스크립트를 사용하여 Node.js 서버에 연결하고 통신해야합니다. Node.js는 PHP 스크립트의 요청에만 응답해야하므로 노드 서버에 일종의 인증 방법이 있는지 확인해야합니다.저렴한 클라이언트 식별과 적절한 SSL 클라이언트 인증

이제 실제로 PHP 스크립트가 연결되는 것을 확인하기 위해 PHP 스크립트가 작성하는 요청과 함께 미리 공유 된 비밀 정보를 보내는 것과 같은 값싼 인증을 사용하려고 생각했습니다. 노드 서버는 이것을 자신의 비밀과 단순히 비교하며, 일치하면 다른 사람이 아니라 스크립트가 연결되어 있다고 가정 할 수 있습니다 (SSL에 재생 공격을 방지하는 기본 제공 방법이 있다고 가정).

이 전체 프로세스는 노드 서버의 신원을 확인할 수있는 스크립트 보너스가 추가 된 HTTPS를 통해 수행됩니다.

충분히 안전합니까, 아니면 적절한 SSL 기반 클라이언트 인증을해야합니까? 결국 HTTPS를 통해 사전 공유 된 비밀을 쉽게 알아낼 수 없습니다.

답변

3

HTTPS는 재생할 수 없습니다 (the ServerHello message에는 연결 공유 키를 생성하는 데 사용 된 임의의 숫자가 포함되어 있기 때문에). 보안 채널을 통해 이야기하기 때문에 미리 공유 한 암호도 스니핑 할 수 없습니다. 빠르고 지저분하지 않은 해결책으로서 당신의 계획은 저에게 잘 들립니다.

+0

실제 비밀 대신에 요청 서명 방법을 사용할 수도 있지만 그 차이가별로 없습니다. 그렇지 않으면 합의했습니다. – deceze

1

HTTPS 연결 (적절한 암호 그룹으로 구성된 경우 클라이언트가 서버 인증서를 올바르게 확인한 경우)은 통신을 보호하며 HTTP 요청의 재생을 방지합니다 (실제 HTTP 요청은 다른 클라이언트가 다른 SSL 세션 ID를 가지므로 정확히 동일한 콘텐츠를 재생할 수 없으므로 표시 될 수 있습니다.

서버와 PHP 스크립트 사이에 미리 공유 된 비밀 키를 사용하는 것이 좋습니다.

클라이언트 인증서 인증을 사용할 수는 있지만,이 경우 필요한 이점을 취하지 않으면 더 복잡해집니다. 당신은 자신의 인증서를 생성하고 서버가 그것을 신뢰하게해야 할 것입니다. 더 중요한 것은, 재협상을 위해 Node.js 서버를 구성해야 할 수도 있습니다 (가능한 경우 확실하지 않음). 그렇지 않으면 해당 HTTPS 서버에 연결하는 모든 클라이언트에 클라이언트 인증서가 요청되어 불편할 수 있습니다 필요하지 않은 대부분의 사용자에게 제공됩니다.

관련 문제