Использование последней версии Crossbar (0,13, установленное с apt-get
на Ubuntu 14.04) У меня возникают проблемы с подключением с использованием SSL и промежуточных сертификатов.Конфигурация межсетевого экрана SSL/TLS с промежуточными и подписанными сертификатами
Если я настроил сервер без свойства ca_certificates
в ключе tls
, тогда сервер работает нормально, а соединения могут быть выполнены с помощью Google Chrome через протокол wss
. Тем не менее пытаюсь установить соединение с помощью thruway терпит неудачу со следующей ошибкой:
Could not connect: Unable to complete SSL/TLS handshake: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
Какого having spoken with the Thruway team, кажется, проблема сертификата - на нашем живом сайте мы используем intermediate and cross-signed certificate from Gandi, который необходим для некоторых браузеров, и поэтому некоторые открытый Ssl реализации.
Кажется, что в то время как браузеры с удовольствием делают соединение TLS только с ключом и сертификатом, Thruway требует цепочки. Однако приведенная ниже конфигурация, использующая два сертификата Gandi, не работает для либо Chrome, либо Thruway. Chrome показывает ошибку:
failed: WebSocket opening handshake was canceled
При использовании файла .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"
]
}
]
}
есть другие вопросы, которые адрес вопросы, схожие с этим @
- This one имеет дело с тем, что любая ошибка TLS завершает соединение WSS без какой-либо полезной ошибки.
- This one касается конкретно с отменой рукопожатия, но в их случае это был неправильно настроен библиотека, используемая в компиляции, которая не является релевантным в этом случае, как Перекладина была установлена с
apt-get
тоже имеющий такую же проблема. хотите настроить ssl/tls в перекладину. –
Привет, Наконец-то я могу настроить его. следует за перекладиной [примеры] (https://github.com/crossbario/crossbarexamples/tree/master/authentication/tls). Установите последнюю версию [перекладину] (http://crossbar.io/docs/Installation-on-Ubuntu/). (Я установил 0.13.2) –