2011-06-29 62 views
2

我注意到在Windows XP Professional和Windows 7 Professional上安装OpenSSL时出现了一些问题。对于这两个操作系统,我从Shining Light Productions网站下载Win32 OpenSSL v1.0.0dVisual C++ 2008 Redistributables二进制文件。在两台机器上都安装没有问题。但是,Windows 7机器上,我遇到了使用OpenSSL的EXE和API存在以下问题:在Windows 7中使用OpenSSL的问题

  • 从MS-DOS命令提示符下,我试图创建一个根CA与

    openssl x509 -req -in rootreq.pem -sha1 -extensions v3_ca 
        -signkey rootkey.pem -out rootcert.pem 
    

但给出了以下错误unable to write random state。 Windows XP工作正常。

  • 我编译使用OpenSSL的API一个简单的SSL的Web服务器,但是当我尝试使用
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上安装时是否需要执行额外的步骤?

仅供参考 - 我也尝试在Windows 7上安装64位二进制文​​件,但我得到了相同的结果。我真的需要在我的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; 
} 
+0

你是说要BIO_do_accept第一()调用导致错误? – jveazey

回答

2

我使用的MinGW-W64平台搭建我的OpenSSL的应用程序(无论是x86和x64的Windows)成功,我还与闪耀的光芒二进制文件的一些问题。

这是很容易建立,也有一些指令,并在http://www.blogcompiler.com/2011/12/21/openssl-for-windows/

+0

感谢您的回答。我发现最好的办法就是自己编译一切。我在以下网站找到了一个很好的教程 - http://www.askyb.com/windows/compiling-and-installing-openssl-for-32-bit-windows/ – user821955

1

当你点击命令提示符下点击右键,点击以管理员身份运行应该清理您的问题

+1

这似乎并不能解决问题。 – starbeamrainbowlabs