Windows 7 在Windows 7中使用OpenSSL时出现的问题

Windows 7 在Windows 7中使用OpenSSL时出现的问题,windows-7,openssl,Windows 7,Openssl,我注意到在Windows XP Professional和Windows 7 Professional上安装OpenSSL之间存在一些问题。对于OSS,我从闪光灯制作网站下载了 Win32 OpenSSL V1.0.0D< 和 Visual C++ 2008 可重新分发二进制文件。两台机器均已安装,没有任何问题。但是,在Windows 7计算机上,我在使用OpenSSL exe和API时遇到了以下问题: 在MS-DOS命令提示符下,我尝试使用 openssl x509 -req -in roo

我注意到在Windows XP Professional和Windows 7 Professional上安装OpenSSL之间存在一些问题。对于OSS,我从闪光灯制作网站下载了<代码> Win32 OpenSSL V1.0.0D< <代码>和<代码> Visual C++ 2008 可重新分发二进制文件。两台机器均已安装,没有任何问题。但是,在Windows 7计算机上,我在使用OpenSSL exe和API时遇到了以下问题:

  • 在MS-DOS命令提示符下,我尝试使用

    openssl x509 -req -in rootreq.pem -sha1  -extensions v3_ca 
      -signkey rootkey.pem -out rootcert.pem
    
但出现以下错误
无法写入随机状态
。Windows XP运行良好

  • 我使用OpenSSL API编译了一个简单的SSL web服务器,但是当我尝试使用
我得到以下回应

Loading 'screen' into random state - done
connect: No such file or directory
connect:errno=0
Windows XP再次得到了更好的响应。如果你看我附加的代码,看起来第二个BIO_do_accept从未被调用

有人知道问题出在哪里吗?在Windows 7上安装时是否需要执行其他步骤

仅供参考-我也尝试在Windows7上安装64位二进制文件,但得到了相同的结果。我真的需要在我的Windows7机器上安装并运行它,所以非常感谢您的帮助

///////////////////  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;
}
//code///////////////////////////////////
//简单OpenSSL Web服务器
//编译:MSVS2010专业版
//语言:C/C++
int main(int argc,char*argv[])
{
BIO*acc,*客户;
SSL*SSL;
SSL_CTX*CTX;
螺纹型tid;
init_OpenSSL();
seed_prng();
ctx=设置\服务器\ ctx();
acc=BIO_new_accept(端口);
printf(“BIO_new_accept\n”);
如果(!acc)
int_错误(“创建服务器套接字时出错”);

如果(BIO_do_accept(acc)我成功地使用MinGW-w64平台构建了我的OpenSSL应用程序(适用于x86和x64窗口),而且我还遇到了一些关于闪灯二进制文件的问题


设置起来很容易,有一些说明和一个示例应用程序在

谢谢你的回答。我发现最好的方法是自己编译所有的东西。我在下面的网站上找到了一个很好的教程-

当你点击命令提示符右键单击并点击以管理员身份运行,应该可以解决你的问题>你是说第一次调用BIO_do_accept()会导致错误吗?谢谢你的回答。我发现最好的方法是自己编译所有内容。我在下面的网站上找到了一个很好的教程-
///////////////////  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;
}