Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[1653] Re:소켓 프로그램으로 HTTPS 페이지 호출하는 방법이 있을까요?
임양규 [gmpcs93] 2117 읽음    2002-11-28 09:21
안녕하세요????

https 는 SSL을 사용하는 경우인데요...

이경우에는 구현하기 굉장히 복잡할 것입니다...

왜냐하면 웹 서버와 클라이언트가 서로 여러번의 통신을 통해서 암호 키를 생성해서 그 생성된 키로 통신 내용을 암호화 및 복호화 해서 통신을 하니까요...

이 여러번의 통신은 약 10번 정도의 과정을 거치게 됩니다. 물론 서버에 따라서 정도가 틀리지만요...

대충, 인증서(digital certificate) 검증할 수 있는 모듈, 대칭키 암호 모듈, 공개키 암호 모듈, 난수 생성 모듈, 해쉬 함수 모듈 등등...아주 복잡합니다...

그러나, 친절하게도 Eric Young에 의해서 주도되는 오픈 소스 프로젝트로 OpenSSL이라는 프로그램이 있습니다.

http://www.openssl.org 에서 구하실수 있습니다.

참고로 MS IE 등에서는 SSL을 처리할 수 있는 모듈이 들어있으며, 더우기 이러한 과정을 사용자가 모르게 처리해 주기 때문에 걱정할게 없지만요...

님께서 이 페이지를 호출하려면 일단 만드신 프로그램에서 서버와 SSL 프로토콜을 수행할 수 있게 구현해야겠죠...그래야만 서버에서 무슨 내용을 페이지에 보여줄테니까요...


그 후에 서버에서 클라이언트와 인증과정이 맞다면 페이지를 뿌려주겠죠...

근데 제가 답변 드린 내용이 의도와 맞는지 모르겠네요...^^


최종호 님이 쓰신 글 :
: 소켓 프로그램으로 http 페이지를 호출하는 소켓프로그램은 구현을 했는데요..
: https 페이지를 소켓프로그램으로 호출할려고 하니...
: 당장 막막한 느낌이 들어서요.
: 접근하는 방식부터 막혀서 헤메고 있습니다.
:
: 혹시 아래 소스를 보시고
: https 페이지를 호출하는 소켓프로그램 작성에 도움주실분들은 연락주시기 바랍니다..
:
:
:
: ------------
: http페이지를 소켓프로그램으로 호출하는 C module
: ------------
:
: #include <stdio.h>
: #include <string.h>
: #include <stdlib.h>
: #include <time.h>
: #include <sys/types.h>
:
: #include <netdb.h>
: #include <sys/socket.h>
: #include <netinet/in.h>
:
: int main()
: {
:     char *str;
:     int sockfd, numbytes;
:     char buf[1024];
:     struct hostent *he;
:     struct sockaddr_in their_addr;
:     char *strurl;
:     char *url_directory;
:     char *host_name;
:
:     int lenurl;
:
:     str = (char *) malloc (sizeof(char) * 512);
:     host_name = (char *) malloc (sizeof(char) * 100);
:     strurl = (char *) malloc (sizeof(char) * 100);
:     url_directory = (char *) malloc (sizeof(char) * 100);
:
:     /* URL 문자열 입력 */
:     strcpy(host_name,"dic.simmani.com");                      // URL
:     strcpy(url_directory,"/cgi-bin/search.cgi");        // URL Directory
:     strcpy(str,"query=test");                                             // parameter
:
:     if ((he = gethostbyname(host_name)) == NULL) {
:         herror("gethostbyname");
:         return 1;
:     }
:     if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
:         perror("socket");
:         return 1;
:     }
:
:     their_addr.sin_family = AF_INET;
:     their_addr.sin_port = htons(80);
:     their_addr.sin_addr = *((struct in_addr *)he->h_addr);
:     bzero(&(their_addr.sin_zero), 8);
:
:     if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1) {
:         perror("connect");
:         return 0;
:     }
:
:     /* HTTP/1.1 프로토콜로 URL 호출 */
:     sprintf(strurl, "POST %s HTTP/1.1\n",url_directory);
:     send(sockfd, strurl, strlen(strurl), 0);
:    
:     strcpy(strurl, "Content-Type: application/x-www-form-urlencoded\n");
:     send(sockfd, strurl, strlen(strurl), 0);
:
:     strcpy(strurl, "Accept-Encoding:gzip, deflate\n");
:     send(sockfd, strurl, strlen(strurl), 0);
:
:     sprintf(strurl, "Host: %s\n",host_name);
:     send(sockfd, strurl, strlen(strurl), 0);
:
:     sprintf(strurl, "Content-Length: %d\n\n", strlen(str));
:     send(sockfd, strurl, strlen(strurl), 0);
:    
:     send(sockfd, str, strlen(str), 0);
:
:     /* 정상적으로 URL을 호출하였나 찍는 부분 */
:     while( recv(sockfd, buf, 1024, 0) > 0)
:         printf("%s\n",buf);
:
:     close(sockfd);
: }
:

+ -

관련 글 리스트
1637 소켓 프로그램으로 HTTPS 페이지 호출하는 방법이 있을까요? 최종호 1755 2002/11/27
1653     Re:소켓 프로그램으로 HTTPS 페이지 호출하는 방법이 있을까요? 임양규 2117 2002/11/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.