Hi,
I have a small program silimar to FTP running on Solaris 2.6 and Windows NT.
IT was working fine
until I replaced my 40-bit Verisign certificate with 128-bit global secure
ID. I got the following error
message:
[Server]
SSL_accept failed: error:14094412:SSL routines:SSL3_READ_BYTES:sslv3 alert
bad certificate Error No: 0
[Client]
SSL_connect failed: error:14090086:SSL
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed Error No: -1
I attached the program as follows and I am using SSLEAY 0.9.0b:
SSL_load_error_strings();
SSLeay_add_ssl_algorithms();
#ifdef CLIENT
ssl_method = SSLv3_client_method();
#elif SERVER
ssl_method = SSLv3_server_method();
#endif
if (ssl_method == NULL) {
lprintf(stderr, "Failed to set SSL Protocol Method: %s\n",
ERR_error_string(ERR_get_error(), NULL));
return (1);
}
ctx = SSL_CTX_new(ssl_method);
if (ctx == NULL) {
lprintf(stderr, "Failed to create SSL context: %s\n",
ERR_error_string(ERR_get_error(), NULL));
return (1);
}
SSL_CTX_set_quiet_shutdown(ctx, 1);
SSL_CTX_set_options(ctx, SSL_OP_ALL);
if (ciphers) {
SSL_CTX_set_cipher_list(ctx, ciphers);
if (SSL_CTX_load_verify_locations(ctx, CAfile, CApath) != 1) {
lprintf(stderr, "Failed to load CA files: %s\n",
ERR_error_string(ERR_get_error(), NULL));
SSL_CTX_free(ctx);
return 1;
}
if (SSL_CTX_set_default_verify_paths(ctx) != 1) {
lprintf(stderr, "Failed to set verify paths: %s\n",
ERR_error_string(ERR_get_error(), NULL));
SSL_CTX_free(ctx);
return 1;
}
SSL_CTX_set_verify(ctx, SSL_VERIFY_CLIENT_ONCE |
SSL_VERIFY_PEER |
SSL_VERIFY_FAIL_IF_NO_PEER_CERT,
NULL);
if (keyPass==NULL)
SSL_CTX_set_default_passwd_cb(ctx, keyCallbackFile);
else
SSL_CTX_set_default_passwd_cb(ctx, keyCallback);
if (set_cert_stuff(ctx, certFile, keyFile)) {
lprintf(stderr, "Failed to setup own Cert/Key\n");
SSL_CTX_free(ctx);
return (1);
}
if (keyPass==NULL) {
if (changePassword()) {
lprintf(stderr,"Failed to change password\n");
return 1;
}
}
.................
ssl = SSL_new(ctx);
if (ssl == NULL) {
lprintf(stderr, "Failed to create SSL handle: %s\n",
ERR_error_string(ERR_get_error(), NULL));
SSL_CTX_free(ctx);
return (1);
}
SSL_set_fd(ssl, sd);
#ifdef CLIENT
err = SSL_connect(ssl);
if (err <= 0) {
lprintf(stderr, "SSL_connect failed: %s Error No: %d\n",
ERR_error_string(ERR_get_error(), NULL), err);
SSL_shutdown(ssl);
SSL_free(ssl);
shutdown(sd, 2);
return (1);
}
#elif SERVER
err = SSL_accept(ssl);
if (err <= 0) {
lprintf(stderr, "SSL_accept failed: %s Error No: %d \n",
ERR_error_string(ERR_get_error(), NULL), err);
SSL_shutdown(ssl);
SSL_free(ssl);
return (1);
}
#endif
....................
Anybody here knows the reason, kindly let me know. Thanks in advance!
Zhong Gang
_____________________________________________________________________________________
Get more from the Web. FREE MSN Explorer download : http://explorer.msn.com
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]