summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorHermann Höhne <hoehermann@gmx.de>2017-08-29 21:24:32 +0200
committerHermann Höhne <hoehermann@gmx.de>2017-10-26 15:17:11 +0200
commit914609fb5f1df31e9ecd27ad73ceda035357cecb (patch)
treeddf73ba4a86a0ffa0375252d24fc732ea6c379c5 /docs
parent5e19bc3f96d634a7b55d06e6cec630d5b1c60c9f (diff)
downloadwebsockify-914609fb5f1df31e9ecd27ad73ceda035357cecb.tar.gz
Added SSL-certificate-based client authentication.
* Incorporates #190 without breaking compatibility towards old Python versions. * A new plugin allows authenticating clients by the "common name" defined in their certificate. * Added manual for certificate-based client authentication, including hints to which Python versions allow client certificate authentication. * Adjusted test to work with new ssl.create_default_context.
Diffstat (limited to 'docs')
-rw-r--r--docs/websockify.117
1 files changed, 16 insertions, 1 deletions
diff --git a/docs/websockify.1 b/docs/websockify.1
index c4b97b7..3aaea6e 100644
--- a/docs/websockify.1
+++ b/docs/websockify.1
@@ -89,12 +89,27 @@ Here is an example of using websockify to wrap the vncserver command (which back
`./websockify 5901 --wrap-mode=ignore -- vncserver -geometry 1024x768 :1`
-Here is an example of wrapping telnetd (from krb5-telnetd).telnetd exits after the connection closes so the wrap mode is set to respawn the command:
+Here is an example of wrapping telnetd (from krb5-telnetd). telnetd exits after the connection closes so the wrap mode is set to respawn the command:
`sudo ./websockify 2023 --wrap-mode=respawn -- telnetd -debug 2023`
The wstelnet.html page demonstrates a simple WebSockets based telnet client.
+.SS Use client certificate verification
+
+This feature requires Python 2.7.9 or newer or Python 3.4 or newer.
+
+The --verify-client option makes the server ask the client for a SSL certificate. Presenting a valid (not expired and trusted by any supplied certificate authority) certificate is required for the client connection. With -auth-plugin=ClientCertCNAuth, the client certificate can be checked against a list of authorised certificate users. Non-encrypted connection attempts always fail during authentication.
+
+Here is an example of a vncsevrer with password-less, certificate-driven authentication:
+
+`./websockify 5901 --cert=fullchain.pem --key=privkey.pem --ssl-only --verify-client --cafile=ca-certificates.crt --auth-plugin=ClientCertCNAuth --auth-source='jane@example.com Joe User9824510' --web=noVNC/ --wrap-mode=ignore -- vncserver :1 -geometry 1024x768 -SecurityTypes=None`
+
+The --auth-source option takes a white-space separated list of common names. Depending on your clients certificates they can be verified email addresses, user-names or any other string used for identification.
+
+The --cafile option selects a file containing concatenated certificates of authorities trusted for validating clients. If this option is omitted, system default list of CAs is used. Upon connect, the client should supply the whole certificate chain. If your clients are known not to send intermediate certificates, they can be appended to the ca-file as well.
+
+Note: Most browsers ask the user to select a certificate only while connecting via HTTPS, not WebSockets. Connecting directly to the SSL secured WebSocket may cause the browser to abort the connection. If you want to connect via noVNC, the --web option should point to a copy of noVNC, so it is loaded from the same host.
.SH AUTHOR
Joel Martin (github@martintribe.org)