title: Getting "SSL_connect returned=1 errno=0 state=error: certificate verify failed" when connecting to S3
body: <p>I have been trying to upload a photo to my AWS bucket, but running into the error mentioned in the title.  I understand that it most likely has to do with my OpenSSL certificates, but any suggested solution that I have tried has failed thus far.</p>
  
  <p>I am running into this issue with ruby 2.3.1, Rails 4.1.8, aws-sdk-core 2.3.4, and carrierwave 0.11.0 on OSX Yosemite.</p>
  
  <p>I have tried all available found at this similar issue as well, as others (this one being with Windows): <a href="https://github.com/aws/aws-sdk-core-ruby/issues/166#issuecomment-111603660" rel="noreferrer">https://github.com/aws/aws-sdk-core-ruby/issues/166#issuecomment-111603660</a></p>
  
  <p>Here are some of my files:</p>
  
  <p>carrierwave.rb</p>
  
  <pre><code>CarrierWave.configure do |config|                     # required
    config.aws_credentials = {
      access_key_id:     Rails.application.secrets.aws_access_key_id, # required
      secret_access_key: Rails.application.secrets.aws_access_key,    # required
      region:            'eu-west-2'                  # optional, defaults to 'us-east-1'
    }
  
    config.aws_bucket = Rails.application.secrets.aws_bucket                        # required
    config.fog_attributes = { 'Cache-Control' =&gt; "max-age=#{365.day.to_i}" } # optional, defaults to {}
  end
  </code></pre>
  
  <p>avatar_uploader.rb</p>
  
  <pre><code>class AvatarUploader &lt; CarrierWave::Uploader::Base
  
    storage :aws
  
    def store_dir
      "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end
  end
  </code></pre>
  
  <p>EDIT (more info):</p>
  
  <pre><code>stack trace:
  
      Seahorse::Client::NetworkingError - SSL_connect returned=1 errno=0 state=error: certificate verify failed:
    /Users/stevenharlow/.rbenv/versions/2.3.1/lib/ruby/2.3.0/net/http.rb:933:in `connect_nonblock'
    /Users/stevenharlow/.rbenv/versions/2.3.1/lib/ruby/2.3.0/net/http.rb:933:in `connect'
    /Users/stevenharlow/.rbenv/versions/2.3.1/lib/ruby/2.3.0/net/http.rb:863:in `do_start'
    /Users/stevenharlow/.rbenv/versions/2.3.1/lib/ruby/2.3.0/net/http.rb:858:in `start'
    /Users/stevenharlow/.rbenv/versions/2.3.1/lib/ruby/2.3.0/delegate.rb:83:in `method_missing'
    aws-sdk-core (2.3.4) lib/seahorse/client/net_http/connection_pool.rb:292:in `start_session'
    aws-sdk-core (2.3.4) lib/seahorse/client/net_http/connection_pool.rb:104:in `session_for'
    aws-sdk-core (2.3.4) lib/seahorse/client/net_http/handler.rb:109:in `session'
  </code></pre>
  
  <p>Solutions tried:</p>
  
  <ul>
  <li>Aws.use_bundled_cert!</li>
  <li>Download cert and reference manually</li>
  <li>I tried using Fog instead of carrierwave-aws</li>
  <li>Tried reinstalling ruby after upgrading rbenv</li>
  </ul>
  
  <p>Here's the result of </p>
  
  <pre><code>CONNECTED(00000003)
  depth=1 /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Baltimore CA-2 G2
  verify error:num=20:unable to get local issuer certificate
  verify return:0
  ---
  Certificate chain
   0 s:/C=US/ST=Washington/L=Seattle/O=Amazon.com Inc./CN=*.s3-us-west-2.amazonaws.com
     i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Baltimore CA-2 G2
   1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Baltimore CA-2 G2
     i:/C=IE/O=Baltimore/OU=CyberTrust/CN=Baltimore CyberTrust Root
  ---
  
  &lt;certificate info&gt;
  
  No client certificate CA names sent
  ---
  SSL handshake has read 2703 bytes and written 456 bytes
  ---
  New, TLSv1/SSLv3, Cipher is AES128-SHA
  Server public key is 2048 bit
  Secure Renegotiation IS supported
  Compression: NONE
  Expansion: NONE
  SSL-Session:
      Protocol  : TLSv1
      Cipher    : AES128-SHA
      Session-ID: &lt;session-id&gt;
      Session-ID-ctx: 
      Master-Key: &lt;master-key&gt;
      Key-Arg   : None
      Start Time: 1463697130
      Timeout   : 300 (sec)
      Verify return code: 0 (ok)
  </code></pre>