Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/32: Рейтинг темы: голосов - 32, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 13.04.2010
Сообщений: 15

SSL/TLS в FTP, SMTP, POP3, IMAP

24.01.2013, 12:34. Показов 5893. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Помогите, пожалуйста, разобраться в следующем вопросе.

Не получается понять логику, как создается шифрованное подключение. При подключении нужно указать подписанный сертификат. Но по идее у клиента сертификата быть не должно. Я так понимаю нужно как то получить с сервера закрытый ключ и с помощью него уже подключатся и устанавливать шифрованное подключение.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.01.2013, 12:34
Ответы с готовыми решениями:

SMTP, SSL, TLS
Здравствуйте, устанавливаю соединение с smtp.mail.ru, получаю - 220 smtp42.i.mail.ru ESMTP ready (Looking for Mail for your domain? Visit...

POP3, SMTP: добавить SSL
Доброго времени суток! Погуглил на самый посещаемый форум, зарегился в надежде, что тут помогут... :friends: Есть готовое приложение...

SSL, TLS и POP3
Друзья-программисты, очень нужна ваша помощь!!! Я бьюсь над созданием почтового клиента(не спрашивайте зачем, знаю что горы их в сети)....

3
 Аватар для vans37
36 / 20 / 4
Регистрация: 28.01.2013
Сообщений: 37
30.03.2013, 17:45
Клиентский сертификат обычно не требуется(по крайней мере,когда я подключаюсь к vk.com,openstat.ru,google.ru).
Если используете OpenSSL ,то там все просто,никаких навыков математика не надо,все,что нужно проинициализировать SSL
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
BIO  *SSL_INITIALIZE()
{
    BIO * bio;
    SSL * ssl;
    SSL_CTX * ctx;
    SSL_library_init();
    ERR_load_BIO_strings();
    SSL_load_error_strings();
    OpenSSL_add_all_algorithms();
 
    ctx = SSL_CTX_new(SSLv23_client_method());
    bio = BIO_new_ssl_connect(ctx);
    BIO_get_ssl(bio, & ssl);
    SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
    BIO_set_conn_hostname(bio, HOST_NAME":"SSL_PORT);
 
    if(BIO_do_connect(bio) <= 0)
    {
        fprintf(stderr, "Error attempting to connect\n");
        ERR_print_errors_fp(stderr);
        BIO_free_all(bio);
        SSL_CTX_free(ctx);
        return NULL;
    }
    return bio;
}
и уже отправлять и принимать запросы(шифруются они самой библиотекой)
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
30.03.2013, 17:54
А можно более полный пример ?
К примеру как загрузить страничку сайта по HTTPs ...
0
 Аватар для vans37
36 / 20 / 4
Регистрация: 28.01.2013
Сообщений: 37
30.03.2013, 19:03
Да,вот,пожалуйста.
Компилили на Code::Blocks 10.05, последняя версия OpenSSL
Чтобы скомпилить ,нужно в папочку с проектом кинуть dll из главной директории OpenSSL
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <openssl/ssl.h>
#include <openssl/err.h>
#include <locale.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define HOST_NAME "openstat.ru" //имя хоста гугл
#define SSL_PORT "443" // защищенное соединение использует 443 порт
/* + линкуешь libeay32,ssleay32, + dll в папку с проектом! */
/* инициализируем SSL */
BIO  *SSL_INITIALIZE();
/* отправляем запрос */
char *SEND_REQUEST();
 
int main()
{
 setlocale(LC_ALL,"");
 char *s = SEND_REQUEST();
 FILE *fout = fopen("index.html","w");
    if(fout == NULL ) exit(-1);
 fputs(s,fout);
return 0;
}
BIO  *SSL_INITIALIZE()
{
    BIO * bio;
    SSL * ssl;
    SSL_CTX * ctx;
    SSL_library_init();
    ERR_load_BIO_strings();
    SSL_load_error_strings();
    OpenSSL_add_all_algorithms();
 
    ctx = SSL_CTX_new(SSLv23_client_method());
    bio = BIO_new_ssl_connect(ctx);
    BIO_get_ssl(bio, & ssl);
    SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
    BIO_set_conn_hostname(bio, HOST_NAME":"SSL_PORT);
 
    if(BIO_do_connect(bio) <= 0)
    {
        fprintf(stderr, "Error attempting to connect\n");
        ERR_print_errors_fp(stderr);
        BIO_free_all(bio);
        SSL_CTX_free(ctx);
        return NULL;
    }
    return bio;
}
 
char *SEND_REQUEST()
{
    BIO *bio = SSL_INITIALIZE();
 
    char request[] = "GET / HTTP/1.1\r\nHost: www.openstat.ru\r\n\r\n";
    BIO_write(bio, request, strlen(request)+1);
 
      int p,n=0;
    char r[1024*1024];
 
 
    for(;;)
    {
        p = BIO_read(bio, r+n, sizeof(r)-n);
        if(p <= 0) break;
         n+=p;
 
    }
    return r;
 
}
Добавлено через 3 минуты
openstat.ru сервер работает только по https протоколу,можете проверить в браузере
страничку получил,все ок
единственное,что могут возникнуть вопросы у других компиляторов,отличных от код блоха
проект ssl/tls обязательно должен включать applink.c если вы пишете на C и наоборот не требуется,если пишете на C++
если есть вопросы - http://vk.com/vasutskii
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.03.2013, 19:03
Помогаю со студенческими работами здесь

Pop3+imap+smtp
Добрый день. Есть сервер lotus domino 6.5.4 Есть куча пользователей. Запущенны: POP3 server, imap server, smtp server, listner для...

Прием электронных сообщений, POP3, SSL/TLS
Добрый день, подскажите пожалуйста как реализовать прием писем с почты POP3 + SSL или TLS? Просто изменить порт на 995 не катит :-using...

SMTP,POP3,IMAP Почтовый клиент
Во общем smtp клиентское приложение должно отправлять письма на сервер(насколько я понял)а с этого сервера письмо уже будет отправлено...

Получить список контактов imap/pop3/smtp
Доброго времени суток, можно ли как-то получить список контактов с помощью imap/pop3/smtp ? насколько я знаю, что поп3 не поддерживает это.

POP3, SMTP, IMAP, HTTP как всё это настроить?
Люди, форумчане! Подскажите пожалуста в одном вопросе. Я хочу написать письмо, но не с почты типа Яндекс, а с сайта. Нажимаю кнопку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru