server / eventmachine de thin rails en windows no funciona con certificado personalizado

Después de construir mi propia máquina de eventos / thin con soporte SSL en Windows (Instale OpenSSL con Ruby para eventmachine en Windows 7 x86) Tengo otro problema con el certificado SSL: cuando uso un autofirmado incorporado, Thin funciona bien pero no responde a ninguna solicitud mientras uso el certificado corporativo

Aquí está mi camino para obtener el certificado:

Genere clave privada con puttygen (ssl-private.key)Generé CSR usando el siguiente comando:

openssl req -out ssl.csr -key ssl-private.key -new

Envié CSR a CA y recibí el archivo P7BConvertí P7B usando el siguiente comando:

openssl pkcs7 -inform DER -outform PEM -in cert.p7b -print_certs> cert.crt

¿Qué podría salir mal aquí?

¿Qué he comprobado?

openssl rsa -in ssl-private.key -check

dice "Clave RSA ok"

openssl x509 -in cert.crt -text -noout

dice

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            ***
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: ***
        Validity
            Not Before: Feb 16 08:47:25 2004 GMT
            Not After : Feb 16 08:55:36 2024 GMT
        Subject: ***
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    ***
                Exponent: 3 (0x3)
        X509v3 extensions:
            X509v3 Key Usage: 
                Digital Signature, Certificate Sign, CRL Sign
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Subject Key Identifier: 
                ***
            1.3.6.1.4.1.311.21.1: 
                ...
    Signature Algorithm: sha1WithRSAEncryption
         ***

mientras se realiza la misma verificación en el certificado autofirmado, creado usando

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

dice

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
         ***

ok algún cambio: he cambiado el orden de los certificados en el archivo crt para que el certificado final no sea el último sino el primero y el resultado sea diferente: Chrome descarta un error de NET :: ERR_CERT_INVALID, IE similar y ambos no navegan más

Salida de openssl s_client (se ve bien, *** Root CA 1 es de confianza en Windows):

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

He creado un servidor https simple (lib / emtestssl):

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

funciona bien sin tls, con tls el navegador no permitirá conectarse :(

según porhttp://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#verify la clave privada y el certificado coinciden

Respuestas a la pregunta(1)

Su respuesta a la pregunta