¿Dónde está Ruby buscando ssl_cert_file? -- macos campo con ruby campo con openssl camp apple Relacionados El problema

where is Ruby looking for SSL_CERT_FILE?


7
vote

problema

Español

Estoy tratando de averiguar dónde Ruby espera encontrar su lista OpenSSL CA. Mi entorno es:

  • Mac OS 10.7.5
  • openssl de Homebrew
  • rbenv de Homebrew
  • ruby ​​1.9.3, instalado usando rbenv y configure_opts = "- with-openssl-dir =` brew --prefix openssl` "

Confirmación de que mi Ruby está usando Homebrew OpenSSL (Nota: ABCDEFGHIJKLMNABCDEFGHIJKLMN1 es una versión redactada del directorio de usuarios en todos los ejemplos a continuación):

  $ otool -L /Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin11.4.2/openssl.bundle /Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin11.4.2/openssl.bundle:         /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)         /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)         /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)         /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)   

Para probar, he escrito el siguiente script:

  #!/usr/bin/env ruby require 'net/https' https = Net::HTTP.new('encrypted.google.com', 443) https.use_ssl = true https.verify_mode = OpenSSL::SSL::VERIFY_PEER https.request_get('/') puts 'success!'   

Si especifico manualmente la ruta a mi SSL_CERT_FILE, funciona:

  $ SSL_CERT_FILE=/Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/ssl_certs/ca-bundle.pem ./test_ssl.rb  success!   

Si no, se rompe:

  ABCDEFGHIJKLMNABCDEFGHIJKLMN5   

Como aparte, ya estoy consciente de que podría verificar manualmente varias rutas para el archivo CA de mi script. Sin embargo, el script es una prueba de operaciones de red / http similares dentro de Ruby Gem "Faraday" en mi sistema. No quiero hackear la gema de Faraday para solucionar este problema.

Así que usé DTRUSS para buscar comandos de estadísticas y ver si alguno de ellos se intenta la búsqueda de archivos CA:

  $ sudo dtruss -f -t stat64 ./test_ssl.rb         PID/THRD  SYSCALL(args)                  = return 96741/0x6b4be4:  stat64("/usr/lib/dtrace/libdtrace_dyld.dylib", 0x7FFF6A9BE810, 0x7FFF6A9BF700)                = 0 0 96741/0x6b4be4:  stat64("/usr/lib/libSystem.B.dylib", 0x7FFF6A9BE650, 0x7FFF6A9BF4D0)          = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libcache.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)              = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libcommonCrypto.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)               = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libcompiler_rt.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)                = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libcopyfile.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)           = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libdispatch.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)           = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libdnsinfo.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)            = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libdyld.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)               = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libkeymgr.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)             = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/liblaunch.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)             = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libmacho.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)              = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libmathCommon.A.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)               = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libquarantine.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)                 = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libremovefile.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)                 = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_blocks.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)              = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_c.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)           = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_dnssd.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)               = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_info.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)                = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_kernel.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)              = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_network.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)             = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_notify.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)              = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_sandbox.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)             = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libunc.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)                = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libunwind.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)             = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libxpc.dylib", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)                = 0 0 96741/0x6b4be4:  stat64("/AppleInternal", 0x7FFF6A9BEFF8, 0x0)                 = -1 Err#2 96741/0x6b4be4:  stat64("/usr/lib/libstdc++.6.dylib", 0x7FFF6A9BE640, 0x7FFF6A9BF4C0)          = 0 0 96741/0x6b4be4:  stat64("/usr/lib/libc++abi.dylib", 0x7FFF6A9BE550, 0x7FFF6A9BF3D0)            = 0 0   

¡Ninguna de las estadísticas de archivos parece una búsqueda de archivos CA! ¿Estoy usando Dtruss correctamente? ¿Hay alguna otra forma para que me averigüe dónde se debe colocar el archivo CA CERTIFICATES?

Original en ingles

I am trying to find out where Ruby expects to find its openssl CA list. My environment is:

  • Mac OS 10.7.5
  • OpenSSL from homebrew
  • Rbenv from homebrew
  • Ruby 1.9.3, installed using rbenv and CONFIGURE_OPTS="--with-openssl-dir=`brew --prefix openssl`"

Confirmation that my Ruby is using homebrew OpenSSL (note: /Users/me is a redacted version of the user directory in all examples below):

$ otool -L /Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin11.4.2/openssl.bundle /Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin11.4.2/openssl.bundle:         /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)         /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)         /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)         /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) 

To test, I have written the following script:

#!/usr/bin/env ruby require 'net/https' https = Net::HTTP.new('encrypted.google.com', 443) https.use_ssl = true https.verify_mode = OpenSSL::SSL::VERIFY_PEER https.request_get('/') puts 'success!' 

If I manually specify the path to my SSL_CERT_FILE, it works:

$ SSL_CERT_FILE=/Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/ssl_certs/ca-bundle.pem ./test_ssl.rb  success! 

If not, it breaks:

$ ./test_ssl.rb  /Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)         from /Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `block in connect'         from /Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/timeout.rb:54:in `timeout'         from /Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/timeout.rb:99:in `timeout'         from /Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `connect'         from /Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:755:in `do_start'         from /Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:744:in `start'         from /Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:1284:in `request'         from /Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:1195:in `request_get'         from ./test_ssl.rb:6:in `<main>' 

As an aside, I am already aware that I could manually check various paths for the CA file from my script. However the script is a test of similar net/http operations within Ruby gem "faraday" on my system. I do not want to hack the faraday gem to work around this problem.

So I used dtruss to look for stat commands and see if any of them are attempted CA file lookups:

$ sudo dtruss -f -t stat64 ./test_ssl.rb         PID/THRD  SYSCALL(args)                  = return 96741/0x6b4be4:  stat64("/usr/lib/dtrace/libdtrace_dyld.dylib\0", 0x7FFF6A9BE810, 0x7FFF6A9BF700)                = 0 0 96741/0x6b4be4:  stat64("/usr/lib/libSystem.B.dylib\0", 0x7FFF6A9BE650, 0x7FFF6A9BF4D0)          = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libcache.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)              = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libcommonCrypto.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)               = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libcompiler_rt.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)                = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libcopyfile.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)           = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libdispatch.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)           = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libdnsinfo.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)            = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libdyld.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)               = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libkeymgr.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)             = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/liblaunch.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)             = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libmacho.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)              = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libmathCommon.A.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)               = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libquarantine.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)                 = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libremovefile.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)                 = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_blocks.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)              = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_c.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)           = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_dnssd.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)               = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_info.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)                = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_kernel.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)              = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_network.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)             = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_notify.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)              = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libsystem_sandbox.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)             = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libunc.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)                = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libunwind.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)             = 0 0 96741/0x6b4be4:  stat64("/usr/lib/system/libxpc.dylib\0", 0x7FFF6A9BE350, 0x7FFF6A9BF1D0)                = 0 0 96741/0x6b4be4:  stat64("/AppleInternal\0", 0x7FFF6A9BEFF8, 0x0)                 = -1 Err#2 96741/0x6b4be4:  stat64("/usr/lib/libstdc++.6.dylib\0", 0x7FFF6A9BE640, 0x7FFF6A9BF4C0)          = 0 0 96741/0x6b4be4:  stat64("/usr/lib/libc++abi.dylib\0", 0x7FFF6A9BE550, 0x7FFF6A9BF3D0)            = 0 0 

None of the file stats look like a CA file lookup! Am I using dtruss correctly? Is there some other way for me to find out where the CA certificates file should be placed?

        
         
         

Lista de respuestas

2
 
vote

Experimenté el mismo problema bajo Ubuntu. Parece que ya no debe ser compilado en incumplimiento (si alguna vez ha tenido, en teoría, también podría haber sido el trabajo de los distribuidores).

Optamos por establecer la ruta en la configuración de Apache (My Rails App está controlada por el pasajero).

SETENV SSL_CERT_DIR / USR / COMPARTE / CERTIFICATOS CA / MOZILLA

ahora funciona.

También hay un SSL_CERT_FILE para un solo certificado.

Tienes que ajustar las rutas.

Simplemente revise las páginas principales, y esta página. Incluso la línea 4 aquí, aquí dice: https://github.com /google/signet/blob/master/lib/signet/ssl_config.rb

También podría haber establecido el sistema de ruta en todo el sistema en / etc / entorno y reinició el sistema.

 

I experienced the same problem under Ubuntu. There seems no longer to be a compiled in default (if it ever had, in theory it could also have been the distributors' work).

I opted to set the path in apache config (my rails app is controlled by passenger).

SetEnv SSL_CERT_DIR /usr/share/ca-certificates/mozilla

It now works.

There is also an SSL_CERT_FILE for a single certificate.

You have to adjust the paths.

Just check the main pages, and this page. Even line 4 over here says so: https://github.com/google/signet/blob/master/lib/signet/ssl_config.rb

I could also have set the path system-wide in /etc/environment and restarted the system.

 
 
 
 
0
 
vote

Aunque no entiendo donde Ruby espera para encontrarlo, es posible que desee intentar y agregar

  export SSL_CERT_FILE=/Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/ssl_certs/ca-bundle.pem   

a ~/.bash_profile Para que funcione con las herramientas de la línea de comandos (tenga en cuenta la 'exportación' frente a SSL_CERT_FILE, en los sistemas de Windows (fuera del tema, lo sé). Esto sería 'set') < / p>

 

Although I don't figure out where ruby expects to find it, you may want to try and add

export SSL_CERT_FILE=/Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/ssl_certs/ca-bundle.pem 

to ~/.bash_profile to make it work with the command line tools (note the 'export' in front of SSL_CERT_FILE, on Windows systems (off topic, I know) this would be 'set')

 
 
 
 

Relacionados problema

7  ¿Puedo eliminar cualquiera de las aplicaciones predeterminadas, viene con OS X? [duplicar]  ( Can i delete any of the default apps the come with os x ) 
Esta pregunta ya tiene respuestas aquí : ¿Es posible eliminar el "inútil? "Aplicaciones preinstalada...

13  ¿Cómo recojo el administrador o la contraseña de root en OS X?  ( How do i recover the administrator or root password on os x ) 
Recibí un Macbook blanco de mano con 10.4 en él y automáticamente inicia sesión en una cuenta de usuario que no es capaz de cambiar mucho en el panel de prefe...

0  OWC SSD se congela regularmente  ( Owc ssd freezes regularly ) 
Instalé un nuevo SSD de 115 GB con una instalación de LEON CLEAN en My MacBook Pro (2010) con el doblador de datos que contiene mi antiguo DDA de Seagate. L...

7  ¿Cómo uso el corrector ortográfico en OSX con varios idiomas?  ( How do i use spell check in osx with several languages ) 
A menudo necesito escribir correos electrónicos en francés que contienen palabras técnicas en inglés y parece que el corrector ortográfico en OSX no puede ent...

1  Aplicaciones sin manzanas que no se lanzarán  ( Non apple applications failing to launch ) 
Tengo problemas para ejecutar cualquier aplicación de terceros que no se crean con Pure Apple Native UI. Ejemplo, Google Crome, Firefox y Microsoft Word. Cu...

9  Mac atascado en el ciclo de reinicio después de la actualización de MacOS Catalina fallida  ( Mac stuck in restart cycle after failed macos catalina update ) 
Estoy extremadamente preocupado por mi MacBook. Intenté actualizar la publicación oficial de MacOS Catalina hace unas horas, pero al instante afectó un proble...

20  ¿Cómo eliminar o deshabilitar un diseño de teclado predeterminado?  ( How to remove or disable a default keyboard layout ) 
¿Es posible eliminar o deshabilitar uno de los diseños de teclado predeterminados de OS X Lion? Estoy usando un diseño de teclado personalizado, y ahora qu...

1  Eliminar todos los marcadores / favoritos de Safari  ( Delete all bookmarks favorites from safari ) 
Yo uso Chrome como mi navegador principal (trabajo y hogar), pero tengo que retroceder a Safari para las empresas laterales durante el trabajo, como los sitio...

7  ¿Cómo puedo diagnosticar el rendimiento realmente deficiente de mi 13 "MBP 2011 en 10.6?  ( How can i diagnose really poor performance of my 13 mbp 2011 on 10 6 ) 
Las especificaciones son: 2011 MBP 13 " Core i7 4GB RAM 320 GB HDD (no SSD) Utilizo el sistema para trabajar todos los días, casi siempre ejecuto l...

1  Nombrado (enlace DNS) que no se deja de dejar de fumar  ( Named bind dns not quitting ) 
Estoy tratando de dejar de fumar nombrado, pero sigue apareciendo. Intenté eliminar la configuración un archivo clave, descargándolo de launchd, lo nombre. Si...

3  ¿Cómo alternar autoshowtoolbarinfullcleren a través de terminal?  ( How to toggle autoshowtoolbarinfullscreen via terminal ) 
Necesito ayuda para esconder / mostrar la barra de herramientas en Safari utilizando el terminal. Ya descubrí que existe una clave dentro de ~ / biblioteca ...

6  Buscador en las malas modificaciones de Yosemite: texto duplicado, ventanas en blanco, falta de actualizaciones  ( Finder on yosemite misbehaves doubled text blank windows lack of updates ) 
Desde la actualización de Yosemite, el buscador ha estado actuando de manera extraña. Por lo general, puedo conseguirlo para mostrar una ventana de aspecto no...

2  ¿La última actualización de seguridad de Sierra, la actualización de la seguridad de mi dispositivo?  ( Did sierras latest security update brick my device ) 
Tengo un MBP mediados de 2012 que ejecuta la última sierra. Instalé la última actualización que intentó reiniciar la máquina. La barra de progreso habitual se...

4  No se pueden actualizar aplicaciones en MacOS App Store  ( Cannot update apps on macos app store ) 
Cuando intento actualizar una aplicación, y voy a la página 'Actualizaciones', recibo este error en un cuadro de diálogo: ABCDEFGHIJKLMNABCDEFGHIJKLMN0 ...

2  Estoy tratando de deshabilitar el centro de juegos en El Capitan  ( I am trying to disable game center on el capitan ) 
¿Cómo deshabilito, eliminar, o esconder el centro de juegos en El Capitan? Ya he probado la eliminación de la terminal, pero en vano. ...




© 2021 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos


Licensed under cc by-sa 3.0 with attribution required.