openssl stripe-payments ubuntu-13.10 xubuntu

openssl - Agregar un nuevo certificado SSL para resolver Verify return code: 20(¿no se puede obtener el certificado de emisor local)?



stripe-payments ubuntu-13.10 (1)

Debe agregar la ruta donde s_client debe buscar los certificados, porque no usa ninguna ruta predeterminada. Esto debería funcionar:

openssl s_client -CApath /etc/ssl/certs/ -connect api.stripe.com:443

No debería haber ningún certificado para / etc / ssl / certs, porque la CA pertinente ya debería estar incluida con (X) ubuntu.

ACTUALIZACIÓN: si dejo que la llamada a la API se cuelgue y el teclado la interrumpa, aquí está lo que muestra que estaba bloqueado:

File "/usr/lib/python2.7/ssl.py", line 405, in do_handshake self._sslobj.do_handshake()

¿Están seguros de que no es un problema relacionado con SSL?

He estado obteniendo un error que parece ser algo común, el de "Verificar código de retorno: 20 (no se puede obtener el certificado de emisor local)". Con la ayuda de este hilo encontré un certificado que elimina el error cuando paso la ruta a un archivo como un argumento, según este hilo . Ahora, ¿cómo puedo hacer de forma permanente este nuevo certificado mi certificado predeterminado similar?

Para que quede claro, "echo '''' | openssl s_client -connect api.stripe.com:443" produce esto:

CONNECTED(00000003) depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA verify error:num=20:unable to get local issuer certificate verify return:0 --- Certificate chain 0 s:/C=US/ST=California/L=San Francisco/O=Stripe, Inc./CN=api.stripe.com i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3 i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA 2 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA i:/C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Global Root --- Server certificate -----BEGIN CERTIFICATE----- MIIFHDCCBASgAwIBAgIQCBKNwt21MdAyGnD9g/FpLzANBgkqhkiG9w0BAQUFADBm MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSUwIwYDVQQDExxEaWdpQ2VydCBIaWdoIEFzc3VyYW5j ZSBDQS0zMB4XDTEzMDkyNzAwMDAwMFoXDTE1MDEwODEyMDAwMFowajELMAkGA1UE BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz Y28xFTATBgNVBAoTDFN0cmlwZSwgSW5jLjEXMBUGA1UEAxMOYXBpLnN0cmlwZS5j b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbC50FiFYms4rUoW7o CmW+jw6IUEt1oYyE7bWLMB/rmdGlw3cv7u82WR8HezLH9Fj60NvQhGvAzFYBjRWA +VnF5rxEYS05piwvF0jR1QSpeMzId7GOrHKV125pPuYzp+Mj44e3nr/uP91ICMVn gz6U39OqiU9aBUTI8bhuiqcWK+4M7yQ5j9DGcq/wJISfLSr9zVYxOH75TqaMDFUh EUqaWYpoJatQAYAobATCEVs5uw3T+K0tlRjcxhw5Zx698lajqTGORLwvVcF+ErZ7 ukVNnStu3LyWaR2pMs8zytlx2nepFjIp7m/SCcxTc9GmRY6zubbfo/ih9sjofv2K nye9AgMBAAGjggHAMIIBvDAfBgNVHSMEGDAWgBRQ6nOJ2yn7EI+e5QEg1N55mUiD LnN0cmlwZS5jb20wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMB BggrBgEFBQcDAjBhBgNVHR8EWjBYMCqgKKAmhiRodHRwOi8vY3JsMy5kaWdpY2Vy dC5jb20vY2EzLWcyNy5jcmwwKqAooCaGJGh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNv bS9jYTMtZzI3LmNybDBCBgNVHSAEOzA5MDcGCWCGSAGG/WwBATAqMCgGCCsGAQUF BwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMHsGCCsGAQUFBwEBBG8w bTAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEUGCCsGAQUF BzAChjlodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRIaWdoQXNz dXJhbmNlQ0EtMy5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQUFAAOCAQEA j1zUdQBzjpMTeexGYpxMLWW4IYcblZeP03V15WnGnpGq5eaLHKDNJ9K7MRIOtDaw K4EVCIO1ru8ojf6eFwcRuozRkbMNSRAYLbFyTS3CWygC1De4vLwuhRxvnpKYcG57 7kgPx+nxIQtQdauL5AinxXMysY8+GZP1qzc2zlSV0MnvW2p5D3g0lb1ZMFQLpzDm ACJcg7xiOrs6lS70EfvcEPrVmRn287aE7b3jEBQ+dkokxNEC0Mi7G4CJQVP1oape wtKjWMSeQA/VdUVuoxoUa gNh7gzLqoc6s7z5HmWVpR1KXiASRFYXsBFeIXnvehJc 6HeLGqB0qcMYHcE8wmJErA== -----END CERTIFICATE----- subject=/C=US/ST=California/L=San Francisco/O=Stripe, Inc./CN=api.stripe.com issuer=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3 --- No client certificate CA names sent --- SSL handshake has read 4712 bytes and written 443 bytes --- Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES128-GCM-SHA256 Session-ID: F5EA24F3FE87EA6D4D2D5F8EBBD66811BE85116047AB1111F22968B324698D86 Session-ID-ctx: Master-Key: EEBA4D6255330C751DACE424844778CAA561F9BA339488CB8B32D78047A681B3066DD683A733732AB778EB1C72FB1EE2 Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 300 (seconds) TLS session ticket: 0000 - f0 46 61 22 d7 65 e3 95-e7 4b b3 f6 d6 79 9d 69 .Fa".e...K...y.i 0010 - b1 8d 4a a2 a7 97 ba de-68 1a ff 63 f6 2a 64 34 ..J.....h..c.*d4 0020 - 44 e6 01 64 d9 a9 ff 26-32 21 be 49 2a fc 85 42 D..d...&2!.I*..B 0030 - ee eb c8 b1 65 cc 43 be-05 69 e8 d6 5c bd e0 19 ....e.C..i../... 0040 - 57 b3 07 5a d4 6b 90 f2-a0 b4 31 96 1f 41 6d 88 W..Z.k....1..Am. 0050 - e3 23 ea b2 33 e3 33 2e-29 33 ab 30 65 a1 eb 6d .#..3.3.)3.0e..m 0060 - 99 66 65 c1 bf 2b e2 25-70 a7 f8 17 c4 4b 8a bd .fe..+.%p....K.. 0070 - cf 37 6a ee 38 dc 96 c5-24 6b 35 40 1c f1 d6 35 [email protected] 0080 - 64 0f 78 c7 90 98 f8 08-15 81 73 ce d6 e4 3e 38 d.x.......s...>8 0090 - af 81 51 ef a1 0b 20 95-09 80 af c8 9d 08 14 e3 ..Q... ......... Start Time: 1404582660 Timeout : 300 (sec) Verify return code: 20 (unable to get local issuer certificate) --- DONE

Mientras que "echo '''' | openssl s_client -CApath ~ / Downloads / DigiCertHighAssuranceEVRootCA.crt -connect api.stripe.com:443" produce esto:

CONNECTED(00000003) depth=3 C = US, O = GTE Corporation, OU = "GTE CyberTrust Solutions, Inc.", CN = GTE CyberTrust Global Root verify return:1 depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA verify return:1 depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance CA-3 verify return:1 depth=0 C = US, ST = California, L = San Francisco, O = "Stripe, Inc.", CN = api.stripe.com verify return:1 --- Certificate chain 0 s:/C=US/ST=California/L=San Francisco/O=Stripe, Inc./CN=api.stripe.com i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3 i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA 2 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA i:/C=US/O=GTE Corporation/OU=GTE CyberTrust Solutions, Inc./CN=GTE CyberTrust Global Root --- Server certificate -----BEGIN CERTIFICATE----- MIIFHDCCBASgAwIBAgIQCBKNwt21MdAyGnD9g/FpLzANBgkqhkiG9w0BAQUFADBm MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSUwIwYDVQQDExxEaWdpQ2VydCBIaWdoIEFzc3VyYW5j ZSBDQS0zMB4XDTEzMDkyNzAwMDAwMFoXDTE1MDEwODEyMDAwMFowajELMAkGA1UE BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz Y28xFTATBgNVBAoTDFN0cmlwZSwgSW5jLjEXMBUGA1UEAxMOYXBpLnN0cmlwZS5j b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbC50FiFYms4rUoW7o CmW+jw6IUEt1oYyE7bWLMB/rmdGlw3cv7u82WR8HezLH9Fj60NvQhGvAzFYBjRWA +VnF5rxEYS05piwvF0jR1QSpeMzId7GOrHKV125pPuYzp+Mj44e3nr/uP91ICMVn gz6U39OqiU9aBUTI8bhuiqcWK+4M7yQ5j9DGcq/wJISfLSr9zVYxOH75TqaMDFUh EUqaWYpoJatQAYAobATCEVs5uw3T+K0tlRjcxhw5Zx698lajqTGORLwvVcF+ErZ7 ukVNnStu3LyWaR2pMs8zytlx2nepFjIp7m/SCcxTc9GmRY6zubbfo/ih9sjofv2K nye9AgMBAAGjggHAMIIBvDAfBgNVHSMEGDAWgBRQ6nOJ2yn7EI+e5QEg1N55mUiD 9zAdBgNVHQ4EFgQUgrT82oRIRdlSABFBqltZv7JNDBAwGQYDVR0RBBIwEIIOYXBp LnN0cmlwZS5jb20wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMB BggrBgEFBQcDAjBhBgNVHR8EWjBYMCqgKKAmhiRodHRwOi8vY3JsMy5kaWdpY2Vy dC5jb20vY2EzLWcyNy5jcmwwKqAooCaGJGh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNv bS9jYTMtZzI3LmNybDBCBgNVHSAEOzA5MDcGCWCGSAGG/WwBATAqMCgGCCsGAQUF BwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMHsGCCsGAQUFBwEBBG8w bTAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEUGCCsGAQUF BzAChjlodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRIaWdoQXNz dXJhbmNlQ0EtMy5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQUFAAOCAQEA j1zUdQBzjpMTeexGYpxMLWW4IYcblZeP03V15WnGnpGq5eaLHKDNJ9K7MRIOtDaw K4EVCIO1ru8ojf6eFwcRuozRkbMNSRAYLbFyTS3CWygC1De4vLwuhRxvnpKYcG57 7kgPx+nxIQtQdauL5AinxXMysY8+GZP1qzc2zlSV0MnvW2p5D3g0lb1ZMFQLpzDm ACJcg7xiOrs6lS70EfvcEPrVmRn287aE7b3jEBQ+dkokxNEC0Mi7G4CJQVP1oape wtKjWMSeQA/VdUVuoxoUagNh7gzLqoc6s7z5HmWVpR1KXiASRFYXsBFeIXnvehJc 6HeLGqB0qcMYHcE8wmJErA== -----END CERTIFICATE----- subject=/C=US/ST=California/L=San Francisco/O=Stripe, Inc./CN=api.stripe.com issuer=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3 --- No client certificate CA names sent --- SSL handshake has read 4712 bytes and written 443 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES128-GCM-SHA256 Session-ID: 7ACAFB7EFC59892B2FD356197EE62E8E94F05DA51FAC29C21CA4790D69916169 Session-ID-ctx: Master-Key: 4E58BAB4E6C5C36BFEE31C5AA49AB8B22C6ADB684C3A7A9FC1FE2D899676C5CDF2823C51E35120E61FA04F2291DBBF0D Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 300 (seconds) TLS session ticket: 0000 - 89 ab 9c 38 a7 3e 8a ae-43 22 63 ea fa 5d db 7e ...8.>..C"c..].~ 0010 - b8 31 46 06 ba d7 5f ed-0f f4 58 47 ef 18 9c fc .1F..._...XG.... 0020 - bf a5 ff f0 17 27 15 b0-ab 0e 38 53 6a f2 54 95 .....''....8Sj.T. 0030 - 7a 68 0a f6 78 2d 30 ec-1b 54 27 3f 58 8f b0 59 zh..x-0..T''?X..Y 0040 - 95 93 c1 fb 67 8c 1b 94-85 76 74 59 35 f7 c5 06 ....g....vtY5... 0050 - 2e a1 41 cb 49 c0 6f 3d-77 d5 4b 4a 7f fd 9c d2 ..A.I.o=w.KJ.... 0060 - 07 4a 52 e6 04 8f 63 9b-fd a6 7b 94 5b 1e 3d 50 .JR...c...{.[.=P 0070 - e3 77 dd b9 da 56 e7 5b-16 09 15 a8 b5 02 b7 07 .w...V.[........ 0080 - 1e 31 39 cb 07 c7 85 45-25 0c a6 d8 10 93 bc 21 .19....E%......! 0090 - e8 0d b9 3c 08 8a 99 ce-75 eb 41 5e fe 5e af 8e ...<....u.A^.^.. Start Time: 1404583006 Timeout : 300 (sec) Verify return code: 0 (ok) --- DONE

Y el último me parece que resuelve este problema, si solo pudiera hacer eso "permanente". ¿Sería la solución convertirlo a PEM y ponerlo en /usr/lib/ssl/certs/ ?

Si es así, estoy teniendo problemas para convertir el certificado a PEM. Obtengo lo siguiente, que actualmente estoy "investigando":

$ openssl x509 -in DigiCertHighAssuranceEVRootCA.crt -out DigiCertHighAssuranceEVRootCA.pem -outform PEM unable to load certificate 3074123452:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

EDITAR: argh, se convirtió correctamente a .pem y lo movió a ese directorio y no hizo la diferencia.

Para el fondo, esto no es como un servidor de producción ni nada, esto es solo en mi computadora, que ejecuta Xubuntu. Me encontré con este problema de la nada mientras trataba de ejecutar un script para interactuar con la API de Stripe. La misma secuencia de comandos funcionaba bien como vino el día anterior. Entonces, de repente, las llamadas API comenzaron a agotar el tiempo de espera. Me puse en contacto con el soporte de Stripe, que era inusualmente lento, y el tipo me dio algunos comandos para ejecutar lo que sacó a la luz este problema. Todavía estoy esperando una respuesta de ellos, pero este parece ser el problema. Espero que el uso del certificado que descargué todo el tiempo me permita interactuar una vez más con la API de Stripe cuando hago otras cosas además de "echo '''' | openssl s_client -connect api.stripe.com:443"

si alguien tiene alguna idea de lo que podría haber hecho inadvertidamente para causar este problema de repente, realmente lo agradecería. He quedado estupefacto al saber por qué ocurrió esto.

EDITAR:

Me han pedido el script Stripe en sí.

import stripe STRIPE_SECRET = "mys3cretkey" STRIPE_PUBLISHABLE = "testkeypublishable" stripe.api_key = STRIPE_SECRET customer = stripe.Customer.retrieve(''cus_4FJ2a8cSopzrwQ'') print customer[''created'']

Sin embargo, me gustaría reiterar que esta y todas las demás secuencias de comandos y acciones relacionadas con Stripe funcionaban perfectamente hasta hace unos días. He estado haciendo llamadas a la API Stripe y raspado web y todo tipo de cosas felizmente ajeno a certs y ssl handshakes durante meses antes de que surgiera este problema hace unos días. Además, el documento de Stripe proporciona ejemplos de llamadas a la API con la información de la clave y la prueba a la derecha, por lo que puedes copiar eso y jugar con él. Copiar eso tampoco funciona. Realizar transacciones de prueba en nuestro "sitio" en mi entorno local tampoco funciona.

Pero, ja, ha funcionado 1/12 veces desde que comenzó el problema ... es raro ...

Intenté echo '''' | openssl s_client -connect google.com:443 echo '''' | openssl s_client -connect google.com:443 también y tengo el mismo problema. Así que esa es una razón para pensar que este problema no es específico de Stripe, aunque tuvieron algunos problemas con las personas que se conectaban a su API cuando surgieron estos problemas para mí, se resolvieron los problemas que decían en Twitter. (Y nuestro sitio de producción está bien).

Editar: se le pidió que proporcionara un poco más de información.

  1. Cosas que pueden haber cambiado Lo único que se me ocurre que posiblemente afecte esto es que comencé a utilizar mi VM más. Tenga en cuenta "más": lo estaba usando antes y ejecutar estos scripts muy bien. Es una máquina virtual de Windows 7 que uso para el trabajo .NET. (Para los curiosos, funciona mal).

  2. Errores de Stripe. Si dejo que el script se cuelgue el tiempo suficiente, obtengo un traceback, el final de la bruja es este:

    File "/usr/local/lib/python2.7/dist-packages/stripe/http_client.py", line 140, in _handle_request_error raise error.APIConnectionError(msg) stripe.error.APIConnectionError: Unexpected error communicating with Stripe. If this problem persists, let us know at [email protected]. (Network error: Timeout: HTTPSConnectionPool(host=''api.stripe.com'', port=443): Read timed out.)

  3. Los scripts y las pruebas de openssl están ambos en mi máquina local aquí, mi laptop. Cuando hice referencia a transacciones de prueba en nuestro sitio, ese fue localhost aquí, con la misma clave de API de prueba de Stripe que las secuencias de comandos.

Gracias