実現したいこと
お世話になります。
libwebsocketsを使用しているwebsocketサーバがあります。
本websocketサーバはwsでのリクエスト受付に成功しています。
このプログラムにSSL証明証の類を指定してwssでのリクエストを受け付けれるようにしたいです。
前提
同一サーバ機内でapacheにSSL証明証の類のファイルを読み込ませています。
・公開鍵証明書
SSLCertificateFile ****.crt
・中間証明書
SSLCertificateChainFile ****..crt
・秘密鍵
SSLCertificateKeyFile ****..key
下記対応でwss通信を受信できるとの認識で合っていますでしょうか。
・上記のSSL証明証の類をwebsocketサーバに読み込ませる
・秘密鍵のパスワードをwebsocketサーバに認識させる
・websocketサーバにのポート番号を443に指定
現状中間証明書のwebsocketサーバへの読み込ませ方が分かっていない状態です。(もちろんwss通信は受信できていません)
調査したこと・試したこと
ウェブソケットサーバのws受信成功時のソースコードへ下記を変更、追加しました。
・ポート番号を443に変更
・SSL証明書のパス指定のコードを追加
・秘密鍵のパス指定のコードを追加
・秘密鍵パスワード指定のコードを追加
※下記の該当ソースコードのコメントを書いている部分の変更をしています。
クライアントからwssのリクエストをしましたが正常に通信できません。
js
1new WebSocket("wss://***.***.***.***:443");
該当のエラー
WebSocket connection to 'wss://***.***.***.***/' failed: (anonymous) @ VM56:1
該当のソースコード
C
1#include <libwebsockets.h> 2#include <string.h> 3#include <stdio.h> 4 5//#define EXAMPLE_PORT 50765 6#define EXAMPLE_PORT 443 // ポート番号を443に変更 7#define MAX_CLIENTS 100 8 9struct ClientData 10{ 11 char walletAddr[50]; 12}; 13 14static struct ClientData globalClientData[MAX_CLIENTS]; 15 16static int callback_echo(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len) 17{ 18[省略] 19 20 return 0; 21} 22 23static struct lws_protocols protocols[] = { 24 { 25 "echo-protocol", 26 callback_echo, 27 sizeof(struct ClientData), 28 256, 29 0, 30 NULL, 31 sizeof(struct ClientData) 32 }, 33 {NULL, NULL, 0, 0, 0, NULL, 0} 34}; 35 36int main() 37{ 38 struct lws_context_creation_info info; 39 struct lws_context *context; 40 struct lws_vhost *vhost; 41 struct lws *wsi; 42 int n = 0; 43 int ret = 0; 44 45 memset(&info, 0, sizeof(info)); 46 info.port = EXAMPLE_PORT; 47 info.protocols = protocols; 48 info.ssl_cert_filepath = "****"; // SSL証明書のパス追加 49 info.ssl_private_key_filepath = "****"; // 秘密鍵のパス追加 50 info.ssl_private_key_password = "****"; // 秘密鍵パスワード追加 51 52 context = lws_create_context(&info); 53 if(context == NULL) 54 { 55 printf("Could not create libwebsocket context\n"); 56 return 1; 57 } 58 59 memset(globalClientData, 0, sizeof(globalClientData)); 60 61 printf("Starting server...\n"); 62 while(n >= 0 && ret >= 0) 63 { 64 ret = lws_service(context, 0); 65 } 66 67 lws_context_destroy(context); 68 69 return 0; 70}
補足情報(FW/ツールのバージョンなど)
その他必要な情報があればお声がけください。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー