Ruby on rails windows上的瘦rails服务器/eventmachine不能与自定义证书一起使用
在windows()上使用SSL支持构建了自己的eventmachine/thin之后,我遇到了SSL证书的另一个问题:当我使用内置自签名时,一个thin可以正常工作,但在使用公司证书时它不会响应任何请求 以下是我获取证书的路径:Ruby on rails windows上的瘦rails服务器/eventmachine不能与自定义证书一起使用,ruby-on-rails,windows,ssl,eventmachine,Ruby On Rails,Windows,Ssl,Eventmachine,在windows()上使用SSL支持构建了自己的eventmachine/thin之后,我遇到了SSL证书的另一个问题:当我使用内置自签名时,一个thin可以正常工作,但在使用公司证书时它不会响应任何请求 以下是我获取证书的路径: 我使用puttygen生成了私钥(ssl private.key) 我使用以下命令生成了CSR: openssl req-out ssl.csr-key ssl-private.key-new 我将CSR发送到CA并收到P7B文件 我使用以下命令转换了P7B: ope
我检查了什么: openssl rsa-在ssl-private.key中-检查 显示“RSA密钥正常” openssl x509-in cert.crt-text-noout 说 而在使用
openssl genrsa -des3 -out server.orig.key 2048
openssl rsa -in server.orig.key -out server.key
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
说
确定一些更改:我更改了crt文件中的证书顺序,以便最终证书不是最后一个,而是第一个,结果不同:chrome会删除一个错误NET::ERR_cert_INVALID,即类似,并且两者都不会进一步导航 openssl s_客户端输出(看起来正常,***根CA 1在windows中受信任): 我制作了一个简单的https服务器(lib/emtestssl):
需要“rubygems”
需要“捆绑机/设置”
捆绑机
类ServerHandler'private.key',:cert\u chain\u file=>'comb.crt',:verify\u peer=>false
结束
def接收_数据(数据)
将“接收到的数据放入服务器:#{data}”
发送数据(“HTTP/1.1 200 OK\n\nHello world!”)
写入后关闭\u连接\u
结束
结束
EventMachine.rundo
放置“正在启动服务器…”
EventMachine.start_服务器('145.245.202.233',443,ServerHandler)
结束
没有tls它可以正常工作,tls浏览器不允许连接:(
根据私钥和证书do match的说法,似乎(修补过的)eventmachine完全正常:我从现有服务器上获取了密钥/证书对,并且(在浏览器发出url不匹配警告后)它工作正常 在比较证书之后,我的CA似乎失败了,给我带来了一个属性错误的证书:工作证书被描述为服务器身份验证(1.3.6.1.5.5.7.3.1),而失败证书是客户端身份验证(1.3.6.1.5.5.7.3.2) 我将发布另一个csr,并向他们收取损失日的费用…:/ 也许一个重要的发现是证书文件中证书的顺序:必须从最终证书到链末端的根证书
openssl genrsa -des3 -out server.orig.key 2048
openssl rsa -in server.orig.key -out server.key
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
***
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=PL, ST=-, O=Internet Widgits Pty Ltd, CN=test.org
Validity
Not Before: Jun 24 14:42:07 2015 GMT
Not After : Jun 23 14:42:07 2016 GMT
Subject: C=PL, ST=-, O=Internet Widgits Pty Ltd, CN=test.org
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
***
Exponent: 65537 (0x10001)
Signature Algorithm: sha256WithRSAEncryption
***
Loading 'screen' into random state - done
CONNECTED(000001E8)
depth=1 DC = com, DC = ***, CN = *** Enterprise CA 1
verify error:num=20:unable to get local issuer certificate
---
Certificate chain
0 s:/C=***/ST=***/O=***/CN=***.com
i:/DC=com/DC=***/CN=*** Enterprise CA 1
1 s:/DC=com/DC=***/CN=*** Enterprise CA 1
i:/DC=com/DC=***/CN=*** Root CA 1
---
Server certificate
-----BEGIN CERTIFICATE-----
***
-----END CERTIFICATE-----
subject=/C=***/ST=***/O=***/CN=***.com
issuer=/DC=com/DC=***/CN=*** Enterprise CA 1
---
No client certificate CA names sent
---
SSL handshake has read 3404 bytes and written 665 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : AES256-GCM-SHA384
Session-ID: ***
Session-ID-ctx:
Master-Key: ***
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 300 (seconds)
TLS session ticket: ***
Start Time: 1435319943
Timeout : 300 (sec)
Verify return code: 20 (unable to get local issuer certificate)
---
read:errno=0
require 'rubygems'
require 'bundler/setup'
Bundler.require
class ServerHandler < EM::Connection
def post_init
puts "post_init"
start_tls :private_key_file => 'private.key', :cert_chain_file => 'comb.crt', :verify_peer => false
end
def receive_data(data)
puts "Received data in server: #{data}"
send_data("HTTP/1.1 200 OK\n\nHello world!")
close_connection_after_writing
end
end
EventMachine.run do
puts 'Starting server...'
EventMachine.start_server('145.245.202.233', 443, ServerHandler)
end