2015-01-20 2 views
1

C#으로 작성된 클라이언트 서버 응용 프로그램이 있습니다. 사실 tcp 연결은 rsa와 rijandel (가난한 사람 SSL 같은)에 의해 암호화됩니다. 나는 종종 독자적 구현이 아닌 SSL과 같은 것을 사용해야한다는 것을 자주 읽었습니다. 나는이 이유를 알고있다. 그러나 SSL을 사용하면 두 개의 인증서가 필요합니다. 하나는 클라이언트 용이고 다른 하나는 서버용 인증서입니다. (서버가 클라이언트와 다른 방법으로 데이터를 보내기 때문에) 클라이언트에서 어떻게합니까? 아니면이 통신에 다른 암호 화 채널을 사용해야합니까?SSL 또는 자체 구현입니까?

+0

서버에만 인증서가 필요합니다. SSL 지원 웹 사이트를보십시오. 서버가 페이지를 다시 보내고 (암호화 된) 자신의 인증서가 없어도 해독 할 수 있습니다. – itsme86

+0

좋아, 그럼 난 SSL을 이해하지 못 했어. 두 개의 개인 키와 두 개의 공개 키가 필요합니다. 클라이언트에는 개인 키가 있고 서버에는 개인 키가 있습니다. 말하면, 서버 만 인증서가 필요합니다. 클라이언트의 개인 키는 무엇입니까? 클라이언트의 개인 키가 인증서에도 포함되어 있습니다. –

+0

키는 내 기술 세트를 벗어난 수학을 사용하여 파생됩니다. 내 이해는 키가 특정 교묘 한 일이 발생할 수있는 특정 수학적 속성을 가지고있다. – itsme86

답변

2

SSL (또는 TLS)은 두 가지 용도로 public key cryptography을 사용합니다. 하나는 통신 채널을 암호화하는 것이며 (실제로는 대칭 키를 교환하기 만 함) 하나는 서버 식별을위한 것입니다. 공용 개인 키 쌍의 공용 키는 권한에 의해 디지털 서명 된 인증서로 교환됩니다.

클라이언트가 로그인하는 것과는 다른 자체 인증을 필요로하지 않으면 클라이언트 인증서가 필요하지 않습니다. 서버 인증서는 서버를 식별하고 통신 채널을 암호화하기에 충분합니다.

클라이언트 인증서는 일반적으로 백그라운드 서비스 나 데몬이 웹 서비스로 자신을 식별해야하는 시나리오에서 사용됩니다. 이 경우 요청을 승인하는 데 ID를 사용할 수있는 사용자가 없습니다.

관련 문제