

 **Contribuisci a migliorare questa pagina** 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link **Modifica questa pagina** nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Proteggere i carichi di lavoro con i certificati Kubernetes
<a name="cert-signing"></a>

L’API Kubernetes Certificates automatizza il provisioning delle credenziali [X.509](https://www.itu.int/rec/T-REC-X.509). L’API presenta un’interfaccia a riga di comando per i client API Kubernetes che consente di richiedere e ottenere i [certificati X.509](https://kubernetes.io/docs/tasks/tls/managing-tls-in-a-cluster/) da parte di un’autorità di certificazione (CA). Puoi utilizzare la risorsa (CSR) `CertificateSigningRequest` per chiedere la firma del certificato da parte di un firmatario designato. Le richieste vengono approvate o negate prima della firma. Kubernetes supporta sia i firmatari integrati che personalizzati con comportamenti ben definiti. In questo modo, i client possono prevedere cosa succede alle loro CSR. Per ulteriori informazioni sulla firma dei certificati, consulta [signing requests](https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/).

Uno dei firmatari integrati è `kubernetes.io/legacy-unknown`. L’API `v1beta1` della risorsa CSR ha onorato questo firmatario “legacy-unknown”. Tuttavia, l’API `v1` stabile di CSR non consente l’impostazione di `signerName` su `kubernetes.io/legacy-unknown`.

Se desideri utilizzare l’autorità di certificazione (CA) di Amazon EKS per la generazione di certificati sul tuo cluster, devi utilizzare un firmatario personalizzato. Per utilizzare la versione `v1` dell’API CSR e generare un nuovo certificato, devi eseguire la migrazione di tutti i manifesti e i client dell’API esistenti. I certificati esistenti creati con l’API `v1beta1` esistente sono validi e funzionanti fino alla scadenza dei certificati. Questo include gli output seguenti:
+ Distribuzione di attendibilità: nessuna. Non esiste alcuna distribuzione di attendibilità o standard per questo firmatario in un cluster Kubernetes.
+ Argomenti consentiti: tutti
+ Estensioni x509 consentite: rispetta le estensioni di utilizzo delle chiavi e subjectAltName, scartando le altre.
+ Utilizzo delle chiavi consentite: non devono includere altri utilizzi oltre ["key encipherment", "digital signature", "server auth"]
**Nota**  
La firma dei certificati client non è supportata.
+ Scadenza/durata del certificato: 1 anno (predefinita e massima)
+ Bit CA consentito/non consentito: non consentito

## Generazione CSR di esempio con signerName
<a name="csr-example"></a>

Questa procedura mostra come generare un certificato di servizio per il nome DNS `myserver.default.svc` utilizzando `signerName: beta.eks.amazonaws.com/app-serving`. Utilizzala come guida per il tuo ambiente.

1. Esegui il comando `openssl genrsa -out myserver.key 2048` per generare una chiave privata RSA.

   ```
   openssl genrsa -out myserver.key 2048
   ```

1. Utilizza il comando seguente per generare una richiesta di certificato.

   ```
   openssl req -new -key myserver.key -out myserver.csr -subj "/CN=myserver.default.svc"
   ```

1. Genera un valore `base64` per la richiesta CSR e memorizzalo in una variabile da utilizzare in un passaggio successivo.

   ```
   base_64=$(cat myserver.csr | base64 -w 0 | tr -d "
   ")
   ```

1. Per creare un file denominato `mycsr.yaml`, esegui il comando di seguito. Nell’esempio seguente, `beta.eks.amazonaws.com/app-serving` è `signerName`.

   ```
   cat >mycsr.yaml <<EOF
   apiVersion: certificates.k8s.io/v1
   kind: CertificateSigningRequest
   metadata:
     name: myserver
   spec:
     request: $base_64
     signerName: beta.eks.amazonaws.com/app-serving
     usages:
       - digital signature
       - key encipherment
       - server auth
   EOF
   ```

1. Invia la CSR.

   ```
   kubectl apply -f mycsr.yaml
   ```

1. Approva il certificato di servizio.

   ```
   kubectl certificate approve myserver
   ```

1. Verifica l’emissione del certificato.

   ```
   kubectl get csr myserver
   ```

   Di seguito viene riportato un output di esempio.

   ```
   NAME       AGE     SIGNERNAME                           REQUESTOR          CONDITION
   myserver   3m20s   beta.eks.amazonaws.com/app-serving   kubernetes-admin   Approved,Issued
   ```

1. Esporta il certificato emesso.

   ```
   kubectl get csr myserver -o jsonpath='{.status.certificate}'| base64 -d > myserver.crt
   ```