Ssl

我可以讓 davfs 忽略不受信任的證書嗎?

  • October 21, 2016

我的伺服器僅通過 HTTPS 提供 WebDAV,以便其他機器可以訪問 DAV。假設頒發證書www.myserver.com並且 WebDAV 位於https://www.myserver.com/webdav.

由於種種原因,我也希望伺服器本身掛載這個目錄。由於在整個網際網路上使用實際的 URL 和路由沒有意義,我只是走捷徑:

mount https://localhost/webdav

但是現在我遇到了一個問題:

/sbin/mount.davfs: the server certificate does not match the server name

這是有道理的。正如 的開發者所解釋的davfs,我得到的證書是 forwww.myserver.com但它是由 提供的127.0.0.1,所以它當然不匹配。

我想在啟動時自動掛載這個卷。大概這行不通,因為在每次啟動時,它都會等待有人回答 Y/N 以接受證書。我怎樣才能讓 davfs 忽略這個 URL 或這個證書的這個問題?

/etc/hosts您可以通過編輯文件來解決該問題。只需將定義 localhost 的行更改為以下內容:

127.0.0.1    www.myserver.com all_other_aliases localhost

ping檢查它的用途:

$ ping www.myserver.com
PING www.myserver.com (127.0.0.1) 56(84) bytes of data.
64 bytes from www.myserver.com (127.0.0.1): icmp_req=1 ttl=64 time=0.013 ms
...

現在,掛載期間用於認證檢查的名稱查找應該可以正確解析。

您的證書中可以有多個主機名和 IP,這些稱為主題備用名稱。CACert 建議始終這樣做,即使是一個名字

不幸的是,創建它們有點棘手,並且涉及動態更改您openssl.conf的。從我的筆記中拼湊起來,生成新的證書籤名請求遵循以下原則:

openssl req -sha256 -key your-private-key.pem -out your-csr.pem \
       -subject "(your subject)" \
       -config <(/bin/cat /etc/pki/tls/openssl.cnf ./myhosts.cfg) \
       -reqexts hostnames

哪裡myhosts.cfg有這樣的內容:

[ hostnames ]
subjectAltName = \
 DNS:www.myserver.com,\
 DNS:localhost,\
 IP:127.0.0.1

標準的 openssl 配置存在於/etc/pki/tls/openssl.cnfRedHat/CentO 上,也可能存在於其他發行版的其他地方。我從來沒有真正為 IP 做過,但OpenSSL 文件建議它應該是可能的。

如果您想切換到正確簽名的證書,您可能會發現某些 CA 可能拒絕為私有子網 IP 頒發證書。

引用自:https://unix.stackexchange.com/questions/197576