libwebsocketsでwss通信を受け付けたい(SSL証明証指定周り)

実現したいこと

お世話になります。
libwebsocketsを使用しているwebsocketサーバがあります。
本websocketサーバはwsでのリクエスト受付に成功しています。
このプログラムにSSL証明証の類を指定してwssでのリクエストを受け付けれるようにしたいです。

前提

同一サーバ機内でapacheにSSL証明証の類のファイルを読み込ませています。
・公開鍵証明書
SSLCertificateFile ****.crt
・中間証明書
SSLCertificateChainFile ****..crt
・秘密鍵
SSLCertificateKeyFile ****..key

下記対応でwss通信を受信できるとの認識で合っていますでしょうか。
・上記のSSL証明証の類をwebsocketサーバに読み込ませる
・秘密鍵のパスワードをwebsocketサーバに認識させる
・websocketサーバにのポート番号を443に指定
現状中間証明書のwebsocketサーバへの読み込ませ方が分かっていない状態です。(もちろんwss通信は受信できていません)

該当のソースコード

下記のソースコードはws受信成功時のソースコードから、
コメントを書いている部分の変更をしています。

C

1#include <libwebsockets.h>2#include <string.h>3#include <stdio.h>4 5//#define EXAMPLE_PORT 507656#define EXAMPLE_PORT 443 // ポート番号を443に変更7#define MAX_CLIENTS 1008 9struct ClientData10{11 char walletAddr[50];12};13 14int LoginFlagChange(int loginFlag, char *walletAddr);15int SelectRegist(char *walletAddr, char *query_result);16int InsertRegist(char *uerName, char *walletAddr, char *avatarColor);17int UpdateAvatarPoint(char *pointX,char *pointY, char *pointZ, char *derection, char *walletAddr);18int SelectAvatarPoint(char *query_result, char *walletAddr);19 20static struct ClientData globalClientData[MAX_CLIENTS];21 22static int callback_echo(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)23{24[省略]25 26 return 0;27}28 29static struct lws_protocols protocols[] = {30 {31 "echo-protocol",32 callback_echo,33 sizeof(struct ClientData),34 256,35 0,36 NULL,37 sizeof(struct ClientData)38 },39 {NULL, NULL, 0, 0, 0, NULL, 0}40};41 42int main()43{44 struct lws_context_creation_info info;45 struct lws_context *context;46 struct lws_vhost *vhost;47 struct lws *wsi;48 int n = 0;49 int ret = 0;50 51 memset(&info, 0, sizeof(info));52 info.port = EXAMPLE_PORT;53 info.protocols = protocols;54 info.ssl_cert_filepath = "****"; // SSL証明書のパス追加55 info.ssl_private_key_filepath = "****"; // 秘密鍵のパス追加56 info.ssl_private_key_password = "****"; // 秘密鍵パスワード追加57 58 context = lws_create_context(&info);59 if(context == NULL)60 {61 printf("Could not create libwebsocket context\n");62 return 1;63 }64 65 memset(globalClientData, 0, sizeof(globalClientData));66 67 printf("Starting server...\n");68 while(n >= 0 && ret >= 0)69 {70 ret = lws_service(context, 0);71 }72 73 lws_context_destroy(context);74 75 return 0;76}

補足情報(FW/ツールのバージョンなど)

その他必要な情報があればお声がけください。
よろしくお願いいたします。

コメントを投稿

0 コメント