> For the complete documentation index, see [llms.txt](https://docs.keeper.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.keeper.io/keeper-connection-manager/advanced-configuration/guacamole.properties/encrypted-json-configuration-properties.md).

# Encrypted JSON Configuration Properties

Advanced configuration properties for Encrypted JSON Auth

{% hint style="info" %}
The properties listed here are only applicable if encrypted JSON authentication is being used. Support for encrypted JSON authentication is[ installed using the `kcm-guacamole-auth-json` package](/keeper-connection-manager/using-keeper-connection-manager/dynamic-connections.md). If using[ the keeper/guacamole Docker image](/keeper-connection-manager/installation/docker-compose-install/keeper-guacamole.md), support for encrypted JSON authentication is instead configured using environment variables.
{% endhint %}

### Shared JSON secret key <a href="#id-.encryptedjsonconfigurationpropertiesv1.x-sharedjsonsecretkey" id="id-.encryptedjsonconfigurationpropertiesv1.x-sharedjsonsecretkey"></a>

A shared secret key is used by systems generating JSON data to encrypt and sign the JSON, and by the Guacamole server to verify and decrypt received data. **This key must be 128 bits, specified with 32 hexadecimal digits.**

| Property name     | Description                                                                                                                                                                                                                            |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `json-secret-key` | The 128-bit secret key that will be used to encrypt and sign JSON sent to Guacamole for authentication, formatted as 32 hexadecimal digits. Received JSON will not be accepted unless it has been encrypted and signed using this key. |

This key can be essentially anything as long as it is unpredictable. An easy way of generating such a key is to echo a passphrase through the "md5sum" utility. This is the technique OpenSSL itself uses to generate 128-bit keys from passphrases. For example:

```
$ echo -n "ThisIsATest" | md5sum
4c0b569e4c96df157eee1b65dd0e4d41 -
$
```

### Source network restrictions <a href="#id-.encryptedjsonconfigurationpropertiesv1.x-sourcenetworkrestrictions" id="id-.encryptedjsonconfigurationpropertiesv1.x-sourcenetworkrestrictions"></a>

By default, received encrypted JSON will be accepted as long as it is valid and properly signed with the secret key. This can be further restricted to accept encrypted JSON only from machines which match a comma-separated list of trusted IP addresses and/or CIDR subnets.

| Property name           | Description                                                                                                                                                                                                     |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `json-trusted-networks` | A comma-separated list of IP addresses and/or CIDR subnets which should be allowed to authenticate using encrypted JSON. By default, encrypted JSON is accepted without restriction from any address or subnet. |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.keeper.io/keeper-connection-manager/advanced-configuration/guacamole.properties/encrypted-json-configuration-properties.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
