私が望むものは単純です - 私はopenSSL APIが大好きです。私はそれを学ぶためにいくつかsimple code to begin withを見つけました。私はサーバーの作成には全く新しいものです。私は不思議です - どのようにOpenSSLをhttpsではなく単純なhttpで動作させるのですか?私は同じサービスを提供したいと思っていますが、必要なときにはhttpsにジャンプすることができますが、そのHTTPの保護はありません。OpenSSLでhttpsの代わりにhttpを使用するにはどうすればいいですか?
私はそれは私が、私は保護されていないHTTPサービスの作成のために同じことを行うことがしたいだけ
SSLServer server("cert", "pkey", 1420);
// Set the thread function.
server.SetPthread_F(conn_thread);
を言ってすりおろであることを意味します。
OpenSSLライブラリの唯一のノン・ブロッキングTCPサーバーの一部を使用/維持する方法:私は、メインの質問に編集しなければなら理解いくつかの火格子の答えの後
?主な目標は、HTTPとHTTP costumizedを実装するためにイージーになるの上に使用するTCPサーバーで小型でシンプルなクロスプラットフォームとなり、我々は一例に見ればそう
を類似体:
変更されなければならない何#include <openssl/ssl.h>
#include <openssl/err.h>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include "sslserver.h"
#define REPLY "<html><body>Metalshell.com OpenSSL Server</body></html>"
#define MAX_PACKET_SIZE 1024
// Called when a new connection is made.
void *conn_thread(void *ssl) {
int fd = SSL_get_fd((SSL *)ssl);
if(SSL_accept((SSL *)ssl) == -1) {
ERR_print_errors_fp(stderr);
} else {
char cipdesc[128];
SSL_CIPHER *sslciph = SSL_get_current_cipher((SSL *)ssl);
cout << "Encryption Description:\n";
cout << SSL_CIPHER_description(sslciph, cipdesc, sizeof(cipdesc)) << endl;
char buff[MAX_PACKET_SIZE];
// Wait for data to be sent.
int bytes = SSL_read((SSL *)ssl, buff, sizeof(buff));
buff[bytes] = '\0';
// Show the browser request.
cout << "Recieved: \n" << buff << endl;
// Send the html reply.
SSL_write((SSL *)ssl, REPLY, strlen(REPLY));
}
// Tell the client we are closing the connection.
SSL_shutdown((SSL *)ssl);
// We do not wait for a reply, just clear everything.
SSL_free((SSL *)ssl);
close(fd);
cout << "Connection Closed\n";
cout << "---------------------------------------------\n";
pthread_exit(NULL);
}
int main() {
SSLServer server("cert", "pkey", 1420);
// Set the thread function.
server.SetPthread_F(conn_thread);
while(1) {
/* Wait for 10 seconds, and if no one trys
* to connect return back. This allows us to do
* other things while waiting.
*/
server.CheckClients(10);
}
return 0;
}
私たちのサーバーには、すべての接続を受け入れるだけでなく、sslもの(可能な場合は完全な要求)を返信して返信しますか?
これはServerFaultの質問のようです。 – robert