Reputation: 407
I want to use SSL in my cross platform program. I decided to use OpenSSL.
I have OpenSSL installed, and at this point I am looking through the code and documentation trying to figure out how to use the library.
Do you have any resources or simple programs or tutorials that will walk me through integrating OpenSSL with my program?
Upvotes: 2
Views: 3234
Reputation: 11
from the "very rough guide" you mentioned, i managed to reach till successful SSL handshake, between mozilla web browser and my server(coded in c).But after SSL_accept, when am trying to use SSL_read to get the browser header details, am getting junk values and the bytes read are shown to be zero. below is the code, the SSL_accept call is successful but SSL_read is not..
if(SSL_set_fd(ssl, client_s)<0)
printf("\n error in assigning socket to SSL:");
else
printf("\n The socket has been assigned to SSL Structure");
/* Perform SSL Handshake on the SSL server */
err = SSL_accept(ssl);
printf("\n Value of err is %d",err);
RETURN_ERR(err,"SSL_accept");
if(err==1)
printf("\n The ssl connection/Handshake has been successful");
else
printf("\n The ssl connection was not successful");
/* Informational output (optional) */
printf("\n SSL connection using %s\n", SSL_get_cipher (ssl));
/*receive the data from the client*/
//err = SSL_accept(ssl);
while(i<5)
{
err = SSL_read(ssl, in_buf, strlen(in_buf));
printf("\n value of err is %d",err);
RETURN_ERR(err,"SSL_read");
printf("\n The details from the server is\n: %s,\n Bytes Read : %d",in_buf,err);
if(err<0)
printf("\n Not Successfully received clients information");
i++;
}
err = SSL_shutdown(ssl);
/* Terminate communication on a socket */
err = close(server_s);
/* Free the SSL structure */
SSL_free(ssl);
/* Free the SSL_CTX structure */
SSL_CTX_free(ctx);
return(0);
}
Upvotes: 0
Reputation: 85
You can find some useful OpenSSL commands on this page:
http://www.networking4all.com/en/support/ssl+certificates/manuals/openssl/openssl+commands/
Upvotes: 2
Reputation: 239011
The very rough guide is:
SSL_CTX
with SSL_CTX_new()
;SSL_CTX_use_certificate_file()
;SSL_CTX_use_PrivateKey_file()
;SSL
with SSL_new()
;SSL
to that of your network connection with SSL_set_fd()
;SSL_connect()
;SSL_accept()
.Thereafter use SSL_read()
and SSL_write()
to read and write from the connection, and finish with SSL_shutdown()
. The SSL_CTX
can be re-used to create SSL
objects for many simultaneous sessions.
Upvotes: 7