Mount Https Iso at local

Linux有httpfs可以用於mount http iso於本地端,但一直編不出httpfs支援ssl的版本(請參考後記)。後來一個同學分享了httpdirfs給我,嘗試在Ubuntu 20.04.5 LTS上調整一些code且編譯後,就可以連我們自己簽的https server。本篇文章主要用在記錄過程。

執行make編譯會出現以下錯誤,直接調整Makefile移除-fanalyzer後,就可以正常編譯了:

cc: error: unrecognized command line option '-fanalyzer'

在執行mount https之後,出現以下錯誤:

curl_process_msgs: 60 - SSL peer certificate or SSH remote key was not OK
但發現使用合法憑證搭配合法hostname,還有使用http時都沒有問題,所以懷疑是CURL驗證出了什麼問題。
文檔內容如下,但加上–insecure-tls是沒有用的:
 --insecure-tls      Disable licurl TLS certificate verification by
                        setting CURLOPT_SSL_VERIFYHOST to 0
最後在src/link.c中,多做了CURLOPT_SSL_VERIFYHOST的設定(原本code是針對CURLOPT_SSL_VERIFYPEER設定為disable),
        ret = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
        ret = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
改完code重新編譯就成功了。

# http
./httpdirfs -f --cache  --single-file-mode http://10.146.16.150:8080/bootimage/driverdisk.iso /opt/mjgoodman/mnt
# https, --insecure-tls只有CURLOPT_SSL_VERIFYPEER
./httpdirfs -f --cache --insecure-tls --single-file-mode https://10.146.16.150:8443/bootimage/driverdisk.iso /opt/mjgoodman/mnt

2022-11-11

httpfs有支援ssl的版本,但在Ubuntu 20.04要額外安裝libgnutls28-dev,才可以解決gnutls header找不到的問題。另外httpfs2-ssl會檢查hostname與憑證是否合法,我有修改程式碼去避免執行verify_certificate_callback,讓我可以完成我的測試。