Sommario

Introduzione

Problema

Soluzione

Genera un nuovo certificato con l'utilizzo del modello FND/NMS sul server CA di Windows

Controllare il campo SAN nel certificato generato

Esporta il certificato da importare nell'archivio chiavi FND

Crea il keystore FND da utilizzare con PNP

Attiva il keystore nuovo/modificato da utilizzare con FND

Introduzione

In questo documento viene descritto come generare ed esportare il certificato corretto dall'infrastruttura a chiave privata Windows (PKI) per l'utilizzo in combinazione con Plug and Play (PNP) in Field Network Director (FND).

Problema

Quando si tenta di utilizzare PNP per eseguire la distribuzione Zero Touch (ZTD) sulle nuove versioni di Cisco IOS® e Cisco IOS®-XE, il processo ha esito negativo e si verifica uno dei seguenti errori PNP:

Error while creating FND trustpoint on the device. errorCode: PnP Service Error 3341,

errorMessage: SSL Server ID check failed after cert-install

Error while creating FND trustpoint on the device. errorCode: PnP Service Error 3337,

errorMessage: Cant get PnP Hello Response after cert-install

Da qualche tempo, il codice PNP in Cisco IOS®/Cisco IOS®-XE richiede che il campo relativo al nome alternativo del soggetto (SAN) sia compilato nel certificato offerto dal server/controller PNP (in questo caso FND).

L'agente PNP Cisco IOS® controlla solo il campo SAN del certificato per l'identità del server. Non viene più controllato il campo Nome comune (CN).

Questa procedura è valida per le seguenti release:

- Cisco IOS® versione 15.2(6)E2 e successive

- Cisco IOS® versione 15.6(3)M4 e successive

- Cisco IOS® versione 15.7(3)M2 e successive

- Cisco IOS® XE Denali 16.3.6 e versioni successive

- Cisco IOS® XE Everest 16.5.3 e versioni successive

- Cisco IOS® Everest 16.6.3 e versioni successive

- Tutte le versioni Cisco IOS® da 16.7.1 e successive

Per ulteriori informazioni, visitare il sito Web all'indirizzo https://www.cisco.com/c/en/us/td/docs/solutions/Enterprise/Plug-and-Play/solution/guidexml/b_pnp-solution-guide.html#id_70663

Soluzione

La maggior parte delle guide e della documentazione di FND non menziona ancora la necessità di compilare il campo SAN.

Per creare ed esportare il certificato corretto da utilizzare con PNP e aggiungerlo all'archivio chiavi, eseguire la procedura seguente.

Genera un nuovo certificato con l'utilizzo del modello FND/NMS sul server CA di Windows

Selezionare Start > Esegui > mmc > File > Aggiungi/Rimuovi snap-in... > Certificati > Aggiungi > Account computer > Computer locale > OK e aprire lo snap-in MMC certificati.

Espandi Certificati (Computer locale) > Personale > Certificati

Fare clic con il pulsante destro del mouse su Certificati e selezionare All Tasks > Request New Certificate... come mostrato nell'immagine.

Fare clic su Avanti e selezionare Criteri di registrazione Active Directory come illustrato nell'immagine.

Fare clic su Avanti e selezionare il modello creato per NMS/FND-server (ripetere in seguito per TelePresence Server (TPS)) e fare clic sul collegamento Ulteriori informazioni come mostrato nell'immagine.

Nelle proprietà del certificato, fornire le seguenti informazioni:

Nome soggetto:

- Organizzazione: nome dell'organizzazione

- Nome comune: il nome di dominio completo (FQDN) del server FND (o TPS se applicabile)

Nome alternativo (campo SAN):

- Se si utilizza il DNS (Domain Name System) per contattare la parte PNP del server FND, aggiungere una voce DNS per il nome FQDN

- Se si utilizza IP per contattare la parte PNP del server FND, aggiungere una voce IPv4 per l'indirizzo IP

È consigliabile includere più valori SAN nel certificato, nel caso in cui i metodi di individuazione possano variare. Ad esempio, è possibile includere sia l'FQDN del controller che l'indirizzo IP (o indirizzo IP NAT) nel campo SAN. Se si includono entrambi, impostare l'FQDN come primo valore SAN, seguito dall'indirizzo IP.

Esempio di configurazione:

Al termine, fare clic su OK nella finestra Proprietà certificato, quindi su Registra per generare il certificato e su Fine al termine della generazione.

Controllare il campo SAN nel certificato generato

Per verificare se il certificato generato contiene le informazioni corrette, è possibile eseguire il controllo nel modo seguente:

Aprire lo snap-in certificati in Microsoft Management Console (MMC) ed espandere Certificati (Computer locale) > Personale > Certificati.

Fare doppio clic sul certificato generato e aprire la scheda Dettagli. Scorrere verso il basso per trovare il campo SAN come mostrato nell'immagine.

Esporta il certificato da importare nell'archivio chiavi FND

Prima di poter importare o sostituire il certificato esistente nel keystore FND, è necessario esportarlo in un file .pfd.

Nello snap-in certificati di MMC espandere Certificati (computer locale) > Personale > Certificati

Fare clic con il pulsante destro del mouse sul certificato generato e selezionare All Tasks > Export... come mostrato nell'immagine.

Fare clic su Next (Avanti), quindi selezionare per esportare la chiave privata come mostrato nell'immagine.

Selezionare questa opzione per includere tutti i certificati nel percorso di certificazione, come illustrato nell'immagine.

Fare clic su Avanti, selezionare una password per l'esportazione e salvare il file .pfx in una posizione nota.

Crea il keystore FND da utilizzare con PNP

Dopo aver esportato il certificato, è possibile creare il keystore necessario per FND.

Trasferire il file .pfx generato dalla fase precedente in modo sicuro al server FND (computer NMS (Network Management Systems) o all'host OAV), ad esempio utilizzando SCP.

Elencare il contenuto del file .pfx per conoscere l'alias generato automaticamente nell'esportazione:

[root@iot-fnd ~]# keytool -list -v -keystore nms.pfx -srcstoretype pkcs12 | grep Alias

Enter keystore password:  keystore

Alias name: le-fnd-8f0908aa-dc8d-4101-a526-93b4eaad9481

Creare un nuovo keystore con questo comando:

root@iot-fnd ~]# keytool -importkeystore -v -srckeystore nms.pfx -srcstoretype pkcs12 -destkeystore cgms_keystore_new -deststoretype jks -srcalias le-fnd-8f0908aa-dc8d-4101-a526-93b4eaad9481 -destalias cgms -destkeypass keystore

Importing keystore nms.pfx to cgms_keystore_new...

Enter destination keystore password:

Re-enter new password:

Enter source keystore password:

[Storing cgms_keystore_new]

Warning:

The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore cgms_keystore_new -destkeystore cgms_keystore_new -deststoretype pkcs12".

Nel comando, accertarsi di sostituire nms.pfx con il file corretto (esportato dalla CA di Windows) e che il valore srcalias corrisponda all'output del comando precedente (keytool -list).

Dopo averlo generato, convertirlo nel nuovo formato come suggerito:

[root@iot-fnd ~]# keytool -importkeystore -srckeystore cgms_keystore_new -destkeystore

cgms_keystore_new -deststoretype pkcs12

Enter source keystore password:

Entry for alias cgms successfully imported.

Import command completed:  1 entries successfully imported, 0 entries failed or cancelled

Warning:

Migrated "cgms_keystore_new" to Non JKS/JCEKS. The JKS keystore is backed up as

"cgms_keystore_new.old".

Aggiungere il certificato CA esportato in precedenza al keystore:

[root@iot-fnd ~]# keytool -import -trustcacerts -alias root -keystore cgms_keystore_

new -file rootca.cer

Enter keystore password:

Owner: CN=rootca, DC=fnd, DC=iot

Issuer: CN=rootca, DC=fnd, DC=iot

...

Trust this certificate? [no]:  yes

Certificate was added to keystore

Infine, aggiungere al keystore il certificato SUDI utilizzato per verificare l'identità tramite il numero di serie del dispositivo FAR quando si utilizza PNP.

Per un'installazione RPM, il certificato SUDI è fornito con i pacchetti ed è disponibile in: /opt/cgms/server/cgms/conf/ciscosudi/cisco-sudi-ca.pem

Per l'installazione degli OVA, copiare prima il certificato SUDI sull'host:

[root@iot-fnd ~]# docker cp fnd-container:/opt/cgms/server/cgms/conf/ciscosudi/cisco-sudi-ca.pem .

Quindi aggiungerlo al keystore come trusted con alias SUDI:

[root@iot-fnd ~]# keytool -import -trustcacerts -alias sudi -keystore cgms_keystore_new -file cisco-sudi-ca.pem

Enter keystore password:

Owner: CN=ACT2 SUDI CA, O=Cisco

Issuer: CN=Cisco Root CA 2048, O=Cisco Systems

...

Trust this certificate? [no]:  yes

Certificate was added to keystore

A questo punto, il keystore è pronto per essere utilizzato con FND.

Attiva il keystore nuovo/modificato da utilizzare con FND

Prima di utilizzare il keystore, sostituire la versione precedente e facoltativamente aggiornare la password nel file cgms.properties.

Eseguire innanzitutto un backup del keystore già esistente:

Per un'installazione RPM:

[root@fndnms ~]# cp /opt/cgms/server/cgms/conf/cgms_keystore cgms_keystore_backup

Per un impianto OAV:

[root@iot-fnd ~]# cp /opt/fnd/data/cgms_keystore cgms_keystore_backup

Sostituire quello esistente con quello nuovo:

Per un'installazione RPM:

[root@fndnms ~]# cp cgms_keystore_new /opt/cgms/server/cgms/conf/cgms_keystore

Per un impianto OAV:

[root@iot-fnd ~]# cp cgms_keystore_new /opt/fnd/data/cgms_keystore

Facoltativamente, aggiornare la password per il keystore nel file cgms.properties:

Generare innanzitutto una nuova stringa di password crittografata.

Per un'installazione RPM:

[root@fndnms ~]# /opt/cgms/bin/encryption_util.sh encrypt keystore

7jlXPniVpMvat+TrDWqh1w==

Per un impianto OAV:

[root@iot-fnd ~]# docker exec -it fnd-container /opt/cgms/bin/encryption_util.sh encrypt keystore

7jlXPniVpMvat+TrDWqh1w==

Assicurarsi di sostituire keystore con la password corretta per il keystore.

Modificare cgms.properties in /opt/cgms/server/cgms/conf/cgms.properties per l'installazione basata su RPM o /opt/fnd/data/cgms.properties per l'installazione basata su OVA in modo da includere la nuova password crittografata.

Riavviare infine FND per iniziare a utilizzare il nuovo keystore e la nuova password.