]> Cypherpunks.ru repositories - gocheese.git/blobdiff - gocheese.texi
TLS support
[gocheese.git] / gocheese.texi
index c671c000a729ddef54c041f6ab24a2ca1f28bdb4..8b89b166a9183a0411f63a1d884dc522180772c2 100644 (file)
@@ -26,18 +26,18 @@ but nearly all the code was rewritten. It has huge differences:
 @item atomic packages store on filesystem
 @item SHA256-checksummed packages (both uploaded and proxied one)
 @item graceful HTTP-server shutdown
-@item no TLS support
 @item no YAML configuration, just command-line arguments
 @item no package overwriting ability (as PyPI does)
 @end itemize
 
 GoCheese is free software, licenced under
-@url{https://www.gnu.org/licenses/gpl-3.0.html, GNU GPLv3} conditions:
+@url{https://www.gnu.org/licenses/gpl-3.0.html, GNU GPLv3}:
 see the file COPYING for copying conditions.
 
 @menu
 * Usage::
 * Password authentication: Passwords.
+* TLS support: TLS.
 * Storage format: Storage.
 @end menu
 
@@ -125,6 +125,28 @@ $ kill -HUP `pidof gocheese`
 Before refreshing it's recommended to check @option{-passwd} file with
 @option{-passwd-check} option to prevent daemon failure.
 
+@node TLS
+@unnumbered TLS support
+
+You can enable TLS support by specifying PEM-encoded X.509 certificate
+and private key files. Go's TLS implementation supports TLS 1.3, HTTP/2
+negotiation, Keep-Alives, modern ciphersuites and ECC.
+
+For example generate some self-signed certificate using GnuTLS toolset:
+
+@verbatim
+$ certtool --generate-privkey --ecc --outfile prv.pem
+$ cert_template=`mktemp`
+$ echo cn=gocheese.host > $cert_template
+$ certtool \
+    --generate-self-signed \
+    --load-privkey=prv.pem \
+    --template $cert_template \
+    --outfile=cert.pem
+$ rm $cert_template
+$ gocheese -tls-cert cert.pem -tls-key prv.pem [...]
+@end verbatim
+
 @node Storage
 @unnumbered Storage format