Skip to content

NSS Fedora CentOS RedHat

Roberto L. Machado edited this page May 26, 2015 · 2 revisions

"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);