> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/resources/it/other-resources/generate-a-self-signed-server-and-client-certificates-with-openssl.md).

# Generare certificati server e client autofirmati con OpenSSL

Questa è la guida definitiva per creare certificati sicuri, sia per i server sia per i client, utilizzando OpenSSL.

## Procedura

{% hint style="info" %}
Su Windows, si consiglia di utilizzare Chocolatey per installare OpenSSL e le sue dipendenze. La riga di comando è semplicemente `choco install openssl`.
{% endhint %}

### Creare l'autorità di certificazione radice (CA)

1. Generi la ***chiave privata della CA radice*** utilizzando la seguente riga di comando: `openssl ecparam -name prime256v1 -genkey -noout -out ca.key`. Ogni certificato deve avere una chiave privata corrispondente.
2. Generi il ***certificato della CA radice*** (Certificate Authority) utilizzando la seguente riga di comando: `openssl req -new -x509 -sha256 -key ca.key -out ca.crt`.
3. Inserisca le informazioni relative alla CA (il certificato verrà generato nel file ca.crt):

   ```
   Country Name (2 letter code) [AU]:US
   State or Province Name (full name) [Some-State]:CA
   Locality Name (eg, city) []:Toontown
   Organization Name (eg, company) [Internet Widgits Pty Ltd]:Acme inc.
   Organizational Unit Name (eg, section) []:Security
   Common Name (e.g. server FQDN or your name) []:acme.com
   Email Address []:security@acme.com
   ```
4. [Installi il certificato](/resources/it/other-resources/install-root-certificates.md).

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>Noti che il certificato deve essere installato sul server e su tutti i client per convalidare la legittimità dei certificati emessi. Alcuni browser presentano anche particolarità descritte nell'argomento.</p></div>

### Generare una richiesta di firma del certificato (CSR) – Server

{% hint style="warning" %}
Questi passaggi vengono solitamente eseguiti su ogni server o dispositivo per il quale si intende richiedere un certificato. Installi OpenSSL se non è presente. In alternativa, è possibile distribuire in modo sicuro la chiave privata al server di destinazione contemporaneamente al certificato. Si consiglia di utilizzare quest'ultimo approccio solo se deve aderire a distribuzioni tramite script per seguire le pratiche CloudOps/DevOps.
{% endhint %}

1. Generi la ***chiave privata del certificato del server*** utilizzando la seguente riga di comando: `openssl ecparam -name prime256v1 -genkey -noout -out server.key` (chiave privata a 256 bit nel file server.key). Ogni certificato deve avere una chiave privata corrispondente.
2. Generi la ***richiesta di firma del certificato*** (CSR) del server utilizzando la seguente riga di comando: `openssl req -new -sha256 -key server.key -out server.csr`. Questa richiesta verrà elaborata successivamente sul server della CA radice.
3. Inserisca le informazioni relative al certificato del server (deve essere specificato l'FQDN esatto utilizzato dal server). Ad esempio:

   ```
   Country Name (2 letter code) [AU]:US
   State or Province Name (full name) [Some-State]:CA
   Locality Name (eg, city) []:Toontown
   Organization Name (eg, company) [Internet Widgits Pty Ltd]:Acme inc.
   Organizational Unit Name (eg, section) []:Security
   Common Name (e.g. server FQDN or your name) []:vault.acme.com
   Email Address []:security@acme.com
   ```
4. Inserisca una password nel prompt; è essenziale utilizzare un gestore di password nonché un generatore di password complesse.
5. Trasferisca il file server.csr alla CA radice.
6. Elabori la richiesta seguendo le istruzioni riportate in ***Elaborare una richiesta di firma del certificato (CSR) sull'autorità di certificazione radice (CA)*** di seguito.
7. Distribuisca il certificato.

### Generare una richiesta di firma del certificato (CSR) – Client

Segua la stessa procedura utilizzata per il certificato del server, ma deve adattare alle sue esigenze due attributi delle informazioni inserite, ovvero il ***Common Name*** e l'***Email Address***.

```
Common Name (e.g. server FQDN or your name) []:John Doe
Email Address []:JohnDoe@acme.com
```

### Elaborare una richiesta di firma del certificato (CSR) sull'autorità di certificazione radice (CA)

Elabori la CSR generando un certificato.

Lo generi utilizzando la seguente riga di comando, dove il file server.csr è stato generato sul server: `openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 1000 -sha256`

In questo modo il certificato viene generato nel file server.crt. Deve distribuirlo al server sul quale ha generato la CSR.


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/resources/it/other-resources/generate-a-self-signed-server-and-client-certificates-with-openssl.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
