Unable to locally verify the issuer’s authority. To connect to … insecurely, use `–no-check-certificate’.
從舊主機移機到新主機的過程中發現有些 crontab 裡的腳本不動了,檢查後發現「Unable to locally verify the issuer’s authority.」的錯誤,這邊文章把解決的方法記下來。
小蛙在新主機上使用 wget 的時候發現沒辦法正常使用,會出現以下訊息
root@vultr:~# wget https://www.google.com.tw/ ERROR: cannot verify www.goog.com.tw's certificate, issued by ‘....’: Unable to locally verify the issuer's authority. To connect to www.google.com.tw insecurely, use `--no-check-certificate'.
試了 wget --no-check-certificate
之後的確可以存取了,不過有些也有用到 wget 的套件內容就沒辦法這樣處理了,必須從根本上解決。例如:使用到 file_get_contents 的 simple_html_dom 也沒辦法使用
Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in simple_html_dom.php on line 82 Warning: file_get_contents(): Failed to enable crypto in simple_html_dom.php on line 82 Warning: file_get_contents(https://xxx...): failed to open stream: operation failed in simple_html_dom.php on line 82 Fatal error: Uncaught Error: Call to a member function find() on bool in parseC.php:106 Stack trace: #0 {main} thrown in parseC.php on line 106
上 serverfault.com 查到以下這個方法:
- 下載 ca-certificates
sudo apt install ca-certificates
- 編輯使用 wget 的時候使用的設定檔
sudo vim /etc/wgetrc
- 在檔案最下面加入
ca_directory=/etc/ssl/certs
打完收工,再試一次 wget 不會再噴錯了,留給有需要的人(感謝 Jared 大大,參考自:Why wget doesn’t verify SSL certificates? @ serverfault.com)