Il mio obiettivo era creare una CSR (richiesta di firma del certificato) utilizzando la mia chiave privata esistente da inviare ad Apple per generare un nuovo certificato di distribuzione per iPhone. Mi sono assicurato che i certificati fossero la categoria selezionata a sinistra. Ho provato a fare clic con il pulsante destro del mouse sulla mia chiave privata e fare clic su Richiedi un certificato da un'autorità di certificazione con chiave privata importata e riceverei il seguente errore quando provo a salvarlo.
L'elemento specificato non è stato trovato nel portachiavi.
Ho anche ricevuto lo stesso errore quando sono passato attraverso il menu file: Accesso portachiavi > Assistente certificato
Quello che ho raccolto da altre fonti Internet è che Keychain Access NON ti consente di creare un nuovo CSR se hai importato la chiave privata, solo se hai creato la chiave localmente dallo strumento.
Quello che ho finito per fare invece è stato esportare la chiave privata e utilizzare openssl per generare il nuovo CSR, che Apple ha accettato e ora fa riferimento alla nuova chiave privata importata.
Esportazione della chiave privata
- Fare clic con il tasto destro sulla chiave privata
- Esportare
- Assicurati che il formato di file p12 sia selezionato
- Salva
- Immettere una password (opzionale)
- Consenti l'accesso alla chiave di esportazione
- Apri Terminale e vai alla directory esportata
- Estrai la chiave dal contenitore p12
Fai attenzione perché la chiave privata .pem non è più protetta da password)
$ openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes
Enter Import Password: ********************
MAC verified OK
Creazione di una nuova CSR con chiave privata esportata
$ openssl req -out Certificates.csr -key Certificates.pem -new
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:.
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:John Doe Dev Key
Email Address []:thon@example.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Un paio di cose da notare:
- Accedere . quando vuoi che il campo sia vuoto, o l'impostazione predefinita includerà tutto ciò che è tra parentesi [].
- Common Name (CN) dovrebbe essere il nome della tua chiave privata (ad esempio, John Doe Dev Key)
- L'indirizzo e-mail dovrebbe essere il tuo indirizzo e-mail (ad es. Thon@example.com)
- Tutto il resto dovrebbe essere vuoto
Verifica la tua CSR
$ openssl req -noout -text -in Certificates.csr
Certificate Request:
Data:
Version: 0 (0x0)
Subject: CN=John Doe Dev Key/emailAddress=thon@example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
…
Exponent: 65537 (0x10001)
Attributes:
a0:00
Signature Algorithm: sha1WithRSAEncryption
…
Ciò di cui dovresti preoccuparti è nella riga dell'oggetto e verifica che sia corretto.
Ora tutto ciò che devi fare è inviarlo ad Apple, attendere che il certificato venga generato e quindi installarlo. Dopo aver importato il certificato appena generato, vedrai che farà riferimento al vecchio certificato che hai esportato sopra.