Я заметил некоторые проблемы между установкой OpenSSL в Windows XP Professional и Windows 7 Professional.Для обеих ОС я загрузил двоичные файлы Win32 OpenSSL v1.0.0d
и Visual C++ 2008
Redistributables с веб-сайта Shining Light Productions.Оба установлены без проблем на обеих машинах.Однако на компьютере с Windows 7 я столкнулся со следующими проблемами при использовании exe и API OpenSSL:
, но была выдана следующая ошибка unable to write random state
.Windows XP работала нормально.
- Я скомпилировал простой веб-сервер SSL, используя API OpenSSL, но при попытке подключиться, используя
openssl s_client -connect 127.0.0.1:16001
Я получаю следующий ответ
Loading 'screen' into random state - done
connect: No such file or directory
connect:errno=0
Еще раз, Windows XP вернула лучший ответ.Если вы посмотрите на мой прикрепленный код, кажется, что второй BIO_do_accept никогда не вызывается.
Кто-нибудь знает, в чем может быть проблема?Есть ли дополнительные шаги, которые мне нужно предпринять при установке на Windows 7?
К вашему сведению - я также пытался установить 64-разрядные двоичные файлы в Windows 7, но получил те же результаты.Мне действительно нужно, чтобы это работало на моем компьютере с Windows 7, поэтому любая помощь приветствуется.
/////////////////// Code ///////////////////////////////////
// Simple OpenSSL Webserver
// Compiler : MSVS 2010 Professional
// Language: C / C++
int main(int argc, char *argv[])
{
BIO *acc, *client;
SSL *ssl;
SSL_CTX *ctx;
THREAD_TYPE tid;
init_OpenSSL( );
seed_prng( );
ctx = setup_server_ctx( );
acc = BIO_new_accept(PORT);
printf ("BIO_new_accept\n");
if (!acc)
int_error("Error creating server socket");
if (BIO_do_accept(acc) <= 0)
int_error("Error binding server socket");
printf ("BIO_do_accept\n");
for (;;)
{
if (BIO_do_accept(acc) <= 0)
int_error("Error accepting connection");
printf ("BIO_do_accept2\n");
client = BIO_pop(acc);
printf ("BIO_pop\n");
if (!(ssl = SSL_new(ctx)))
int_error("Error creating SSL context");
printf ("SSL_new\n");
SSL_set_bio(ssl, client, client);
printf ("SSL_set_bio\n");
THREAD_CREATE(tid, (void *)server_thread, ssl);
}
SSL_CTX_free(ctx);
BIO_free(acc);
return 0;
}