Browse Source

[master] Merge branch 'trac5302'

Marcin Siodelski 7 years ago
parent
commit
48113aba21
2 changed files with 76 additions and 0 deletions
  1. 1 0
      doc/Makefile.am
  2. 75 0
      doc/examples/https/nginx/kea-nginx.conf

+ 1 - 0
doc/Makefile.am

@@ -11,6 +11,7 @@ EXTRA_DIST += devel/unit-tests.dox
 nobase_dist_doc_DATA  = examples/agent/simple.json
 nobase_dist_doc_DATA += examples/ddns/sample1.json
 nobase_dist_doc_DATA += examples/ddns/template.json
+nobase_dist_doc_DATA += examples/https/nginx/kea-nginx.conf
 nobase_dist_doc_DATA += examples/kea4/advanced.json
 nobase_dist_doc_DATA += examples/kea4/backends.json
 nobase_dist_doc_DATA += examples/kea4/cassandra.json

+ 75 - 0
doc/examples/https/nginx/kea-nginx.conf

@@ -0,0 +1,75 @@
+#   This file contains an example nginx HTTP server configuration which
+#   enables reverse proxy service for Kea RESTful API. An access to
+#   the service is protected by client's certificate verification
+#   mechanism. Before using this configuration a server administrator
+#   must generate server certificate and private key as well as
+#   the certifiate authority (CA). The clients' certificates must
+#   be signed by the CA.
+#
+#   Note that the steps provided below to generate and setup certifcates
+#   are provided as an example for testing purposes only. Always
+#   consider best known security measures to protect your production
+#   environment.
+#
+#   The server certificate and key can be generated as follows:
+#
+#   openssl genrsa -des3 -out kea-proxy.key 4096
+#   openssl req -new -x509 -days 365 -key kea-proxy.key -out kea-proxy.crt
+#
+#   The CA certificate and key can be generated as follows:
+#
+#   openssl genrsa -des3 -out ca.key 4096
+#   openssl req -new -x509 -days 365 -key ca.key -out ca.crt
+#
+#
+#   The client certificate needs to be generated and signed:
+#
+#   openssl genrsa -des3 -out kea-client.key 4096
+#   openssl req -new -key kea-client.key -out kea-client.csr
+#   openssl x509 -req -days 365 -in kea-client.csr -CA ca.crt \
+#           -CAkey ca.key -set_serial 01 -out kea-client.crt
+#
+#   Note that the 'common name' value used when generating the client
+#   and the server certificates must differ from the value used
+#   for the CA certificate.
+#
+#   The client certificate must be deployed on the client system.
+#   In order to test the proxy configuration with 'curl' run
+#   command similar to the following:
+#
+#   curl -k --key kea-client.key --cert kea-client.crt -X POST \
+#        -H Content-Type:application/json -d '{ "command": "list-commands" }' \
+#         https://kea.example.org/kea
+#
+#
+#
+#   nginx configuration starts here.
+
+events {
+}
+
+http {
+    #   HTTPS server
+    server {
+        #     Use default HTTPS port.
+        listen 443 ssl;
+        #     Set server name.
+        server_name kea.example.org;
+
+        #   Server certificate and key.
+        ssl_certificate /path/to/kea-proxy.crt;
+        ssl_certificate_key /path/to/kea-proxy.key;
+
+        #   Certificate Authority. Client certificate must be signed by the CA.
+        ssl_client_certificate /path/to/ca.crt;
+
+        # Enable verification of the client certificate.
+        ssl_verify_client on;
+
+        # For URLs such as https://kea.example.org/kea, forward the
+        # requests to http://127.0.0.1:8080.
+        location /kea {
+            proxy_pass http://127.0.0.1:8080;
+        }
+    }
+}