-
Notifications
You must be signed in to change notification settings - Fork 686
NSS Fedora CentOS RedHat
"Alguns sistemas operacionais são mantidos mais atualizados que outros." Isso é um fato!!
Normalmente as distribuições derivadas do DEBIAN utilizam OpenSSL por padrão e são mantidas bem atualizadas (com o DEBIAN e com certeza o UBUNTU). Outras utilizam o NSS por padrão nesse caso podem surgir problemas ao usar as chaves privadas criadas pela API. As chaves privadas criadas pela API em formato PEM, seguem o padrão PKCS#8 (mais seguro e atual) onde seu cabeçalho é:
"-----BEGIN PRIVATE KEY-----"
Já o NSS normalmente, isso se não estiver bem atualizado, irá rejeitar essa chave e somente aceitar as chaves no padrão RSA (menos seguro e mais antigo), onde o cabeçalho é:
"-----BEGIN RSA PRIVATE KEY-----"
Para converter o formato da chave privada do padrão PKCS#8 para RSA é necessário usar o OpenSSL na linha de comando.
openssl rsa -in certKEY.pem -out nova_priKEY.pem
Veja que não é apenas uma questão de cabeçalho é uma nova forma de codificação. NOTA: certKEY.pem é o certificado completo criado pela API em formato PEM. E a nova_priKEY.pem é a chave privada no padrão RSA que pode ser usado tanto pelo OpenSSL como pelo NSS.
Uma forma de fazer essa conversão em PHP é:
// Convert private key to RSA ("traditional" / "SSLeay" / "RSA PRIVATE KEY") format
exec('echo '.escapeshellarg($priKey).' | openssl rsa -outform PEM 2>/dev/null', $output, $return_var);
$traditionalSslKey = implode("\n", $output);