De documentatie van dit product is waar mogelijk geschreven met inclusief taalgebruik. Inclusief taalgebruik wordt in deze documentatie gedefinieerd als taal die geen discriminatie op basis van leeftijd, handicap, gender, etniciteit, seksuele oriëntatie, sociaaleconomische status of combinaties hiervan weerspiegelt. In deze documentatie kunnen uitzonderingen voorkomen vanwege bewoordingen die in de gebruikersinterfaces van de productsoftware zijn gecodeerd, die op het taalgebruik in de RFP-documentatie zijn gebaseerd of die worden gebruikt in een product van een externe partij waarnaar wordt verwezen. Lees meer over hoe Cisco gebruikmaakt van inclusief taalgebruik.
Cisco heeft dit document vertaald via een combinatie van machine- en menselijke technologie om onze gebruikers wereldwijd ondersteuningscontent te bieden in hun eigen taal. Houd er rekening mee dat zelfs de beste machinevertaling niet net zo nauwkeurig is als die van een professionele vertaler. Cisco Systems, Inc. is niet aansprakelijk voor de nauwkeurigheid van deze vertalingen en raadt aan altijd het oorspronkelijke Engelstalige document (link) te raadplegen.
In dit document wordt een methode beschreven voor het maken van een CA op meerdere niveaus om certificaten voor algemene doeleinden te maken die compatibel zijn met Cisco IOS® XE-apparaten.
Cisco raadt kennis van de volgende onderwerpen aan:
De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.
Het doel is om een lokale certificeringsinstantie op twee niveaus te maken met een basiscertificeringsinstantie en een tussenliggende certificeringsinstantie om apparaatcertificaten te ondertekenen. Zodra de certificaten zijn ondertekend, worden ze geïmporteerd naar het Cisco IOS XE-apparaat.
Opmerking: Dit document gebruikt Linux-specifieke opdrachten om bestanden te maken en te ordenen. De opdrachten worden uitgelegd zodat u dezelfde actie kunt uitvoeren op andere besturingssystemen waar OpenSSL beschikbaar is.
Maak een tekstbestand met de naam openssl.conf aan vanuit uw huidige werkmap op het systeem waarop OpenSSL is geïnstalleerd. Kopieer en plak deze regels om OpenSSL te voorzien van de nodige configuraties voor certificaatondertekening. U kunt dit bestand bewerken om aan uw behoeften te voldoen.
[ ca ]
default_ca = IntermCA
[ RootCA ]
dir = ./RootCA
certs = $dir/RootCA.db.certs
crl_dir = $dir/RootCA.db.crl
database = $dir/RootCA.db.index
unique_subject = yes
new_certs_dir = $dir/RootCA.db.certs
certificate = $dir/RootCA.crt
serial = $dir/RootCA.db.serial
#crlnumber = $dir/RootCA.db.crlserial
private_key = $dir/RootCA.key
RANDFILE = $dir/RootCA.db.rand
name_opt = ca_default
cert_opt = ca_default
############################# Modify default days for certificates signed by Root CA (Intermediate certs only) ##################################
default_days = 360
default_md = sha256
preserve = no
policy = optional_policy
[ IntermCA ]
dir = ./IntermCA
certs = $dir/IntermCA.db.certs
crl_dir = $dir/IntermCA.db.crl
database = $dir/IntermCA.db.index
unique_subject = yes
new_certs_dir = $dir/IntermCA.db.certs
certificate = $dir/IntermCA.crt
serial = $dir/IntermCA.db.serial
private_key = $dir/IntermCA.key
RANDFILE = $dir/IntermCA.db.rand
name_opt = ca_default
cert_opt = ca_default
# Certificate field options
############################# Modify default days for certificates signed by Intermediate CA cert (device certificates)##################################
default_days = 1000
#default_crl_days = 1000
default_md = sha256
# use public key default MD
preserve = no
policy = optional_policy
[ optional_policy ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
[ req ]
default_bits = 2048
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extentions to add to the signed cert
string_mask = nombstr
[ req_distinguished_name ]
countryName = Country Name
countryName_default = MX
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or province
stateOrProvinceName_default = CDMX
localityName = Locality
localityName_default = CDMX
organizationName = Organization name
organizationName_default = Cisco lab
organizationalUnitName = Organizational unit
organizationalUnitName_default = Cisco Wireless
commonName = Common name
commonName_max = 64
[ req_attributes ]
# challengePassword = A challenge password
# challengePassword_min = 4
# challengePassword_max = 20
#This section contains the extensions used for the Intermediate CA certificate
[ v3_ca ]
# Extensions for a typical CA
basicConstraints = CA:true
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
subjectAltName = @Intermediate_alt_names
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
[ crl_ext ]
# CRL extensions.
#authorityKeyIdentifier=keyid:always,issuer:always
#DEFINE HERE SANS/IPs NEEDED for Intermediate CA device certificates
[Intermediate_alt_names]
DNS.1 = Intermediate.example.com
DNS.2 = Intermediate2.example.com
#Section for endpoint certificate CSR generation
[ endpoint_req_ext ]
subjectAltName = _alt_names
#Section for endpoint certificate sign by CA
[ Endpoint ]
basicConstraints=CA:FALSE
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
#Change the key usage according to the certificate usage needs
extendedKeyUsage = clientAuth
subjectAltName = _alt_names
#Define here SANS/IPs needed for Endpoint certificates
[endpoint_alt_names]
DNS.1 = Endpoint.example.com
DNS.2 = Endpoint2.example.com
#Section for IOS-XE device certificate CSR generation
[ device_req_ext ]
subjectAltName = @IOS_alt_names
#Section for IOS-XE certificate sign by CA
[ IOS_cert ]
basicConstraints=CA:FALSE
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
#Change the key usage according to the certificate usage needs
extendedKeyUsage = clientAuth , serverAuth
subjectAltName = @IOS_alt_names
#Define here SANS/IPs needed for IOS-XE certificates
[IOS_alt_names]
DNS.1 = IOSXE.example.com
DNS.2 = IOSXE2.example.com
Maak een map aan in de huidige directory met de naam RootCA. Maak er nog 3 mappen in met de naam RootCA.db.tmp, RootCA.db.certs en RootCA.db.crl.
mkdir RootCA
mkdir RootCA/RootCA.db.tmp
mkdir RootCA/RootCA.db.certs
mkdir RootCA/RootCA.db.crl
Maak een bestand met de naam RootCA.db.serial in de map RootCA. Dit bestand moet de initiële waarde voor het serienummer van het certificaat bevatten. 01 is de waarde die in dit geval is geselecteerd.
Maak een bestand met de naam RootCA.db.crlserial in de map RootCA. Dit bestand moet de initiële waarde bevatten voor het nummer van de lijst voor het intrekken van certificaten. 01 is de waarde die in dit geval is geselecteerd.
echo 01 > RootCA/RootCA.db.serial
echo 01 > RootCA/RootCA.db.crlserial
Maak een bestand met de naam RootCA.db.index in de map RootCA.
touch RootCA/RootCA.db.index
Maak een bestand met de naam RootCA.db.rand in de RootCA-map en vul het in met 8192 willekeurige bytes om te dienen als het zaad van de interne generator voor willekeurige getallen.
openssl rand -out RootCA/RootCA.db.rand 8192
Maak een map aan in de huidige directory met de naam IntermCA. Maak er nog 3 mappen in met de naam IntermCA.db.tmp, IntermCA.db.certs en IntermCA.db.crl.
mkdir IntermCA
mkdir IntermCA/IntermCA.db.tmp
mkdir IntermCA/IntermCA.db.certs
mkdir IntermCA/IntermCA.db.crl
Maak een bestand met de naam IntermCA.db.serial in de map IntermCA. Dit bestand moet de initiële waarde voor het serienummer van het certificaat bevatten. 01 is de waarde die in dit geval is geselecteerd.
Maak een bestand met de naam IntermCA.db.crlserial in de map IntermCA. Dit bestand moet de initiële waarde bevatten voor het nummer van de lijst voor het intrekken van certificaten. 01 is de waarde die in dit geval is geselecteerd.
echo 01 > IntermCA/IntermCA.db.serial
echo 01 > IntermCA/IntermCA.db.crlserial
Maak een bestand met de naam IntermCA.db.index in de map IntermCA.
Maak een bestand met de naam IntermCA.db.rand in de IntermCA-map en vul het in met 8192 willekeurige bytes om te dienen als het zaad van de interne generator voor willekeurige getallen.
touch IntermCA/IntermCA.db.index
Maak een bestand met de naam IntermCA.db.rand in de IntermCA-map en vul het in met 8192 willekeurige bytes om te dienen als het zaad van de interne generator voor willekeurige getallen.
openssl rand -out IntermCA/IntermCA.db.rand 8192
Dit is de bestandsstructuur na het maken van alle initiële Root- en Intermediate CA-bestanden.
mariomed@CSCO-W-PF320YP6:/mnt/c/Users/mariomed/radsecfiles1$ tree
.
├── IntermCA
│ ├── IntermCA.db.certs
│ ├── IntermCA.db.crl
│ ├── IntermCA.db.crlserial
│ ├── IntermCA.db.index
│ ├── IntermCA.db.rand
│ ├── IntermCA.db.serial
│ └── IntermCA.db.tmp
├── RootCA
│ ├── RootCA.db.certs
│ ├── RootCA.db.crl
│ ├── RootCA.db.crlserial
│ ├── RootCA.db.index
│ ├── RootCA.db.rand
│ ├── RootCA.db.serial
│ └── RootCA.db.tmp
└── openssl.cnf
Voer deze opdracht uit om de privésleutel voor de basiscertificeringsinstantie te maken.
openssl genrsa -des3 -out ./RootCA/RootCA.key 4096
Let op: OpenSSL vereist dat u een wachtwoordzin opgeeft wanneer een sleutel wordt gegenereerd. Houd de wachtwoordzin geheim en de gegenereerde privésleutel op een veilige locatie. Iedereen met toegang tot het kan certificaten uitgeven als uw Root CA.
Maak het root CA self signed certificaat met behulp van de opdrachtreq
op openSSL. De -x509
vlag maakt intern een certificaatondertekeningsverzoek (CSR) aan en ondertekent deze automatisch zelf. Bewerk de parameter-days
en alternatieve naam van het onderwerp. In de perminal wordt u gevraagd om een algemene naam op te geven. Zorg ervoor dat de algemene naam die u invoert overeenkomt met de alternatieve naam van het onderwerp (SAN).
openssl req -new -key ./RootCA/RootCA.key -out ./RootCA/RootCA.crt -config openssl.cnf -x509 -days 3650 -addext "subjectAltName = DNS:RootCA"
OpenSSL Distinguished Name Interactieve prompt
Het gegenereerde bestand heet RootCA.crt en bevindt zich in de map RootCA. Dit bestand is het Root CA-certificaat.
Maak een map om het ondertekende CA-certificaat Intermediate op te slaan in de hoofdmap.
mkdir ./RootCA/RootCA.db.certs/IntermCA
Maak een privésleutel voor een tussentijds certificaat.
openssl genrsa -des3 -out ./RootCA/RootCA.db.certs/IntermCA/IntermCA.key 4096
Let op: OpenSSL vereist dat u een wachtwoordzin opgeeft wanneer een sleutel wordt gegenereerd. Houd de wachtwoordzin geheim en de gegenereerde privésleutel op een veilige locatie. Iedereen die er toegang toe heeft, kan certificaten uitgeven als uw intermediaire CA.
Tussenliggende CA-certificaatondertekeningsaanvraag maken. De terminal vraagt u om de certificaatgegevens in te voeren.
openssl req -new -key ./RootCA/RootCA.db.certs/IntermCA/IntermCA.key -out ./RootCA/RootCA.db.certs/IntermCA/IntermCA.csr -config openssl.cnf
Onderteken tussenliggende CSR met de RootCA-sectie van het openssl.cnf-bestand.
openssl ca -config openssl.cnf -name RootCA -extensions v3_ca -out ./RootCA/RootCA.db.certs/IntermCA/IntermCA.crt -infiles ./RootCA/RootCA.db.certs/IntermCA/IntermCA.csr
Het gegenereerde bestand heet IntermCA.crt en bevindt zich in de map RootCA. Dit bestand is het Root CA-certificaat.
Verplaats het tussenliggende certificaat en de sleutel naar de eigen map die u hebt gemaakt als onderdeel van de eerste bestanden voor de tussenliggende CA.
cp ./RootCA/RootCA.db.certs/IntermCA/IntermCA.crt ./RootCA/RootCA.db.certs/IntermCA/IntermCA.key ./IntermCA/
Dit is de bestandsstructuur na het maken van de private key en certificaten voor zowel de initiële Root als de Intermediate CA's.
mariomed@CSCO-W-PF320YP6:/mnt/c/Users/mariomed/radsecfiles$ tree
.
├── IntermCA
│ ├── IntermCA.crt <------Intermediate CA certficate
│ ├── IntermCA.db.certs
│ ├── IntermCA.db.crl
│ ├── IntermCA.db.crlserial
│ ├── IntermCA.db.index
│ ├── IntermCA.db.rand
│ ├── IntermCA.db.serial
│ ├── IntermCA.db.tmp
│ └── IntermCA.key <------Intermediate CA private key
├── RootCA
│ ├── RootCA.crt <------Root CA certficate
│ ├── RootCA.db.certs
│ │ ├── 01.pem
│ │ └── IntermCA
│ │ ├── IntermCA.crt
│ │ ├── IntermCA.csr
│ │ └── IntermCA.key
│ ├── RootCA.db.crl
│ ├── RootCA.db.crlserial
│ ├── RootCA.db.index
│ ├── RootCA.db.index.attr
│ ├── RootCA.db.index.old
│ ├── RootCA.db.rand
│ ├── RootCA.db.serial
│ ├── RootCA.db.serial.old
│ ├── RootCA.db.tmp
│ └── RootCA.key <------Root CA private key
└── openssl.cnf
Maak een nieuwe map om de Cisco IOS XE-apparaatcertificaten op te slaan.
mkdir ./IntermCA/IntermCA.db.certs/IOSdevice
Maak de persoonlijke sleutel IOSdevice.key en het apparaat CSR IOSdevice.csr. Gebruik sectie device_req_ext om de SAN's onder die sectie aan de CSR toe te voegen.
openssl req -newkey rsa:4096 -sha256 -keyout ./IntermCA/IntermCA.db.certs/IOSdevice/IOSdevice.key -nodes -config openssl.cnf -out ./IntermCA/IntermCA.db.certs/IOSdevice/IOSdevice.csr -reqexts device_req_ext
Wijzig het bestand opnessl.cnf [IOS_alt_names] zodat de algemene naam die u opgeeft op de CSR overeenkomt met de SAN.
#Define here SANS/IPs needed for IOS-XE certificates
[IOS_alt_names]
DNS.1 = IOSXE.example.com
DNS.2 = IOSXE2.example.com
Onderteken IOS XE-apparaat CSR met tussenliggende CA IntermCA-sectie. Gebruik -config
om naar het openSSL-configuratiebestand te verwijzen en -extensions
naar de sectie IOS_cert. Hierdoor blijft het SAN op het ondertekende certificaat staan.
openssl ca -config openssl.cnf -extensions IOS_cert -name IntermCA -out ./IntermCA/IntermCA.db.certs/IOSdevice/IOSdevice.crt -infiles ./IntermCA/IntermCA.db.certs/IOSdevice/IOSdevice.csr
Na deze stap hebt u een geldig certificaat voor het IOS XE-apparaat gemaakt met de naam IOSdevice.crt met de bijbehorende privésleutel IOSdevice.key.
Op dit punt hebt u een lokale CA geïmplementeerd en één certificaat voor uw IOS XE-apparaat uitgegeven. U kunt deze CA ook gebruiken om identiteitscertificaten voor eindpunten te genereren. Deze certificaten zijn ook geldig, bijvoorbeeld voor het uitvoeren van lokale EAP-verificatie op 9800 draadloze LAN-controllers of zelfs dot1x-verificatie met RADIUS-servers. Deze sectie helpt u bij het genereren van een eindpuntcertificaat.
Maak een map aan om de eindpuntcertificaten op te slaan.
mkdir ./IntermCA/IntermCA.db.certs/Endpoint
Wijzig het bestand openSSL.cnf [ endpoint_alt_names ], zodat de algemene naam die u opgeeft op de CSR overeenkomt met de SAN.
#Define here SANS/IPs needed for Endpoint certificates
[endpoint_alt_names]
DNS.1 = Endpoint.example.com
DNS.2 = Endpoint2.example.com
Maak de private key voor het eindpunt en de WLC CSR met behulp van de sectie endpoint_req_ext voor SAN's.
openssl req -newkey rsa:2048 -keyout ./IntermCA/IntermCA.db.certs/Endpoint/Endpoint.key -nodes -config openssl.cnf -out ./IntermCA/IntermCA.db.certs/Endpoint/Endpoint.csr -reqexts endpoint_req_ext
Onderteken het certificaat voor het eindpuntapparaat.
openssl ca -config openssl.cnf -extensions Endpoint -name IntermCA -out ./IntermCA/IntermCA.db.certs/Endpoint/Endpoint.crt -infiles ./IntermCA/IntermCA.db.certs/Endpoint/Endpoint.csr
Maak een bestand met de basiscertificeringsinstantie en de tussenliggende certificeringsinstantie in hetzelfde bestand en sla het op in de map ./IntermCA/IntermCA.db.certs/WLC/ met de naam certfile.crt zoals vereist voor het importeren naar het Cisco IOS XE-apparaat.
cat ./RootCA/RootCA.crt ./IntermCA/IntermCA.crt > ./IntermCA/IntermCA.db.certs/IOSdevice/certfile.crt
De WLC uit de 9800-reeks gebruikt verschillende opdrachten om het pfx-bestand te maken voor het importeren van certificaten. Als u uw pfx-bestand wilt maken, voert u een van deze opdrachten uit volgens de Cisco IOS XE-versie.
Raadpleeg MVO-certificaten genereren en downloaden op Catalyst 9800 WLC's voor gedetailleerde informatie over het proces voor het importeren van certificaten
Voor versies ouder dan 17.12.1:
openssl pkcs12 -export -macalg sha1 -legacy -descert -out ./IntermCA/IntermCA.db.certs/IOSdevice/IOSdevice.pfx -inkey ./IntermCA/IntermCA.db.certs/IOSdevice/IOSdevice.key -in ./IntermCA/IntermCA.db.certs/IOSdevice/IOSdevice.crt -certfile ./IntermCA/IntermCA.db.certs/IOSdevice/certfile.crt
Voor versie 17.12.1 of later:
openssl pkcs12 -export -out ./IntermCA/IntermCA.db.certs/IOSdevice/IOSdevice.pfx -inkey ./IntermCA/IntermCA.db.certs/IOSdevice/IOSdevice.key -in ./IntermCA/IntermCA.db.certs/IOSdevice/IOSdevice.crt -certfile ./IntermCA/IntermCA.db.certs/IOSdevice/certfile.crt
Importeer het IOSdevice.pfx-certificaat naar het IOS XE-apparaat van Cisco:
WLC# configure terminal
WLC(config)#crypto pki import pkcs12 [tftp:/// | ftp:/// | http:/// | bootflash:] password
Opmerking: zorg ervoor dat de CA-certificaten die voor deze handleiding zijn gemaakt, worden vertrouwd door de apparaten die het apparaatcertificaat moeten verifiëren. Als het apparaatcertificaat bijvoorbeeld wordt gebruikt voor webbeheerdoeleinden op het Cisco IOS XE-apparaat, moet elke computer of browser die toegang heeft tot het beheerdersportaal de CA-certificaten in de vertrouwensopslag hebben.
Schakel de controle voor het intrekken van certificaten uit omdat er geen online lijst voor het intrekken van certificaten is die het Cisco IOS XE-apparaat kan controleren op de CA die u hebt geïmplementeerd.
U moet het uitschakelen op alle vertrouwenspunten die deel uitmaken van het verificatiepad. De root CA trustpoint heeft dezelfde naam als de Intermediate/Device trustpoint met de string -rrr1 toegevoegd aan het einde.
9800#configure terminal
9800(config)#crypto pki trustpoint IOSdevice.pfx
9800(config)#revocation-check none
9800(config)#exit
9800(config)#crypto pki trustpoint IOSdevice.pfx-rrr1
9800(config)#revocation-check none
9800(config)#exit
Om de certificaatinformatie voor de gemaakte certificaten te verifiëren, voert u op de Linux-terminal de volgende opdracht uit:
openssl x509 -in -text -noout
Het toont de volledige informatie van het certificaat.
Cisco IOS XE-apparaatcertificaatinformatie zoals weergegeven door OpenSSL
Certificaatgegevens controleren op het Cisco IOS XE-apparaat.
Command druktshow crypto pki certificates verbose
de certificaatinformatie van alle beschikbare certificaten op het apparaat af.
9800#show crypto pki certificates verbose
CA Certificate <------Type of certificate
Status: Available
Version: 3
Certificate Serial Number (hex): 2A352E27C69021ECE1AA61751CA1F233E0636FB1
Certificate Usage: General Purpose
Issuer: <-------------DN for issuer
cn=RootCA
ou=Cisco Wireless
o=Cisco lab
l=CDMX
st=CDMX
c=MX
Subject: <--------------DN for subject
cn=RootCA
ou=Cisco Wireless
o=Cisco lab
l=CDMX
st=CDMX
c=MX
Validity Date: <--------Validity date
start date: 14:54:02 Central Jul 22 2024
end date: 14:54:02 Central Jul 20 2034
Subject Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit) <--------------Key size
Signature Algorithm: SHA256 with RSA Encryption
Fingerprint MD5: 432021B5 B4BE15F5 A537385C 4FAB9A94
Fingerprint SHA1: 86D18427 BE619A2A 6C20C314 9EDAAEB2 6B4DFE87
X509v3 extensions:
X509v3 Subject Key ID: 57DEEBD8 3214CA05 176F0CD6 6C842EBC 9ABFF7D8
X509v3 Basic Constraints:
CA: TRUE
X509v3 Subject Alternative Name:
RootCA <------------SANs
IP Address :
OtherNames :
X509v3 Authority Key ID: 57DEEBD8 3214CA05 176F0CD6 6C842EBC 9ABFF7D8
Authority Info Access:
Cert install time: 16:42:09 Central Jul 22 2024
Associated Trustpoints: WLC.pfx-rrr1 <----------Associated trustpoint
Storage: nvram:RootCA#6FB1CA.cer
Wanneer de certificaten worden geïmporteerd in Cisco IOS XE, is de herroepingscontrole van de nieuw gemaakte trustpoints ingeschakeld. Als een certificaat wordt aangeboden aan het apparaat dat de geïmporteerde vertrouwenspunten voor certificaten moet gebruiken voor validatie, zoekt het apparaat naar een niet-bestaande lijst voor certificaatintrekkingen en mislukt. Het bericht wordt afgedrukt op de terminal.
Jul 17 21:50:39.068: %PKI-3-CRL_FETCH_FAIL: CRL fetch for trustpoint WLC1.pfx failed
Reason : Enrollment URL not configured.
Zorg ervoor dat elk trustpoint in het verificatiepad voor de certificaten de opdrachtrevocation-check none
bevat.
Revisie | Publicatiedatum | Opmerkingen |
---|---|---|
1.0 |
14-Oct-2024
|
Eerste vrijgave |