带有客户端证书的Cordova WebSocket(Javascript)

时间:2018-04-14 15:24:33

标签: javascript cordova ssl websocket wss

我想在我的客户端和服务器之间创建一个安全的连接(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;}

提前致谢。

1 个答案:

答案 0 :(得分:0)

我现在正在关闭这个问题。

我的问题的可能解决方案我终于找到了这个插件: https://github.com/flynetworks/cordova-websocket-clientcert 使用pkcs12存档。

我对此解决方案不满意,并将客户端身份验证从TLS客户端证书更改为简单的HTTP身份验证。

请在此处查看使用WebSockets进行身份验证的可能性:https://tools.ietf.org/html/rfc6455#section-10.5