前提・実現したいこと
TkのGUIで操作するスクレイピングソフトをocraでexe化して配布したいと考えております。
ツールにはログイン認証機能を設けており、herokuにデプロイしたsinatraで動くAPIで認証するような仕組みです。
ocraでのexe化は成功しましたが、以下のように、GETリクエストを送ると、OpenSSL::SSL::SSLError
エラーが発生しました。
いろいろ調べてみると、証明書関連の話なのかと思い、ocra実行時にcert.pem
を同梱し、common.rbでパスを書き加えましたが、このエラーが出てしまいました。
cert.pem
のパスは間違っていないようなので、原因が何かわからず、困っております。
原因と解決策をご教授いただけますと、幸いでございます。
何卒宜しくお願いいたします。
発生している問題・エラーメッセージ
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate in certificate chain) ---< backtrace of Ruby side >----- C:/Users/xxxx/AppData/Local/Temp/ocr591B.tmp/lib/ruby/2.6.0/net/protocol.rb:44:in `connect_nonblock' C:/Users/xxxx/AppData/Local/Temp/ocr591B.tmp/lib/ruby/2.6.0/net/protocol.rb:44:in `ssl_socket_connect' C:/Users/xxxx/AppData/Local/Temp/ocr591B.tmp/lib/ruby/2.6.0/net/http.rb:996:in `connect' C:/Users/xxxx/AppData/Local/Temp/ocr591B.tmp/lib/ruby/2.6.0/net/http.rb:930:in `do_start' C:/Users/xxxx/AppData/Local/Temp/ocr591B.tmp/lib/ruby/2.6.0/net/http.rb:919:in `start' C:/Users/xxxx/AppData/Local/Temp/ocr591B.tmp/lib/ruby/2.6.0/net/http.rb:605:in `start' C:/Users/xxxx/AppData/Local/Temp/ocr591B.tmp/src/tk.rb:11:in `get' C:/Users/xxxx/AppData/Local/Temp/ocr591B.tmp/src/tk.rb:134:in `login' C:/Users/xxxx/AppData/Local/Temp/ocr591B.tmp/src/tk.rb:128:in `block in top_page' ~~略~~
該当のソースコード
ruby
1# common.rb 2require 'selenium-webdriver' 3require 'active_support/all' 4require 'net/http' 5require 'nokogiri' 6require 'open-uri' 7require 'fileutils' 8require 'json' 9require 'csv' 10require 'pry' 11require 'uri' 12require 'tk' 13 14ENV["SSL_CERT_FILE"] = File.expand_path("../ssl/cert.pem", __FILE__) 15 16#tk.rb 17 18require_relative "common" 19 20def get(route, params) 21 uri = URI.parse("https://<host>.herokuapp.com/#{route}#{params}") 22 request = Net::HTTP::Get.new(uri) 23 req_options = { 24 use_ssl: uri.scheme == "https", 25 } 26 response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http| 27 http.request(request) 28 end 29 response 30end 31 32def login(id, password) #idとpasswordはtkで入力し渡されます 33 response = get("login", "?id=#{id}&password=#{password}") 34 ~~略~~ 35end 36
ocraを実行したときのコード
ocra tk.rb C:/Ruby26-x64/msys64/usr/bin/msys-2.0.dll C:/Ruby26-x64/msys64/mingw64/lib/tcl8.6 C:/Ruby26-x64/msys64/mingw64/lib/tk8.6 C:/Ruby26-x64/ssl/cert.pem --no-autoload --add-all-core --windows
補足情報(FW/ツールのバージョンなど)
windows 7 64bit
ruby 2.6.0
回答1件
あなたの回答
tips
プレビュー