ssl 프로토콜과 소켓 connect..

익명 사용자의 이미지

안녕하세요 컴공과4학년 학생입니다 ^^

10월 2일날 졸업작품 발표회가 있어서..

요새 주욱~ ssl을 건드리고 있는데..

ssl 프로토콜을 기반으로 네떡 플밍을 짜고 있는데..

자꾸만 connect 부분에서 에러가 나네요.

기본 문법은 절대 틀린게 아닌데..

************** 소스부분 *******************
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr(MASERVER);
address.sin_port = htons(9338);

if ( init_connection(&ssld, &ssl, &ctx, &address) <0)
{
printf("SSL 연결 불량임ㅡㅡ^\n");
exit(-1);
}

if((socksfd = socket(AF_INET, SOCK_STREAM, 0))<0){
printf("socket 생성 실패ㅡㅡ^\n");
exit(0);
}

serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr(MASERVER);
serv_addr.sin_port = htons(6666);

if ( connect(socksfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr))<0)
{
printf("연결 불량임ㅡㅡ^\n");
exit(-1);
}

********************************************

정말 틀린게 아닌데.. ㅡㅡ^

혹 문법적으로 뭔가 문제가 있는건지..

아님 원래 ssl과 소켓connect를 동시에 연결하는게 안되는건지.. ㅡㅡ;

(아~ ssl 쪽에 있는 connection함수는 제가 따로 만든겁니다. )

알고싶습니다.

익명 사용자의 이미지

흠.. 경우에 따라서는 address 구조를 모두 0으로 초기화 한 후 주소나
포트, 프로토콜을 설정해야 하는 경우도 있지만 이전의 init_connection
()에서 정상처리된 것으로 보아서는(근데 에러가 어디서 난거예여? 저 아
랫쪽 connect 에서 난건가여?) 이 문제는 아닌 듯 하구여,

errno 를 참조해 보세여. exit() 하시기 전에 찍어보시면 왜 에러가 났는
지 아는데 좀 힌트가 될 것 같으니까여..

익명 사용자의 이미지

답변 감사드립니다 _(__)_

저의 질문이 조금 부족한 듯 했었네요..^^

님의 말씀처럼 errno를 찍어봤더니

84번이 나오네요....

--> 84 부적절하거나 불완전한 다중바이트 또는 광역 문자

라고 하는데...

SSL연결은 잘 되었는데..

그 밑의 소켓connect가 연결되지 않는 것입니다.

특정포트를 사용해야 하거나.. 뭐 그런 제약같은게 있는건가요?

익명 사용자의 이미지


흠..

84번 오류(아마 리눅스에서 수행하셨나봐요?)는
connect에서 발생하는 오류가 아닌 듯 한데 발생한 것이 좀 이상하네요.

client socket 만들어서 connect 하는데는 별 문제없어보이거든요.

serv_addr.sin_family = AF_INET;
문장 전에
memset(&serv_addr, 0, sizeof(serv_addr));
printf("errno %d\n", errno);
를 한번 추가해서 수행해 봐주실래요?

errno는 connect 들어가기 전에 한번 더 수행해 봐 주시고요.

혹시 multi-threaded 인 경우에는 컴파일시 -D_REENTRANT 를
지정해 주셨는지도 한번 확인해 주시고요.

수고하세요,,

익명 사용자의 이미지

님이 말씀하신 대로 해보니까.

**** 결과값 *****
[root@bridge nids]# ./ids
SSL connection using DES-CBC3-MD5
SSL 연결 성공~ (<-그냥 printf한것)
errno 0
errno 0

errno 111 (<-connect함수 바로 밑에 했음.. )
연결 불량임ㅡㅡ^

*****************************************************

이런식으로 나오네요.. 앞에 둘은 성공했는데.. ㅤ^^;;

errno가 다시 바뀌었네요.. ㅡㅡ^ 이런..

으~ 해결됐음 좋겠는데..

안되니 꽤나 답답하네요 ^^;

익명 사용자의 이미지


리눅스의 111번 오류 ECONNREFUSED 네요.
man 에서 보신대로 그쪽 port를 listen하고 있는 서비스가
없기 때문에 발생하거든요. 즉, 서버장비쪽에서 6666 번에 붙어서
서비스를 해 주는 프로세스가 안 뜬거죠.

실제로 그 장비에 telnet 등으로 들어가셔서
ps등으로 프로세스를 확인해 보시고요, 프로세스가 떠 있다고 하면
netstat -an | grep 6666 을 해봐서
.... LISTEN
이라는 것이 있는지 확인해 보시고, (아마 없을 것입니다.)
없으면 6666 번 포트를 서비스해줘야 하는 프로그램을
trace 해 보도록 하세요.

수고하세요,,

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.