Phase 1: CSR Generation
Phase 1: CSR Generation (OpenSSL CLI)
CSR is generated via OpenSSL on the CLI — NOT through the ISE GUI. This gives full control over the CN and SAN fields, which is critical because the CN must NOT contain a wildcard.
OpenSSL Config File
Create this config file before generating the CSR. The CN is a specific FQDN; the wildcard goes only in the SAN.
/tmp/ise-cert-renewal.cnfcat > /tmp/ise-cert-renewal.cnf << 'EOF'
[req]
default_bits = 4096
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[dn]
C = US
ST = California
L = Los Angeles
O = Childrens Hospital Los Angeles
OU = Information Security
CN = access2.ise.chla.org
[req_ext]
subjectAltName = @alt_names
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
[alt_names]
DNS.1 = *.ise.chla.org
# Add individual node FQDNs if required by CA or supplicant policy:
# DNS.2 = ise-pan.chla.org
# DNS.3 = ise-psn1.chla.org
# DNS.4 = ise-psn2.chla.org
EOF
Generate Private Key + CSR
# Generate private key (4096-bit RSA)
openssl genrsa -out /tmp/ise-cert-renewal.key 4096
# Generate CSR from config
openssl req -new \
-key /tmp/ise-cert-renewal.key \
-config /tmp/ise-cert-renewal.cnf \
-out /tmp/ise-cert-renewal.csr
Verify CSR Before Submitting
|
ALWAYS verify the CSR before sending to the CA. Confirm:
|
# Check subject and SAN
openssl req -in /tmp/ise-cert-renewal.csr -noout -subject -text \
| grep -E 'Subject:|DNS:'
# Full CSR dump
openssl req -in /tmp/ise-cert-renewal.csr -noout -text
Subject: C=US, ST=California, L=Los Angeles, O=Childrens Hospital Los Angeles, OU=Information Security, CN=access2.ise.chla.org
DNS:*.ise.chla.org
If you see CN=*.ise.chla.org — STOP. Regenerate. Windows will reject this cert for EAP.
Secure the Private Key
# Move key to d001 encrypted storage
cp /tmp/ise-cert-renewal.key data/d001/projects/ise-annual-cert-renewal/certs/ise-cert-renewal-2026.key
cp /tmp/ise-cert-renewal.csr data/d001/projects/ise-annual-cert-renewal/csr/ise-cert-renewal-2026.csr
# Encrypt the private key immediately
rm -f data/d001/projects/ise-annual-cert-renewal/certs/ise-cert-renewal-2026.key.age
encrypt-file data/d001/projects/ise-annual-cert-renewal/certs/ise-cert-renewal-2026.key
# Clean up /tmp
rm -f /tmp/ise-cert-renewal.key /tmp/ise-cert-renewal.csr /tmp/ise-cert-renewal.cnf
# Verify key is encrypted
ls -la data/d001/projects/ise-annual-cert-renewal/certs/*.age
The private key MUST be encrypted at rest. Never commit the plaintext .key file.
|
CA Submission Checklist
-
CSR verified: CN is specific FQDN, SAN has wildcard
-
Private key encrypted and stored in d001
-
CSR submitted to CA: method (email / portal / AD CS web enrollment)
-
Explicitly requested CA does NOT auto-add wildcard to CN — some CAs do this
-
Expected turnaround: days
-
Signed cert received: date