2014-01-15 1844 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' } 

我該怎麼做才能解決這個問題?```

相關問題