SSL 暗号化通信

naptify-server と naptify-client の組み合わせで、通信を暗号化し、パスワード・IM・検索の内容を第三者から守る機能。サーバーとの接続と、naptify-client 同士のファイル転送の両方に対応。管理画面の通信も暗号化。

Utatane など従来のクライアントとは、これまでどおり接続・転送できます(後方互換)。暗号化は、naptify-server と naptify-client の組み合わせのときだけ働きます。

暗号化する通信の図。naptify-server と naptify-client の接続、naptify-client 同士のファイル転送、外部から開く管理画面は暗号化通信。Utatane など従来のクライアントは暗号化なしで従来どおり接続。

暗号化する通信

通信暗号化状況
naptify-client と naptify-server暗号化通信対応済み
naptify-client 同士のファイル転送暗号化通信対応済み
管理画面(外部から開く場合)暗号化通信(HTTPS)対応済み
Utatane など従来のクライアント暗号化なし(従来どおり)―
naptify-client と Utatane などのファイル転送暗号化なし(従来どおり)―
naptify-client とほかの OpenNap サーバー暗号化なし(従来どおり)―

方式は TLS(naptify-server と naptify-client の組み合わせでは TLS 1.3)。管理画面は HTTPS。

サーバーとの接続

同じサーバーに Utatane と naptify-client が接続する様子。Utatane の通信は暗号化なしのまま。naptify-client は対応機能を確認し、証明書の指紋を承認すると、暗号化通信に切り替えてからログインする。
暗号化なしの接続と暗号化通信

接続の最初に、naptify-client とサーバーが互いの対応機能を確認します。両方が対応していれば、ログインの前に、同じ接続のまま暗号化通信へ切り替えます。Utatane など従来の OpenNap クライアントは、同じポートで従来どおり接続できます。

サーバーの証明書は、D-DNS.JP と連携していれば、D-DNS.JP が発行する Let’s Encrypt の証明書(管理画面の HTTPS と共通)を使います。連携していない場合は、サーバーが初回に作成した自己署名の証明書を使います。自己署名の証明書は、再起動やデータフォルダーの移動では作り直しません。

証明書の確認(指紋)

自己署名の証明書など、通常の検証で確認できない場合、naptify-client は証明書の指紋(SHA-256)を表示し、利用者の承認を求めます。承認した指紋は記憶し、次から変わっていれば警告します。サーバーの運用者は、管理画面に表示される指紋を利用者へ伝えてください。

一度暗号化通信で接続したサーバーが、暗号化なしの接続に変わった場合も、naptify-client はログインの前に利用者の確認を求めます。

ファイル転送の暗号化

naptify-client 同士のファイル転送は、証明書の指紋を naptify-server 経由で受け渡し、暗号化通信で行います。ファイル本体はサーバーを通りません。Utatane など従来のクライアントとの転送は、これまでどおり暗号化なしで行えます(後方互換)。

管理画面の HTTPS

管理画面を「外部から許可」で公開するとき、通信を HTTPS で暗号化します。証明書(Let’s Encrypt)は D-DNS.JP が発行・更新し、サーバーは 1 日 1 回、新しい証明書の有無を確認して受け取ります(再起動は不要)。サーバーの PC からは、従来どおり HTTP で開けます。設定は「管理画面の HTTPS」。

設定

場所設定の「接続設定」の「TLS(naptify-client 向け)」
項目TLS を受ける(既定は有効)
表示使用中の証明書の種類(D-DNS.JP の証明書・自己署名)・有効期限・指紋(SHA-256)