[openssl.org #1076] Bug report

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[openssl.org #1076] Bug report

Rich Salz via RT





Hi,
I tested the OpenSSL library (version 0.9.7.g)  using the server SSL cache and I
found it's extremely slow when the client and server applications are on
different PC's(4 requests and responses per second).  If they are both on the
same computer it can handle about 100 or more.
I use 2 Pentium 4 on a local network with 1GB RAM and windows 2000 Professional
Service Pack 4.
The client server applications are the ones distribuiteed for testing purposes
(openssl-examples-20020110.tar.gz), but slightly modified for repeatedly sending
and receiving data (about  20 bytes each) .
I tested the IIS (Microsoft) implementation of HTTPS with SSL requesting
repeatedly a small HTML page and It is extremely fast. The same happens if I use
a client/server application ( derived from the one used for testing SSL)  with
standard socket without SSL.
It's a known problem? How can I solve that?
I built the library with MinGw and the test programs with Dev-Cpp. I rebuilt the
library for Pentium 4 but with the same result. The same happens with the SSleay
binaries downloaded from Internet.

This are the  source files I used to test OpenSSL(openssl-examples-20020110.tar.gz).
I hope you can help me.
Thanks in advance


_____________________wserver2.c________________BEGIN

/* A simple HTTPS server */
#include <windows.h>
#include <winsock2.h>
#include "common.h"
#include "server.h"

static int client_auth=0;
static int fork_child=1;
static char *ciphers=0;

#define CLIENT_AUTH_REQUEST 1
#define CLIENT_AUTH_REQUIRE 2
#define CLIENT_AUTH_REHANDSHAKE 3

enum codif {SSL2=0,SSL3=1,TLS1=2};
static int codifica=TLS1;


static int s_server_session_id_context = 1;
static int s_server_auth_session_id_context = 2;

static int http_serve(ssl,s)
  SSL *ssl;
  int s;
  {
    char buf[BUFSIZZ];
    int r,len=0,i;
    static int counter=0;
   // BIO *io,*ssl_bio;

    /*io=BIO_new(BIO_f_buffer());
    ssl_bio=BIO_new(BIO_f_ssl());
    BIO_set_ssl(ssl_bio,ssl,BIO_CLOSE);
    BIO_push(io,ssl_bio);
    */
/*   while(1){
  //    r=BIO_gets(io,buf,BUFSIZZ-1);
      r=SSL_read(ssl,&buf[len],BUFSIZZ-len-1);

      switch(SSL_get_error(ssl,r)){
        case SSL_ERROR_WANT_WRITE:
          break;
        case SSL_ERROR_NONE:
          len=r;
          break;

        case SSL_ERROR_ZERO_RETURN:
         goto shutdown;
          break;
        default:
          berr_exit("SSL read problem");
      }

           if(!strcmp(buf,"\r\n") ||
        !strcmp(buf,"\n"))
        break;
    }

exit:
*/
    len=SSL_read(ssl,buf,BUFSIZZ-1);


     for(i=0;i<len;i++) printf("%c",buf[i]);
     printf("\nContatore: %d\n\n",counter++);

    /* Now perform renegotiation if requested */
    if(client_auth==CLIENT_AUTH_REHANDSHAKE){
      SSL_set_verify(ssl,SSL_VERIFY_PEER |
        SSL_VERIFY_FAIL_IF_NO_PEER_CERT,0);

      /* Stop the client from just resuming the
         un-authenticated session */
      SSL_set_session_id_context(ssl,
        (void *)&s_server_auth_session_id_context,
        sizeof(s_server_auth_session_id_context));

      if(SSL_renegotiate(ssl)<=0)
        berr_exit("SSL renegotiation error");
      if(SSL_do_handshake(ssl)<=0)
        berr_exit("SSL renegotiation error");
      ssl->state=SSL_ST_ACCEPT;
      if(SSL_do_handshake(ssl)<=0)
        berr_exit("SSL renegotiation error");
    }

     SSL_write(ssl,"HTTP/1.0 200 OK\r\nServer: EKRServer\r\n\r\nServer test
page\r\n", strlen("HTTP/1.0 200 OK\r\nServer: EKRServer\r\n\r\nServer test
page\r\n"));

 /*   if((r=BIO_puts
      (io,"HTTP/1.0 200 OK\r\n"))<=0)
      err_exit("Write error");
    if((r=BIO_puts
      (io,"Server: EKRServer\r\n\r\n"))<=0)
      err_exit("Write error");
    if((r=BIO_puts
      (io,"Server test page\r\n"))<=0)
      err_exit("Write error");

    if((r=BIO_flush(io))<0)
      err_exit("Error flushing BIO");
*/
  shutdown:
    r=SSL_shutdown(ssl);
    if(!r){
      /* If we called SSL_shutdown() first then
         we always get return value of '0'. In
         this case, try again, but first send a
         TCP FIN to trigger the other side's
         close_notify*/
      shutdown(s,1);
      r=SSL_shutdown(ssl);
    }

    switch(r){
      case 1:
        break; /* Success */
      case 0:
      case -1:
      default:
      break;
   //     berr_exit("Shutdown failed");
    }

  /*  BIO_pop(io);

    //BIO_free(ssl_bio);
    BIO_free(io);
    */
   SSL_free(ssl);


    closesocket(s);

    return(0);
  }

int main(argc,argv)
  int argc;
  char **argv;
  {
    int sock,s;
    BIO *sbio;
    SSL_CTX *ctx;
    SSL *ssl;
    int r;
    pid_t pid;
    extern char *optarg;
    int c;

    SSL_METHOD *metodo_codifica;

   WORD wVersionRequested;
   WSADATA wsaData;
   int err;

/*
    while((c=getopt(argc,argv,"cCxna:"))!=-1){
      switch(c){
        case 'c':
          client_auth=CLIENT_AUTH_REQUEST;
          break;
        case 'C':
          client_auth=CLIENT_AUTH_REQUIRE;
          break;
        case 'x':
          client_auth=CLIENT_AUTH_REHANDSHAKE;
          break;
        case 'n':
          fork_child=0;
          break;
        case 'a':
          if(!(ciphers=strdup(optarg)))
            err_exit("Out of memory");
          break;
      }
    }
  */
   //client_auth=CLIENT_AUTH_REQUIRE;
    /* Build our SSL context*/
    ctx=initialize_ctx(KEYFILE,PASSWORD);
    load_dh_params(ctx,DHFILE);

    switch(codifica)
    {
       case 0:
           metodo_codifica=SSLv2_method();
           break;
   
       case 1:
           metodo_codifica=SSLv3_method();
           break;
       case 2:
           metodo_codifica=TLSv1_method();
           break;
       default:
           printf("codifica errata\n");
           exit(0);
    }
    SSL_CTX_set_ssl_version(ctx, metodo_codifica);

    SSL_CTX_set_session_id_context(ctx,
      (void*)&s_server_session_id_context,
      sizeof s_server_session_id_context);
   
    /* Set our cipher list */
    if(ciphers){
      SSL_CTX_set_cipher_list(ctx,ciphers);
    }

    switch(client_auth){
      case CLIENT_AUTH_REQUEST:
        SSL_CTX_set_verify(ctx,SSL_VERIFY_PEER,0);
        break;
      case CLIENT_AUTH_REQUIRE:
        SSL_CTX_set_verify(ctx,SSL_VERIFY_PEER |
          SSL_VERIFY_FAIL_IF_NO_PEER_CERT,0);
        break;
      case CLIENT_AUTH_REHANDSHAKE:
        /* Do nothing */
        break;
    }

    wVersionRequested = MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
    /* Tell the user that we could not find a usable */
    /* WinSock DLL.                                  */
    return;
}
   
    sock=tcp_listen();

    while(1){
      if((s=accept(sock,0,0))<0)
        err_exit("Problem accepting");

  //    if(fork_child && (pid=fork())){
    //    closesocket(s);
    //  }
    //  else {
        sbio=BIO_new_socket(s,BIO_NOCLOSE);
        ssl=SSL_new(ctx);
        SSL_set_bio(ssl,sbio,sbio);

        if((r=SSL_accept(ssl)<=0))
          berr_exit("SSL accept error");
       
        http_serve(ssl,s);

      //  if(fork_child)
        //  exit(0);
      //}

     BIO_free(sbio);
    }
    closesocket(sock);
    destroy_ctx(ctx);
    WSACleanup();
    exit(0);
  }
_____________________server.c________________END

_____________________client.c_________________BEGIN

/* A simple HTTPS client

   It connects to the server, makes an HTTP
   request and waits for the response
*/
#include <windows.h>
#include <winsock2.h>
#include "common.h"
#include "client.h"

enum codif {SSL2=0,SSL3=1,TLS1=2};
static int codifica=TLS1;

static char *REQUEST_TEMPLATE=
   "GET / HTTP/1.0\r\nUser-Agent:"
   "EKRClient\r\nHost: %s:%d\r\n\r\n";

static char *host=HOST;
static int port=PORT;
static int require_server_auth=1;
static char *ciphers=0;
static int reconnect=0;

static int http_request(ssl)
  SSL *ssl;
  {
    char *request=0;
    char buf[BUFSIZZ];
    int r;
    int len, request_len;

    /* Now construct our HTTP request */
    request_len=strlen(REQUEST_TEMPLATE)+
      strlen(host)+6;
    if(!(request=(char *)malloc(request_len)))
      err_exit("Couldn't allocate request");
    snprintf(request,request_len,REQUEST_TEMPLATE,
      host,port);

    /* Find the exact request_len */
    request_len=strlen(request);

    r=SSL_write(ssl,request,request_len);
    switch(SSL_get_error(ssl,r)){
      case SSL_ERROR_NONE:
        if(request_len!=r)
          err_exit("Incomplete write!");
        break;
        default:
          berr_exit("SSL write problem");
    }

    /* Now read the server's response, assuming
       that it's terminated by a close */
    while(1){
      r=SSL_read(ssl,buf,BUFSIZZ);
      switch(SSL_get_error(ssl,r)){
        case SSL_ERROR_NONE:
          len=r;
          break;
        case SSL_ERROR_WANT_READ:
          continue;
        case SSL_ERROR_ZERO_RETURN:
          goto shutdown;
        case SSL_ERROR_SYSCALL:
          fprintf(stderr,
            "SSL Error: Premature close\n");
          goto done;
        default:
          berr_exit("SSL read problem");
      }

      fwrite(buf,1,len,stdout);
    }

  shutdown:
  //  r=SSL_shutdown(ssl);
   // switch(r){
    //  case 1:
     //   break; /* Success */
  //    case 0:
//      case -1:
   //   default:
   //     berr_exit("Shutdown failed");
    //}


  done:
  //  SSL_free(ssl);
    free(request);
    return(0);
  }
   
int main(argc,argv)
  int argc;
  char **argv;
  {
    SSL_CTX *ctx;
    SSL *ssl;
    BIO *sbio;
    int sock;
    extern char *optarg;
    int c;
    SSL_SESSION *sess;

    SSL_METHOD *metodo_codifica;

   WORD wVersionRequested;
   WSADATA wsaData;
   int err;
   int contatore=0;

   /*
    while((c=getopt(argc,argv,"h:p:ia:r"))!=-1){
      switch(c){
        case 'h':
          if(!(host=strdup(optarg)))
            err_exit("Out of memory");
          break;
        case 'p':
          if(!(port=atoi(optarg)))
            err_exit("Bogus port specified");
          break;
        case 'i':
          require_server_auth=0;
          break;
        case 'a':
          if(!(ciphers=strdup(optarg)))
            err_exit("Out of memory");
          break;
        case 'r':
          reconnect=1;
          break;
      }
    }
*/

    wVersionRequested = MAKEWORD( 2, 2 );

    err = WSAStartup( wVersionRequested, &wsaData );
    if ( err != 0 ) {
    /* Tell the user that we could not find a usable */
    /* WinSock DLL.                                  */
       return;
    }

    /* Build our SSL context*/
    ctx=initialize_ctx(KEYFILE,PASSWORD);
    switch(codifica)
    {
       case 0:
           metodo_codifica=SSLv2_method();
           break;

       case 1:
           metodo_codifica=SSLv3_method();
           break;
       case 2:
           metodo_codifica=TLSv1_method();
           break;
    }
    SSL_CTX_set_ssl_version(ctx, metodo_codifica);

    /* Set our cipher list */
    if(ciphers){
      SSL_CTX_set_cipher_list(ctx,ciphers);
    }
    /* Connect the TCP socket*/
    sock=tcp_connect(host,port);

    /* Connect the SSL socket */
    ssl=SSL_new(ctx);
    sbio=BIO_new_socket(sock,BIO_NOCLOSE);
    SSL_set_bio(ssl,sbio,sbio);

    if(SSL_connect(ssl)<=0)
      berr_exit("SSL connect error");
    if(require_server_auth)
      //check_cert(ssl,host);

    /* Now hang up and reconnect, if requested */
    if(reconnect) {
      sess=SSL_get1_session(ssl); /*Collect the session*/

      SSL_shutdown(ssl);
      SSL_free(ssl);
      closesocket(sock);

      sock=tcp_connect(host,port);
      ssl=SSL_new(ctx);
      sbio=BIO_new_socket(sock,BIO_NOCLOSE);
      SSL_set_bio(ssl,sbio,sbio);
      SSL_set_session(ssl,sess); /*And resume it*/
      if(SSL_connect(ssl)<=0)
        berr_exit("SSL connect error (second connect)");
       // check_cert(ssl,host);
    }

    /* Now make our HTTP request */
      sess=SSL_get1_session(ssl); /*Collect the session*/
      SSL_shutdown(ssl);
      SSL_free(ssl);
      closesocket(sock);

while (1)
{
      sock=tcp_connect(host,port);
      ssl=SSL_new(ctx);
      sbio=BIO_new_socket(sock,BIO_NOCLOSE);
      SSL_set_bio(ssl,sbio,sbio);
      SSL_set_session(ssl,sess); /*And resume it*/
      if(SSL_connect(ssl)<=0)
        berr_exit("SSL connect error (second connect)");
     // check_cert(ssl,host);

      http_request(ssl);
      sess=SSL_get1_session(ssl); /*Collect the session*/

      SSL_shutdown(ssl);
      SSL_free(ssl);
      closesocket(sock);
     
      printf("contatore: %d\n",contatore++);
}

    /* Shutdown the socket */
    destroy_ctx(ctx);
    WSACleanup();

    exit(0);
  }

_____________________wclient2.c_________________END

_____________________client.c___________________BEGIN
#include "common.h"

int tcp_connect(host,port)
  char *host;
  int port;
  {
    struct hostent *hp;
    struct sockaddr_in addr;
    int sock;

    if(!(hp=gethostbyname(host)))
      berr_exit("Couldn't resolve host");
    memset(&addr,0,sizeof(addr));
    addr.sin_addr=*(struct in_addr*)
      hp->h_addr_list[0];
    addr.sin_family=AF_INET;
    addr.sin_port=htons(port);

    if((sock=socket(AF_INET,SOCK_STREAM,
      IPPROTO_TCP))<0)
      err_exit("Couldn't create socket");
    if(connect(sock,(struct sockaddr *)&addr,
      sizeof(addr))<0)
      err_exit("Couldn't connect socket");

    return sock;
  }

/* Check that the common name matches the
   host name*/
void check_cert(ssl,host)
  SSL *ssl;
  char *host;
  {
    X509 *peer;
    char peer_CN[256];
   
    if(SSL_get_verify_result(ssl)!=X509_V_OK)
      berr_exit("Certificate doesn't verify");

    /*Check the cert chain. The chain length
      is automatically checked by OpenSSL when
      we set the verify depth in the ctx */

    /*Check the common name*/
    peer=SSL_get_peer_certificate(ssl);
    X509_NAME_get_text_by_NID
      (X509_get_subject_name(peer),
      NID_commonName, peer_CN, 256);
    if(strcasecmp(peer_CN,host))
    err_exit
      ("Common name doesn't match host name");
  }

_____________________client.c___________________END

 

_____________________client.h___________________BEGIN
#ifndef _client_h
#define _client_h

#define KEYFILE "client.pem"
#define PASSWORD "password"

int tcp_connect(char *host,int port);
void check_cert(SSL *ssl,char *host);

#endif

_____________________client.h___________________END


_____________________server.c__________________BEGIN
#include "common.h"
#include "server.h"

int tcp_listen()
  {
    int sock;
    struct sockaddr_in sin;
    int val=1;

    if((sock=socket(AF_INET,SOCK_STREAM,0))<0)
      err_exit("Couldn't make socket");

    memset(&sin,0,sizeof(sin));
    sin.sin_addr.s_addr=INADDR_ANY;
    sin.sin_family=AF_INET;
    sin.sin_port=htons(PORT);
    setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,
      (char*)&val,sizeof(val));

    if(bind(sock,(struct sockaddr *)&sin,
      sizeof(sin))<0)
      berr_exit("Couldn't bind");
    listen(sock,5);

    return(sock);
  }

void load_dh_params(ctx,file)
  SSL_CTX *ctx;
  char *file;
  {
    DH *ret=0;
    BIO *bio;

    if ((bio=BIO_new_file(file,"r")) == NULL)
      berr_exit("Couldn't open DH file");

    ret=PEM_read_bio_DHparams(bio,NULL,NULL,
      NULL);
    BIO_free(bio);
    if(SSL_CTX_set_tmp_dh(ctx,ret)<0)
      berr_exit("Couldn't set DH parameters");
  }

void generate_eph_rsa_key(ctx)
  SSL_CTX *ctx;
  {
    RSA *rsa;

    rsa=RSA_generate_key(512,RSA_F4,NULL,NULL);

    if (!SSL_CTX_set_tmp_rsa(ctx,rsa))
      berr_exit("Couldn't set RSA key");

    RSA_free(rsa);
  }


_____________________server.c__________________END

_____________________server.h__________________BEGIN
#ifndef _server_h
#define _server_h
 
#define KEYFILE "server.pem"
#define PASSWORD "password"
#define DHFILE "dh1024.pem"

int tcp_listen(void);
void load_dh_params(SSL_CTX *ctx,char *file);
void generate_eph_rsa_key(SSL_CTX *ctx);

#endif

_____________________server.h__________________END

_____________________common.c________________BEGIN
#include "common.h"
#include <openssl/err.h>


BIO *bio_err=0;
static char *pass;
static int password_cb(char *buf,int num,
  int rwflag,void *userdata);
//static void sigpipe_handle(int x);

/* A simple error and exit routine*/
int err_exit(string)
  char *string;
  {
    fprintf(stderr,"%s\n",string);
    exit(0);
  }

/* Print SSL errors and exit*/
int berr_exit(string)
  char *string;
  {
    BIO_printf(bio_err,"%s\n",string);
    ERR_print_errors(bio_err);
    exit(0);
  }

/*The password code is not thread safe*/
static int password_cb(char *buf,int num,
  int rwflag,void *userdata)
  {
    if(num<strlen(pass)+1)
      return(0);

    strcpy(buf,pass);
    return(strlen(pass));
  }

/*static void sigpipe_handle(int x){
}
*/
SSL_CTX *initialize_ctx(keyfile,password)
  char *keyfile;
  char *password;
  {
    SSL_METHOD *meth;
    SSL_CTX *ctx;
 
    if(!bio_err){
      /* Global system initialization*/
      SSL_library_init();
      SSL_load_error_strings();

      /* An error write context */
      bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
    }

    /* Set up a SIGPIPE handler */
//    signal(SIGPIPE,sigpipe_handle);

    /* Create our context*/
    meth=SSLv23_method();
    ctx=SSL_CTX_new(meth);

    /* Load our keys and certificates*/
    if(!(SSL_CTX_use_certificate_chain_file(ctx,
      keyfile)))
      berr_exit("Can't read certificate file");

    pass=password;
    SSL_CTX_set_default_passwd_cb(ctx,
      password_cb);
    if(!(SSL_CTX_use_PrivateKey_file(ctx,
      keyfile,SSL_FILETYPE_PEM)))
      berr_exit("Can't read key file");

    /* Load the CAs we trust*/
    if(!(SSL_CTX_load_verify_locations(ctx,
      CA_LIST,0)))
      berr_exit("Can't read CA list");
#if (OPENSSL_VERSION_NUMBER < 0x00905100L)
    SSL_CTX_set_verify_depth(ctx,1);
#endif

    return ctx;
  }
   
void destroy_ctx(ctx)
  SSL_CTX *ctx;
  {
    SSL_CTX_free(ctx);
  }

__________________________________common.c_______________END
 
__________________________________common.h_______________BEGIN

#ifndef _common_h
#define _common_h

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <windows.h>
#include <winsock2.h>
//#include <unistd.h>
#include <string.h>

#include <openssl/ssl.h>

#define CA_LIST "root.pem"
#define HOST "dev1"
#define RANDOM  "random.pem"
#define PORT 4433
#define BUFSIZZ 1024

extern BIO *bio_err;
int berr_exit (char *string);
int err_exit(char *string);

SSL_CTX *initialize_ctx(char *keyfile, char *password);
void destroy_ctx(SSL_CTX *ctx);

#ifndef ALLOW_OLD_VERSIONS
#if (OPENSSL_VERSION_NUMBER < 0x00905100L)
#error "Must use OpenSSL 0.9.6 or later"
#endif
#endif

#endif

__________________________________common.h_______________END

_________________________________dh1024.pem______________BEGIN
-----BEGIN DH PARAMETERS-----
MIGHAoGBANmAnfkETuKHOCWaE+W+F3kM/e7z5A8hZb7OqwGMQrUOaBEAr4BWeZBn
G/87hhwZgNP69/KUchm714qd/PpOspCaUJ20x6PcmKujpAgca/f19HGMBjRawQMk
R9oaBwazuQT0l0rTTKmvpMEcrQQIcVWii3CZI56I56oqF8biGPD7AgEC
-----END DH PARAMETERS-----
_________________________________dh1024.pem_______________END

_________________________________client.pem_________________BEGIN
Bag Attributes
    localKeyID: 01 00 00 00
    Microsoft CSP Name: Microsoft Enhanced Cryptographic Provider v1.0
    friendlyName:
468121034af0b74b137a0a85ead2f05d_95fb532d-d7f9-4922-9c84-7d3f30fa56bb
Key Attributes
    X509v3 Key Usage: 10
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,43ECEF9760C83CB8

WLaeQ4McbSzetcE4C1PizoZE8QJVceYBPVmr4WgGg29KeiBt/LjUFc9Dafv6W0t8
rCJEp8Wy7JsyuWqcWrJzvRiyyn72XK3CGZqNnSYuFj6UyJX2RPsT7icfoWLYtgxz
HxZBFOKI1o/eeWb1orkgb0N9U9Su0tLQqPIbXTJ1mxTS7sahBSN6F5zdfwc3Z+s0
ChZNsC71IRASHA8671PtEQ8fWngWeg3BGm34wphmSAQ8TpvSwwSYW3TN4CUpzloi
xBdQhMk3/th3QNTzkgl5jZpwTQBJOvWtHcLL6NVkmOZxQ79ZyzUck8W3wM8zV2go
k0/c8c01fy9+IhsF/d1W1lAt2/aBZLsGErylIHencpr53tbgGpKaZSJmGLIRp3vU
rHLK/RQkhCkq4LnR52JTefUOtjjBOv28Uc0P4ttkLMrWkD/oGV6Qba7Af1F39OcL
FbOZbtjFbsXWixuolTRj5zvXAlXGGldPGZVKERK20Nq4LFCrYMVtFa3UDeVJMS5g
zozX1l3s/UbbpVuap7lkEvPWhQpQzg1HEpPQ6H6jop8tiKKHcOketgk51Gdm8kwK
eDGnkkz7yHpWXgCeEfULRBxCSvznjgvNgTP/0bKb2xer/3LXJ20TPYtdjANCaLv9
srdgYmuFEAUz6OYoX4l8uchmIl3jrFnxnF6J2fX5A53xg6vuxXx38hA0SYceD494
6W0S4/17k6Iy6Vdx7l3CIIl3ympraKWcj391/Zd8AQXgsFgT4YEJXY9HKzotviSb
yivUyTO+BdqDY5obg9VJPjALX4XYGK3eNnhTcAG7gbWKS+ZJ77vr+Q==
-----END RSA PRIVATE KEY-----
Bag Attributes
    localKeyID: 01 00 00 00
subject=/C=IT/ST=Piemonte/L=Torino/O=Convey/OU=Developers/CN=dev1test2/emailAddress=[hidden email]
issuer=/DC=it/DC=convey/DC=w2003test/CN=W2003TEST
-----BEGIN CERTIFICATE-----
MIIF0jCCBLqgAwIBAgIKYVNS3gAAAAAAAzANBgkqhkiG9w0BAQUFADBbMRIwEAYK
CZImiZPyLGQBGRYCaXQxFjAUBgoJkiaJk/IsZAEZFgZjb252ZXkxGTAXBgoJkiaJ
k/IsZAEZFgl3MjAwM3Rlc3QxEjAQBgNVBAMTCVcyMDAzVEVTVDAeFw0wNTA1MDYx
MTM1MTBaFw0wNjA1MDYxMTQ1MTBaMIGKMQswCQYDVQQGEwJJVDERMA8GA1UECBMI
UGllbW9udGUxDzANBgNVBAcTBlRvcmlubzEPMA0GA1UEChMGQ29udmV5MRMwEQYD
VQQLEwpEZXZlbG9wZXJzMRIwEAYDVQQDEwlkZXYxdGVzdDIxHTAbBgkqhkiG9w0B
CQEWDmluZm9AY29udmV5Lml0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD5
5qvOI7MpeFrbq45CSP+7u9Fnw3DCfRF6FHhoXCj29Ttc+Kdjp9oW+Z83dByZTUES
Rx70tRmrB6ZiExM1kag7te+EpSacQ2ue5SFzZ38oki07l2SYZ9vIt29wK8JAzTzu
UFtOUTjsJNYv0Vgcj6+xrfPZHf5SVMFMZ1zTIk85UQIDAQABo4IC6jCCAuYwDgYD
VR0PAQH/BAQDAgTwMEQGCSqGSIb3DQEJDwQ3MDUwDgYIKoZIhvcNAwICAgCAMA4G
CCqGSIb3DQMEAgIAgDAHBgUrDgMCBzAKBggqhkiG9w0DBzAdBgNVHQ4EFgQUIlNh
Ih3guKpEDm1y8+IOekKKkAcwEwYDVR0lBAwwCgYIKwYBBQUHAwIwHwYDVR0jBBgw
FoAUlwvtf/8Gwu+MPf5TXrcFDNcOKyMwggEaBgNVHR8EggERMIIBDTCCAQmgggEF
oIIBAYaBvmxkYXA6Ly8vQ049VzIwMDNURVNULENOPXNhY3JpZmljZTIsQ049Q0RQ
LENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZp
Z3VyYXRpb24sREM9dzIwMDN0ZXN0LERDPWNvbnZleSxEQz1pdD9jZXJ0aWZpY2F0
ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9u
UG9pbnSGPmh0dHA6Ly9zYWNyaWZpY2UyLncyMDAzdGVzdC5jb252ZXkuaXQvQ2Vy
dEVucm9sbC9XMjAwM1RFU1QuY3JsMIIBGQYIKwYBBQUHAQEEggELMIIBBzCBswYI
KwYBBQUHMAKGgaZsZGFwOi8vL0NOPVcyMDAzVEVTVCxDTj1BSUEsQ049UHVibGlj
JTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixE
Qz13MjAwM3Rlc3QsREM9Y29udmV5LERDPWl0P2NBQ2VydGlmaWNhdGU/YmFzZT9v
YmplY3RDbGFzcz1jZXJ0aWZpY2F0aW9uQXV0aG9yaXR5ME8GCCsGAQUFBzABhkNo
dHRwOi8vc2FjcmlmaWNlMi53MjAwM3Rlc3QuY29udmV5Lml0L0NlcnRFbnJvbGwv
dzIwMDN0ZXN0X2NlcnQuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQCK52NeH0EiEYpB
fj3EtcMuVc5iQQuuKL5NyWVA4QMJPFU5fS/LU+npQWRAxJ4o/5NYg0O1NaL3bXZZ
c3tPOdLw/4hpOEQjCA4oBeHygQ6hgxo9Mb/3VuJ2QaWGvpfEUmP9xsT4IDAc3/0t
9dPHZ3mhOdK4RH2Al3mqm/MBDhT19wQ5E48OivG2++2IY4Wn4IlO8tjeUim2Mrgm
rE9LsqRx9oJzxmQ9PoBkai/1MLtFbl+wXgQF9ICa8kk4egeGauXB/hEmgdMF6TO5
/hSsm5ifCrF38eQ03HDycKGPCpIMIyXG1GkazjYggmOAKlT0DrI9tg3NPBDYGn/3
wa78zL6U
-----END CERTIFICATE-----


_________________________________client.pem_________________END

_________________________________server.pem_________________BEGIN
Bag Attributes
    localKeyID: 01 00 00 00
    Microsoft CSP Name: Microsoft Enhanced Cryptographic Provider v1.0
    friendlyName:
b6582b8a60f44335d128287625c835e0_95fb532d-d7f9-4922-9c84-7d3f30fa56bb
Key Attributes
    X509v3 Key Usage: 10
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,9EA7F68139C13C9A

r99lRKjTF4lNxADdOb8ajmF4bL5S5VzCXjRLA8O7kh3DnWkLNqTkdX/XD5yBBS5D
g9Oadk7ufO79ISWe+TSCNZVxj5VOKEPMflet+mxpkNb0oviuHo3YO8nmA3AaAcOk
QQ3h2r7kO5YBnRQjRyH+QZwPioCouqAQf5sqAYxStE+ixvIzKgzghwgJ3fOacaGk
2oe/yZ7NAsZTDlzOBObTNAnuIU0r40+kAS3vO7y5dwfdryG/LbHhdR/oFv5Vlbiz
cKkbiCaupxuASyGZv4u9Zne2ijgQRW8Q/ebhzJQt6ILgePM16IPlxrsrt+X6AzGl
eeWtFbu3yLOJnJiHlDiUxaV9bC4t+ncTcj0Yde+rknrTzaY9Dax0zBY+oRAD5SAq
+LcYJkg5gm3c+a7pxeg6xxPZHNh0DqAvx6fb9fpLSx7gvRNRMhM6CZeyQx/ruvzw
RS/msxQnOb6NxCqnbaJ8Mnftixa69NmYM3FecTOz+r/tiph/79R+i38yK0lrW0KU
oOqnzycRDsnWE+deaqo76SZmTjf+S3FX8XjSbTAsWENYdqzCAJ9Cp4mUJ5RX8cn4
L1XG5UCAV/9HKYapiqo75mgeIhPGkMSYYY+7H9P6Y/bxqsY37FuUNYV7t6Zmh4nJ
x2z1ecs1lzE2nBglSqNBKjLnTkGJDncoERrM4HN02mIpG0fvMTNefdWNDsmE2V8h
unpJcPcUvLohAabc4QIBFtUFHtCHpzmwX9iOnecd+axQx2wujS02FE2JzjtoZusd
V/CVI5LaiLwtmST/yZCrNCbEUvDikzvFAG5PQcSZ1IoSsJ3fa7dwTQ==
-----END RSA PRIVATE KEY-----
Bag Attributes
    localKeyID: 01 00 00 00
subject=/C=IT/ST=Piemonte/L=Torino/O=Convey/OU=Developers/CN=dev1testserver
issuer=/DC=it/DC=convey/DC=w2003test/CN=W2003TEST
-----BEGIN CERTIFICATE-----
MIIFtzCCBJ+gAwIBAgIKYWGoegAAAAAABTANBgkqhkiG9w0BAQUFADBbMRIwEAYK
CZImiZPyLGQBGRYCaXQxFjAUBgoJkiaJk/IsZAEZFgZjb252ZXkxGTAXBgoJkiaJ
k/IsZAEZFgl3MjAwM3Rlc3QxEjAQBgNVBAMTCVcyMDAzVEVTVDAeFw0wNTA1MDYx
MTUwNDlaFw0wNjA1MDYxMjAwNDlaMHAxCzAJBgNVBAYTAklUMREwDwYDVQQIEwhQ
aWVtb250ZTEPMA0GA1UEBxMGVG9yaW5vMQ8wDQYDVQQKEwZDb252ZXkxEzARBgNV
BAsTCkRldmVsb3BlcnMxFzAVBgNVBAMTDmRldjF0ZXN0c2VydmVyMIGfMA0GCSqG
SIb3DQEBAQUAA4GNADCBiQKBgQDEmA9osfBR7O01zsBhF7OrSCikij5Q0rNhIdCP
2/ZZWNNYu4YG/nQHQCHvQ9sZvs9UcHAx/mnuOIm45bu9Zn9v4JjtAJOZfldrtb4+
P8N02PSWmJYLGhzC20o6Gm8opcRbq2FYBqk6gm22gjV7bldbXuYGy1elEFL3OTAs
zmmUnwIDAQABo4IC6jCCAuYwDgYDVR0PAQH/BAQDAgTwMEQGCSqGSIb3DQEJDwQ3
MDUwDgYIKoZIhvcNAwICAgCAMA4GCCqGSIb3DQMEAgIAgDAHBgUrDgMCBzAKBggq
hkiG9w0DBzAdBgNVHQ4EFgQU3iSxV8QzxtmzQhhMmi7gkdcb9fYwEwYDVR0lBAww
CgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAUlwvtf/8Gwu+MPf5TXrcFDNcOKyMwggEa
BgNVHR8EggERMIIBDTCCAQmgggEFoIIBAYaBvmxkYXA6Ly8vQ049VzIwMDNURVNU
LENOPXNhY3JpZmljZTIsQ049Q0RQLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2Vz
LENOPVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9dzIwMDN0ZXN0LERDPWNv
bnZleSxEQz1pdD9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0
Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnSGPmh0dHA6Ly9zYWNyaWZpY2UyLncy
MDAzdGVzdC5jb252ZXkuaXQvQ2VydEVucm9sbC9XMjAwM1RFU1QuY3JsMIIBGQYI
KwYBBQUHAQEEggELMIIBBzCBswYIKwYBBQUHMAKGgaZsZGFwOi8vL0NOPVcyMDAz
VEVTVCxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2Vydmlj
ZXMsQ049Q29uZmlndXJhdGlvbixEQz13MjAwM3Rlc3QsREM9Y29udmV5LERDPWl0
P2NBQ2VydGlmaWNhdGU/YmFzZT9vYmplY3RDbGFzcz1jZXJ0aWZpY2F0aW9uQXV0
aG9yaXR5ME8GCCsGAQUFBzABhkNodHRwOi8vc2FjcmlmaWNlMi53MjAwM3Rlc3Qu
Y29udmV5Lml0L0NlcnRFbnJvbGwvdzIwMDN0ZXN0X2NlcnQuY3J0MA0GCSqGSIb3
DQEBBQUAA4IBAQBMMqvvg/jtYZoG3CSTwD5yEWEREW+5YrkZGvffClYz/TB4/s7r
auqF5jOzDq+ZuMGFlzbO2oSMOO+gqjnPSAi5r4C8YxBUg1z5P1kW872V+ZIFkCo/
xc6tue2ID9CLh1/7qm61IjYEhx2BanxEfAxNXeNIU2LDSTde6tybRYrZHtTB9HlM
xcutOnzytrs+RFeaTpYfhhtiQYgAgRzf+gSeEiXfmB8DPuhIxGG9at+WOtgaoCHe
4F86S9ti0E5uHYzXsmNmnr/8T7RAmjOrnGdcSvf+OPbXxdAIWcLBeBoHId9XLInL
bC093xalH/R9VjVeon7C8eVs61sWIsvMoRZ8
-----END CERTIFICATE-----

_________________________________server.pem_________________END

_________________________________root.pem___________________BEGIN
-----BEGIN CERTIFICATE-----
MIIEszCCA5ugAwIBAgIQbkwZlUSqapZO5Xjz8O3mRzANBgkqhkiG9w0BAQUFADBb
MRIwEAYKCZImiZPyLGQBGRYCaXQxFjAUBgoJkiaJk/IsZAEZFgZjb252ZXkxGTAX
BgoJkiaJk/IsZAEZFgl3MjAwM3Rlc3QxEjAQBgNVBAMTCVcyMDAzVEVTVDAeFw0w
NTA1MDYwODEwMDRaFw0xMDA1MDYwODE3MDRaMFsxEjAQBgoJkiaJk/IsZAEZFgJp
dDEWMBQGCgmSJomT8ixkARkWBmNvbnZleTEZMBcGCgmSJomT8ixkARkWCXcyMDAz
dGVzdDESMBAGA1UEAxMJVzIwMDNURVNUMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAxmr5C56tPx8DDZZJVeOLO94gkAMib9YnkKe8qomY3RVhooiRkJ8X
mBbW7L59DSDtpQ2yjBeku+diUQEaZJPKl2qUpUP8XhnusTBhk/vFvSBmG4n5j7Nv
ESAUrwySg7HPjQKPjdjK5uqnSgpR3Et8eaEB7euizRyi95pkQ68cFbOVeqjWpR0s
7VhOOZPhn+chX/io4KHta2qnjskZYHC6FURdS7DsqSkJGxOJmIbada374nts6Ocn
JKojHOWcFy+FHbgUh87/+6PaMLkpqpd4bUODQgoUNlSToXSfG5iT18OgV+gQGOp6
0qMq/2K1/Mp3CBr9c31Rmcusd55TvotqzQIDAQABo4IBcTCCAW0wCwYDVR0PBAQD
AgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJcL7X//BsLvjD3+U163BQzX
DisjMIIBGgYDVR0fBIIBETCCAQ0wggEJoIIBBaCCAQGGgb5sZGFwOi8vL0NOPVcy
MDAzVEVTVCxDTj1zYWNyaWZpY2UyLENOPUNEUCxDTj1QdWJsaWMlMjBLZXklMjBT
ZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERDPXcyMDAzdGVz
dCxEQz1jb252ZXksREM9aXQ/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdD9iYXNl
P29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50hj5odHRwOi8vc2Fjcmlm
aWNlMi53MjAwM3Rlc3QuY29udmV5Lml0L0NlcnRFbnJvbGwvVzIwMDNURVNULmNy
bDAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0BAQUFAAOCAQEAAWpX/BOTR4Aa
6+Q2O8FQw9hZ3SIG9APz2qEIRQubHNh2fwviNpmhCRCwimGY3l80E7tdPWoc5on2
oODdAxC6HUXOfI8XXkH0mvo0S8tiRVPYuyfEi8JfmCS69vwvsIllR7mtZM5fqY25
VZETWdaeSlGxmS79A3k6NskWIHgJqDk9f8AywVRAAd8B4g+hyAESuWdQR8Ygw9yx
HEwy8r5KCnHyCqVVK94CZQ/GaWIuGnNyXqET0cwTSyppoRg53nXe5/rRxV8g885I
25buSpKg4v33Mqjzq/hGZ0ctnYAbFanFVPjmaDGcjlhcBvZTn5/tfVX2a70V6AQH
j4HL517ntw==
-----END CERTIFICATE-----

_________________________________root.pem____________________END

_________________________________wclient2.dev_________________BEGIN
[Project]

FileName=wclient2.dev

Name=wclient2

UnitCount=5

Type=1

Ver=1

ObjFiles=

Includes=

Libs=

PrivateResource=

ResourceIncludes=

MakeIncludes=

Compiler=-O3_@@_

CppCompiler=

Linker=libssl.a_@@_libcrypto.a_@@_C:/Dev-Cpp/lib/libgdi32.a_@@_C:/Dev-Cpp/lib/libws2_32.a_@@_

IsCpp=0

Icon=

ExeOutput=

ObjectOutput=

OverrideOutput=0

OverrideOutputName=wclient.exe

HostApplication=

Folders=

CommandLine=

IncludeVersionInfo=0

SupportXPThemes=0

CompilerSet=0

CompilerSettings=000000000000000000

[Unit3]

FileName=client.c

CompileCpp=0

Folder=wserver

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit4]

FileName=client.h

CompileCpp=0

Folder=wserver

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[VersionInfo]

Major=0

Minor=1

Release=1

Build=1

LanguageID=1033

CharsetID=1252

CompanyName=

FileVersion=

FileDescription=Developed using the Dev-C++ IDE

InternalName=

LegalCopyright=

LegalTrademarks=

OriginalFilename=

ProductName=

ProductVersion=

AutoIncBuildNr=0

[Unit1]

FileName=common.h

CompileCpp=0

Folder=wserver

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit2]

FileName=common.c

CompileCpp=0

Folder=wserver

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit5]

FileName=wclient2.c

CompileCpp=0

Folder=wclient2

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=



_________________________________wclient2.dev_________________END

_________________________________wserver2.dev__________________BEGIN
[Project]

FileName=wserver2.dev

Name=wserver2

UnitCount=5

Type=1

Ver=1

ObjFiles=

Includes=

Libs=

PrivateResource=

ResourceIncludes=

MakeIncludes=

Compiler=-O3_@@_

CppCompiler=

Linker=libssl.a_@@_libcrypto.a_@@_C:/Dev-Cpp/lib/libgdi32.a_@@_C:/Dev-Cpp/lib/libws2_32.a_@@_

IsCpp=0

Icon=

ExeOutput=

ObjectOutput=

OverrideOutput=0

OverrideOutputName=wserver.exe

HostApplication=

Folders=

CommandLine=

IncludeVersionInfo=0

SupportXPThemes=0

CompilerSet=0

CompilerSettings=000000000000000000

[Unit2]

FileName=server.c

CompileCpp=0

Folder=wserver

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit3]

FileName=server.h

CompileCpp=0

Folder=wserver

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit4]

FileName=common.c

CompileCpp=0

Folder=wserver

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[VersionInfo]

Major=0

Minor=1

Release=1

Build=1

LanguageID=1033

CharsetID=1252

CompanyName=

FileVersion=

FileDescription=Developed using the Dev-C++ IDE

InternalName=

LegalCopyright=

LegalTrademarks=

OriginalFilename=

ProductName=

ProductVersion=

AutoIncBuildNr=0

[Unit1]

FileName=common.h

CompileCpp=0

Folder=wserver

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=

[Unit5]

FileName=wserver2.c

CompileCpp=0

Folder=wserver2

Compile=1

Link=1

Priority=1000

OverrideBuildCmd=0

BuildCmd=



_________________________________wserver2.dev_________________END





-------------------------------------------------------------------------



____________________________________________________________
Navighi a 4 MEGA e i primi 3 mesi sono GRATIS.
Scegli Libero Adsl Flat senza limiti su http://www.libero.it


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [hidden email]
Automated List Manager                           [hidden email]
Loading...