ওপেনএসএসএল ব্যবহার করার সময় কয়েকটি পদক্ষেপ রয়েছে। আপনার অবশ্যই একটি এসএসএল শংসাপত্র তৈরি করতে হবে যাতে প্রাইভেট কী সহ শংসাপত্র থাকতে পারে শংসাপত্রের সঠিক অবস্থান নির্দিষ্ট করে দেওয়ার বিষয়ে নিশ্চিত হন (এই উদাহরণটি মূলটিতে এটি রয়েছে)। অনেক ভাল টিউটোরিয়াল আছে।
কিছু অন্তর্ভুক্ত:
#include <openssl/applink.c>
#include <openssl/bio.h>
#include <openssl/ssl.h>
#include <openssl/err.h>
আপনাকে ওপেনএসএসএল শুরু করতে হবে:
void InitializeSSL()
{
SSL_load_error_strings();
SSL_library_init();
OpenSSL_add_all_algorithms();
}
void DestroySSL()
{
ERR_free_strings();
EVP_cleanup();
}
void ShutdownSSL()
{
SSL_shutdown(cSSL);
SSL_free(cSSL);
}
এখন বেশিরভাগ কার্যকারিতার জন্য। আপনি সংযোগগুলিতে কিছুক্ষণ লুপ যুক্ত করতে চাইতে পারেন।
int sockfd, newsockfd;
SSL_CTX *sslctx;
SSL *cSSL;
InitializeSSL();
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd< 0)
{
//Log and Error
return;
}
struct sockaddr_in saiServerAddress;
bzero((char *) &saiServerAddress, sizeof(saiServerAddress));
saiServerAddress.sin_family = AF_INET;
saiServerAddress.sin_addr.s_addr = serv_addr;
saiServerAddress.sin_port = htons(aPortNumber);
bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
listen(sockfd,5);
newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
sslctx = SSL_CTX_new( SSLv23_server_method());
SSL_CTX_set_options(sslctx, SSL_OP_SINGLE_DH_USE);
int use_cert = SSL_CTX_use_certificate_file(sslctx, "/serverCertificate.pem" , SSL_FILETYPE_PEM);
int use_prv = SSL_CTX_use_PrivateKey_file(sslctx, "/serverCertificate.pem", SSL_FILETYPE_PEM);
cSSL = SSL_new(sslctx);
SSL_set_fd(cSSL, newsockfd );
//Here is the SSL Accept portion. Now all reads and writes must use SSL
ssl_err = SSL_accept(cSSL);
if(ssl_err <= 0)
{
//Error occurred, log and close down ssl
ShutdownSSL();
}
তারপরে আপনি ব্যবহার করে পড়তে বা লিখতে সক্ষম হবেন:
SSL_read(cSSL, (char *)charBuffer, nBytesToRead);
SSL_write(cSSL, "Hi :3\n", 6);
আপডেট
দ্য SSL_CTX_new
TLS এর পদ্ধতি যে শ্রেষ্ঠ তড়কা অনুক্রমে আপনার চাহিদা পরিবর্তে নিরাপত্তার নতুন সংস্করণে সমর্থন করার জন্য, সঙ্গে বলা উচিত SSLv23_server_method()
। দেখুন:
ওপেনএসএসএল এসএসএল_সিটিএক্স_ নতুন বিবরণ
টিএলএস_মোথড (), টিএলএস_সার্ভার_মোথড (), টিএলএস_ক্লিয়েন্ট_মোথড ()।
এগুলি হ'ল সাধারণ উদ্দেশ্যে সংস্করণ-নমনীয় এসএসএল / টিএলএস পদ্ধতি। ব্যবহৃত প্রকৃত প্রোটোকল সংস্করণ ক্লায়েন্ট এবং সার্ভার দ্বারা পারস্পরিক সমর্থনযুক্ত সর্বোচ্চ সংস্করণে আলোচনা করা হবে। সমর্থিত প্রোটোকলগুলি SSLv3, TLSv1, TLSv1.1, TLSv1.2 এবং TLSv1.3।