O certificado realmente contém uma cópia da chave pública (junto com um nome e uma assinatura da autoridade de certificação dizendo que o nome e a chave pública estão juntos). Normalmente, você não precisa lidar com a chave pública como um item separado se estiver usando um sistema baseado em certificado como o SMIME. Se quisesse, você poderia extrair uma cópia da chave pública do certificado usando o comando openssl x509
.
(Gostaria de saber se o Keychain está se recusando a importar a chave pública porque acha que já tem uma cópia, no certificado? As mensagens de erro do Keychain são geralmente muito vagas.)