Hi everybody,

I've been get some problems with WebService Client on HTTPS.
I have 1 certificate and 2 intermediate CA´s to access this server.

Testing my Browser, if i remove any one of the intemediate CA's, i get this:
"HTTP Error 403.7 - Forbidden: SSL client certificate is required."

I Have the same error in my application. I've been tried include the
Intermediate CA's using many ways, but without successful.


....
....
Bool tSSLSocketAPI::SetCertificateFiles(mspchar ACertFile, mspchar AKeyFile)
{
  if (ACertFile!= NULL)
  {
       // INTERMEDIATE CA DONT HAVE KEY
       if (AKeyFile == NULL) {
        FILE *fp;
        X509 *cert;

        if (!(fp = fopen(ACertFile, "r"))) {
            msprintf( "OPS1unable to open certificate" );
            return false;
        }

        cert = PEM_read_X509(fp, NULL, NULL, NULL);
        if (cert==NULL){
            msprintf( "OPS2unable to read certificate" );
            return false;
        }
        fclose (fp);

        if (SSL_CTX_add_client_CA(sslCtx, cert) < 1 )
            return false;

        return true;
    }

      if( chkSSL( SSL_CTX_use_certificate_file(sslCtx, ACertFile,
SSL_FILETYPE_PEM), ssl, sslErr ) <= 0)
      {
          msprintf( "unable to get certificate from '%s'\n", ACertFile);
          ERR_print_errors(sslErr);
          return false;
      }

      if (nOptions.PassPhrase)
          SSL_CTX_set_default_passwd_cb_userdata(sslCtx, nOptions.PassPhrase
);

    if (SSL_CTX_use_PrivateKey_file(sslCtx, AKeyFile, SSL_FILETYPE_PEM) <=
0)
    {
        msprintf("unable to get private key from '%s'\n",AKeyFile);
        ERR_print_errors(sslErr);
        return false;
    }

    if (!SSL_CTX_check_private_key(sslCtx))
    {
      msprintf( "Private key does not match the certificate public key\n");
        return false;
    }

    if (nOptions.PassPhrase)
      SSL_CTX_set_default_passwd_cb_userdata(sslCtx, NULL);
  }
  return true;
}

.....
.....

I've been tried this functions :

  SSL_CTX_add_client_CA(...)
  SSL_CTX_add_extra_chain_cert(...)
  SSL_CTX_load_verify_locations(...)


how add intermediate CA's using openssl ??


Thanks in Advanced.

Ricardo G. Reis

Reply via email to