私のサーバーは、他のコンピュータがDAVにアクセスできるようにHTTPSを介してのみWebDAVを提供します。の証明書が発行されたと仮定すると、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
私が受け取った証明書は yeswww.myserver.com
で提供されたものなので、127.0.0.1
当然一致しません。
起動時にこのボリュームを自動的にマウントしたいと思います。おそらく、これは起動するたびに誰かが証明書を受け入れるために「はい/いいえ」と答えるのを待つので、うまくいきません。このURLまたは証明書についてこの問題を無視するようにdavfsにどのように通知できますか?
答え1
ファイルを編集すると、この問題を解決できます/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
...
これで、インストール中に認証を確認するための名前検索が正しく解決されます。
答え2
証明書には複数のホスト名と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.cnf
RedHat / CentOにあり、他のディストリビューションの他の場所にある可能性があります。実際、IPについてはこれを行ったことはありませんが、OpenSSLドキュメントこれが可能でなければならないと提案されています。
適切に署名された証明書に切り替えたい場合、一部のCAはプライベートサブネットIPの証明書の発行を拒否することがあります。
答え3
私も同じ問題があります。私の解決策は簡単です。
echo y | mount -t davfs https://localhost/<URL details> <mount point>
きれいではありませんが、魅力的かもしれません(<...>
コードをあなたの詳細に置き換えてください)。その後、このコマンドを私(Ubuntu)に追加し、/etc/rc.local
起動するたびに自動的にインストールされました。これまでは問題なく動作します。