Jekyll - Certificate verify failed (unable to get local issuer certificate) when serving site locally
10:44 04 Jul 2022

I am attempting to run bundle exec jekyll serve to load my jekyll site on a local server. When I use this command I receive error.

jekyll 3.9.2 | Error: SSL_connect returned=1 errno=0 peeraddr=140.82.113.9:443 state=error: certificate verify failed (unable to get local issuer certificate)C:/Ruby31-x64/lib/ruby/3.1.0/net/protocol.rb:46:in `connect_nonblock': SSL_connect returned=1 errno=0 peeraddr=140.82.113.9:443 state=error: certificate verify failed (unable to get local issuer certificate) (OpenSSL::SSL::SSLError)
from C:/Ruby31-x64/lib/ruby/3.1.0/net/protocol.rb:46:in `ssl_socket_connect'
        from C:/Ruby31-x64/lib/ruby/3.1.0/net/http.rb:1048:in `connect'
        from C:/Ruby31-x64/lib/ruby/3.1.0/net/http.rb:976:in `do_start'
        from C:/Ruby31-x64/lib/ruby/3.1.0/net/http.rb:965:in `start'
        from C:/Ruby31-x64/lib/ruby/3.1.0/net/http.rb:627:in `start'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-remote-theme-0.4.3/lib/jekyll-remote-theme/downloader.rb:42:in `download'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-remote-theme-0.4.3/lib/jekyll-remote-theme/downloader.rb:24:in `run'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-remote-theme-0.4.3/lib/jekyll-remote-theme/munger.rb:24:in `munge!'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-remote-theme-0.4.3/lib/jekyll-remote-theme.rb:27:in `init'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-remote-theme-0.4.3/lib/jekyll-remote-theme.rb:33:in `block in '
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-3.9.2/lib/jekyll/hooks.rb:103:in `block in trigger'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-3.9.2/lib/jekyll/hooks.rb:102:in `each'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-3.9.2/lib/jekyll/hooks.rb:102:in `trigger'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-3.9.2/lib/jekyll/site.rb:105:in `reset'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-3.9.2/lib/jekyll/site.rb:68:in `process'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-3.9.2/lib/jekyll/command.rb:28:in `process_site'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-3.9.2/lib/jekyll/commands/build.rb:65:in `build'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-3.9.2/lib/jekyll/commands/build.rb:36:in `process'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-3.9.2/lib/jekyll/commands/serve.rb:93:in `block in start'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-3.9.2/lib/jekyll/commands/serve.rb:93:in `each'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-3.9.2/lib/jekyll/commands/serve.rb:93:in `start'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-3.9.2/lib/jekyll/commands/serve.rb:75:in `block (2 levels) in init_with_program'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/jekyll-3.9.2/exe/jekyll:15:in `'
        from C:/Ruby31-x64/bin/jekyll:32:in `load'
        from C:/Ruby31-x64/bin/jekyll:32:in `
'

I have been researching the use of SSL certificates and it seems that I am missing an ssl certificate. Perhaps in my C:/Ruby31-x64/lib/ruby/3.1.0/net/ files suggesting why I am receiving all those additional "from" messages. From my understanding an SSL certificate is used in verifying the server which I am attempting to connect to.

I checked C:\Ruby31-x64\lib\ruby\site_ruby\3.1.0\rubygems\ssl_certs\rubygems.org and I have both GlobalSignRootCA and GlobalSignRootCA_R3

I also ran an SSL check and received this ouput

Here's your Ruby and OpenSSL environment:

Ruby:           3.1.2p20 (2022-04-12 revision 4491bb740a9506d76391ac44bb2fe6e483fec952) [x64-mingw-ucrt]
RubyGems:       3.3.17
Bundler:        2.3.16
Compiled with:  OpenSSL 1.1.1n  15 Mar 2022
Loaded version: OpenSSL 1.1.1n  15 Mar 2022
SSL_CERT_FILE:  C:/Ruby31-x64/ssl/cert.pem
SSL_CERT_DIR:   C:/Ruby31-x64/ssl/certs

With that out of the way, let's see if you can connect to rubygems.org...

Your Ruby can't connect to rubygems.org because you are missing the certificate files OpenSSL needs to verify you are connecting to the genuine rubygems.org servers.
Bundler connection to rubygems.org:       success ✅
RubyGems connection to rubygems.org:      success ✅
Ruby net/http connection to rubygems.org: failed  ❌

Unfortunately, this Ruby can't connect to rubygems.org. 😡

I also updated ruby gems and uninstalled/reinstalled. Still nothing

ruby ssl jekyll bundle serve