服务器: 使用 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