2014-01-15 285 views
5

我目前正在尝试使用Cloudera Hadoop环境中的Encrypted Shuffle来实现安全更改。错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知协议

我创建了证书和密钥库,并将它们保存在适当的位置。

我测试的50060.

的TaskTracker的HTTPS端口。当我做了卷曲在该端口上,我得到下面的错误响应。

[email protected]:~$ curl -v -k "https://10.0.10.90:50060" 
* About to connect() to 10.0.10.90 port 50060 (#0) 
* Trying 10.0.10.90... connected 
* successfully set certificate verify locations: 
* CAfile: none 
    CApath: /etc/ssl/certs 
* SSLv3, TLS handshake, Client hello (1): 
* error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol 
* Closing connection #0 
curl: (35) error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol 

当我没有开放SSL客户端检查,我有以下响应

[email protected]:~$ openssl s_client -connect 10.0.10.90:50060 
CONNECTED(00000003) 
139749924464288:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:749: 
--- 
no peer certificate available 
--- 
No client certificate CA names sent 
--- 
SSL handshake has read 7 bytes and written 225 bytes 
--- 
New, (NONE), Cipher is (NONE) 
Secure Renegotiation IS NOT supported 
Compression: NONE 
Expansion: NONE 
--- 

我无法找出可能会造成这个问题?

有什么,我失踪?

PS:我已经更新了ca-certificates.crt文件,并保存在服务器.crt文件/usr/share/ca-certificates/mozilla

回答

3

error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

下,这似乎是没有SSL/TLS服务器监听10.0.10.90:50060。有一个服务器正在监听,它只是没有SSL/TLS。

我可以通过端口80(而不是443)连接到我的网关时复制它。

$ openssl s_client -connect 192.168.1.1:80 
CONNECTED(00000003) 
140735109476828:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:787: 
--- 
no peer certificate available 
--- 
No client certificate CA names sent 
--- 
SSL handshake has read 7 bytes and written 517 bytes 
--- 
New, (NONE), Cipher is (NONE) 
Secure Renegotiation IS NOT supported 
Compression: NONE 
Expansion: NONE 
--- 

如果你使用-debug标志,你会看到HTTP在响应OpenSSL是否试图解释为SSL/TLS协议数据:

$ openssl s_client -connect 192.168.1.1:80 -debug 
CONNECTED(00000003) 
write to 0x7fbf58422b90 [0x7fbf58811800] (348 bytes => 348 (0x15C)) 
0000 - 16 03 01 01 57 01 00 01-53 03 03 64 1d 01 29 f0 ....W...S..d..). 
... 
0150 - 03 02 01 02 02 02 03 00-0f 00 01 01    ............ 
read from 0x7fbf58422b90 [0x7fbf58816e00] (7 bytes => 7 (0x7)) 
0000 - 48 54 54 50 2f 31 2e        HTTP/1. 
140735203164636:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:794: 
+0

我有我的apache服务器这个问题。访问日志告诉我这样的:'my.host.com:80 [IPv6_address] - - [24/Jan/2016:00:29:23 +0100]“\ x16 \ x03 \ x01 \ x02”400 0“ - “” - “'或'my.host.com:443 [IPv6_address] - - [24/Jan/2016:00:29:23 +0100]”\ x16 \ x03 \ x01 \ x02“400 0” - “ “ - ”我觉得很奇怪。但是答案恰到好处:客户端用于连接的IPv6地址。为什么?我不知道。但是你的回答给了我最后的提示:没人听他们说。所以这里没有比赛。 – func0der

0

对任何人有这个问题:

error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol.

我的问题是使用默认的ipv6而不是ipv4的curl。最终服务器没有适当配置以响应ipv6,因此观察到相同的问题陈述。确保curl使用的是ipv4,或者你的服务器可以使用ipv6。

0

我有一个相关的问题,当我试图与节点连接JS的Neo4j:

所以这是我的代码:

'var express = require ('express'); 
var path = require('path'); 
var logger = require('morgan'); 
var bodyParser = require('body-parser'); 
var neo4j = require('neo4j-driver').v1; 

var app = express(); 

//View Engine 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(express.static(path.join(__dirname, 'public'))); 


var driver=neo4j.driver("bolt://localhost:7474", neo4j.auth.basic("neo4j14", "neo4j")); 
var session = driver.session(); 

app.get('/', function(req, res){ 

session 
    .run("MATCH (snackhouse:Snackhouse) RETURN snackhouse LIMIT 25") 
    .then(function(result){ 
     result.records.forEach(function(record){ 
     console.log(record); 
     });  
    }) 
    .catch(function(err){ 
     console.log(err); 
    }); 
    res.send('It Works!'); 
}); 


app.listen(3000); 
console.log('Server Started on port 3000'); 

module.exports = app;' 

//并出现在我的命令行此错误:

{ Error: 101057795:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:openssl\ssl\s23_clnt.c:794: 

at Neo4jError.Error (native) 
at new Neo4jError (C:\neo4j\node_modules\neo4j-driver\lib\v1\error.js:65:132) 
at newError (C:\neo4j\node_modules\neo4j-driver\lib\v1\error.js:55:10) 
at NodeChannel._handleConnectionError (C:\neo4j\node_modules\neo4j-driver\lib\v1\internal\ch-node.js:322:41) 
at emitOne (events.js:96:13) 
at TLSSocket.emit (events.js:188:7) 
at emitErrorNT (net.js:1278:8) 
at _combinedTickCallback (internal/process/next_tick.js:74:11) 
at process._tickCallback (internal/process/next_tick.js:98:9) code: 'SessionExpired' } 

我该怎么做才能解决这个问题?```

相关问题