SSL/TLS encryption

With naptify-server and naptify-client together, traffic is encrypted so that passwords, private messages and searches are protected from third parties. It covers both the connection to the server and file transfers between naptify-clients, as well as the admin page.

Existing clients such as Utatane keep connecting and transferring as before (backward compatible). Encryption works only when naptify-server and naptify-client are used together.

What is encrypted: the connection between naptify-server and naptify-client, file transfers between naptify-clients, and the admin page opened from outside. Existing clients such as Utatane connect without encryption, as before.

What is encrypted

ConnectionEncryptionStatus
naptify-client and naptify-serverEncryptedSupported
File transfers between naptify-clientsEncryptedSupported
Admin page (opened from outside)Encrypted (HTTPS)Supported
Existing clients such as UtataneNot encrypted (as before)—
File transfers between naptify-client and clients such as UtataneNot encrypted (as before)—
naptify-client and other OpenNap serversNot encrypted (as before)—

The method is TLS (TLS 1.3 between naptify-server and naptify-client). The admin page uses HTTPS.

Connecting to the server

Utatane and naptify-client connect to the same server. Utatane's traffic stays unencrypted. naptify-client checks the supported features, approves the certificate fingerprint, switches to encrypted traffic and then signs in.
Unencrypted and encrypted connections

At the start of a connection, naptify-client and the server check which features each supports. If both support it, the same connection switches to encrypted traffic before signing in. Existing OpenNap clients such as Utatane keep connecting to the same port as before.

If the server is linked with D-DNS.JP, it uses the Let’s Encrypt certificate issued through D-DNS.JP (the same one as the admin page’s HTTPS). Otherwise it uses a self-signed certificate it created on first use. The self-signed certificate is not recreated when the server restarts or its data folder is moved.

Checking the certificate (fingerprint)

When a certificate cannot be verified the usual way, such as a self-signed one, naptify-client shows its fingerprint (SHA-256) and asks you to approve it. The approved fingerprint is remembered, and you are warned if it changes later. Server operators should give users the fingerprint shown in the admin page.

If a server you have connected to with encryption later offers only an unencrypted connection, naptify-client asks you to confirm before signing in.

Encrypted file transfers

File transfers between naptify-clients exchange certificate fingerprints through naptify-server and are encrypted. The file itself does not pass through the server. Transfers with existing clients such as Utatane still work unencrypted, as before (backward compatible).

HTTPS for the admin page

When the admin page is opened to external access, its traffic is encrypted with HTTPS. The certificate (Let’s Encrypt) is issued and renewed through D-DNS.JP, and the server checks for a new one once a day (no restart needed). From the server’s own PC it still opens over HTTP. See “Management HTTPS” in the settings.

Settings

Where“TLS (naptify-client)” under “Connection settings” in the settings
SettingAccept TLS (on by default)
ShownThe certificate in use (D-DNS.JP certificate or self-signed), its expiry and its fingerprint (SHA-256)