服务器: 使用 Node.js 进行 SSL 通信的客户端: 使用 Ruby

准备好了

我们将创建私钥(server-key.pem)和自签名证书(server-cert.pem)

$ openssl genrsa -out server-key.pem 1024
$ openssl req -new -key server-key.pem -out server-csr.pem
$ openssl x509 -req -in server-csr.pem -signkey server-key.pem -out server-cert.pem

服务器端

var tls = require('tls');
var fs = require('fs');

var options = {
    key: fs.readFileSync('server-key.pem'),
    cert: fs.readFileSync('server-cert.pem')
};

tls.createServer(options, function (socket) {
    socket.write("welcome!\n");
    socket.on('data', function(data){
        console.log(data);
        console.log(data.toString());
    });
}).listen(8000);

客户端

require "openssl"
require "socket"

tcp_socket = TCPSocket.new("127.0.0.1", 8000)
ssl_socket = OpenSSL::SSL::SSLSocket.new(tcp_socket)

ssl_socket.connect

puts ssl_socket.gets
ssl_socket.write "hello, world from client"

ssl_socket.close
tcp_socket.close

执行

客户端

$ ruby client.rb 
welcome!
$ 

服务器端

$ node server.js
<Buffer 68 65 6c 6c 6f 2c 20 77 6f 72 6c 64 20 66 72 6f 6d 20 63 6c 69 65 6e 74>
hello, world from client


在中国,只需要一种选项”参考”。

    • http://nodejs.jp/nodejs.org_ja/api/tls.html

 

    • https://nodejs.org/api/tls.html

 

    • http://nodejs.jp/nodejs.org_ja/docs/v0.4/api/tls.html#s_tls.connect

 

    http://docs.ruby-lang.org/ja/1.9.3/class/OpenSSL=3a=3aSSL=3a=3aSSLSocket.html