Meu objetivo era criar um CSR (solicitação de assinatura de certificado) usando minha chave privada existente para enviar à Apple para gerar um novo certificado de distribuição do iPhone. Verifiquei se Certificados era a categoria selecionada à esquerda. Tentei clicar com o botão direito em minha chave privada e clicar em Solicitar um certificado de uma autoridade de certificação com chave privada importada e obtive o seguinte erro ao tentar salvá-lo.
O item especificado não foi encontrado no chaveiro.
Também recebi o mesmo erro ao acessar o menu de arquivo: Keychain Access > Certificate Assistant
O que obtive de outras fontes da Internet é que o Keychain Access NÃO permite que você crie um novo CSR se você importou a chave privada, apenas se você criou a chave localmente a partir da ferramenta.
O que acabei fazendo, em vez disso, foi exportar a chave privada e usar o openssl para gerar o novo CSR, que a Apple aceitou e agora faz referência à nova chave privada importada.
Exportando a chave privada
- Clique com o botão direito na chave privada
- Exportar
- Certifique-se de que o formato de arquivo p12 esteja selecionado
- Salve
- Digite uma senha (opcional)
- Permitir acesso para exportar chave
- Abra o Terminal e vá para o diretório exportado
- Extrair chave do contêiner p12
Tenha cuidado, pois a chave privada .pem não é mais protegida por senha)
$ openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes
Enter Import Password: ********************
MAC verified OK
Criação de novo CSR com chave privada exportada
$ 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 []:
Algumas coisas a serem observadas:
- Entrar . quando você quiser que o campo fique em branco, ou o padrão incluirá o que estiver entre colchetes [].
- Nome comum (CN) deve ser o nome de sua chave privada (por exemplo, John Doe Dev Key)
- O endereço de e-mail deve ser o seu endereço de e-mail (por exemplo, thon@example.com)
- Todo o resto deve estar em branco
Verifique o seu 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
…
Você deve se preocupar com o assunto linha e verifique se está correto.
Agora tudo o que você precisa fazer é enviá-lo para a Apple, aguardar a geração do certificado e instalá-lo. Depois de importar o certificado recém-gerado, você verá que ele fará referência ao certificado antigo que você exportou acima.