我想在我的客户端和服务器之间创建一个安全的连接(SSL / TLS)。 只有特定客户端才有权连接到服务器。 因此,我在服务器上创建了一个客户端证书(openssl)来提供相互授权。在服务器端,我已经使用require(ws)(Node.js)使用创建的服务器证书设置了我的WebSocketServer。 在客户端,我不知道标准WebSocket API如何为我提供附加客户端证书的方法。 谁能告诉我如何创建一个客户端WebSocket将证书传递给服务器?
我正在使用Javascript在Cordova中开发。
基本的客户端API似乎仅限于此: https://www.w3.org/TR/websockets/
接口:
interface WebSocket extends EventTarget {
binaryType: string;
readonly bufferedAmount: number;
readonly extensions: string;
onclose: (this: WebSocket, ev: CloseEvent) => any;
onerror: (this: WebSocket, ev: Event) => any;
onmessage: (this: WebSocket, ev: MessageEvent) => any;
onopen: (this: WebSocket, ev: Event) => any;
readonly protocol: string;
readonly readyState: number;
readonly url: string;
close(code?: number, reason?: string): void;
send(data: any): void;
readonly CLOSED: number;
readonly CLOSING: number;
readonly CONNECTING: number;
readonly OPEN: number;
addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, useCapture?: boolean): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;}
类别:
declare var WebSocket: {
prototype: WebSocket;
new(url: string, protocols?: string | string[]): WebSocket;
readonly CLOSED: number;
readonly CLOSING: number;
readonly CONNECTING: number;
readonly OPEN: number;}
提前致谢。
答案 0 :(得分:0)
我现在正在关闭这个问题。
我的问题的可能解决方案我终于找到了这个插件: https://github.com/flynetworks/cordova-websocket-clientcert 使用pkcs12存档。
我对此解决方案不满意,并将客户端身份验证从TLS客户端证书更改为简单的HTTP身份验证。
请在此处查看使用WebSockets进行身份验证的可能性:https://tools.ietf.org/html/rfc6455#section-10.5