2

Crossbarの最新バージョン(Ubuntu 14.04 からインストールされた 0.13 apt-get) を使用すると、SSL と中間証明書を使用した接続に問題が発生します。

ca_certificatesキーにプロパティを指定せずにサーバーをセットアップすると、サーバーは正常に動作し、プロトコルtls経由で Google Chrome を使用して接続できます。ただし、 thruwaywssを使用して接続しようとすると、次のエラーで失敗します。

接続できませんでした: SSL/TLS ハンドシェイクを完了できません: stream_socket_enable_crypto(): SSL 操作がコード 1 で失敗しました。

Thruwayチームと話したことは、証明書の問題のようです。私たちのライブ サイトでは、Gandi の中間証明書とクロス署名証明書を使用しています。これは、一部のブラウザと一部の open-ssl 実装に必要です。

ブラウザーは鍵と証明書だけで TLS 接続を確立できますが、Thruway はチェーンを必要とするようです。ただし、Gandi が提供する 2 つの証明書を使用した以下の構成は、 Chrome と Thruwayのどちらでも機能しません。Chrome に次のエラーが表示されます。

失敗しました: WebSocket を開くハンドシェイクがキャンセルされました

.crossbar/config.json以下のファイルを使用する場合。それで、これは私の構成、私の証明書、または Open-SSL スタックの他の部分の問題ですか?

(以下のファイルは、潜在的に機密性の高い情報を削除するために変更されているため、他の理由で機能しないように見える場合があります。接続が機能する場合、基になる認証と他のコンポーネントは正常に機能するため、TLS 実装に関する回答/コメントを保持してください。コメントは有効な JSON ではありませんが、読者が使用中の証明書ファイルを確認できるように含まれています)。

{
    "version": 2,
    "controller": {},
    "workers": [
        {
            "type": "router",
            "realms": [
                {
                    "name": "test",
                    "roles": [
                        {
                            "name": "web",
                            "authorizer": "test.utils.permissions",
                            "disclose": {
                                "caller": true,
                                "publisher": true
                            }
                        },
                        {
                            "name": "no",
                            "permissions": []
                        }
                    ]
                }
            ],
            "transports": [
                {
                    "type": "websocket",
                    "endpoint": {
                        "type": "tcp",
                        "port": 9001,
                        "interface": "127.0.0.1"
                    },
                    "auth": {
                        "wampcra": {
                            "type": "static",
                            "users": {
                                "authenticator": {
                                    "secret": "authenticator-REDACTED",
                                    "role": "authenticator"
                                }
                            }
                        }
                    }
                },
                {
                    "type": "web",
                    "endpoint": {
                        "type": "tcp",
                        "port": 8089,
                        "tls": {
                            "key": "../ssl/key.pem",
                            "certificate": "../ssl/cert.pem",
                            "ca_certificates": [
                                "../ssl/gandi.pem", // https://www.gandi.net/static/CAs/GandiProSSLCA2.pem
                                "../ssl/gandi-cross-signed.pem" // https://wiki.gandi.net/en/ssl/intermediate#comodo_cross-signed_certificate
                            ],
                            "dhparam": "../ssl/dhparam.pem"
                        }
                    },
                    "paths": {
                        "/": {
                            "type": "static",
                            "directory": "../web"
                        },
                        "ws": {
                            "type": "websocket",
                            "url": "wss://OUR-DOMAIN.com:8089/ws",
                            "auth": {
                                "wampcra": {
                                    "type": "dynamic",
                                    "authenticator": "test.utils.authenticate"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "type": "guest",
            "executable": "/usr/bin/env",
            "arguments": [
                "php",
                "../test.php",
                "ws://127.0.0.1:9001",
                "test",
                "authenticator",
                "authenticator-REDACTED"
            ]
        }
    ]
}

これに似た問題に対処する他の質問があります@

  • これは、TLS エラーが有用なエラーなしで WSS 接続を終了するという事実を扱います。
  • これは特にハンドシェイクのキャンセルを扱っていますが、彼らの場合、コンパイルで使用された不適切に構成されたライブラリでした.クロスバーがからインストールされているため、この場合は関係ありませんapt-get
4

2 に答える 2