Desejo extrair a chave pública e privada do meu PKCS#12
arquivo para uso posterior em SSH-Public-Key-Authentication.
No momento, estou gerando chaves via ssh-keygen nas quais eu coloco .ssh/authorized_key
, respectivamente em algum lugar do lado do cliente.
No futuro, quero usar as chaves de um PKCS#12
contêiner, para extrair a chave pública primeiro PKCS#12
e depois colocá-las no .ssh/authorized_keys
arquivo. Existe alguma chance de fazer isso funcionar openssl
? As chaves são PKCS#12
compatíveis para autenticação de chave pública ssh?
openssl rsa -in privateKey.pem -out private.pem
-passout pass:
. Ele espera que o parâmetro esteja no formato pass: mypassword. stackoverflow.com/a/27497899/206277-nodes
exporta a chave corretamenteIsso é possível com um pouco de conversão de formato.
Para extrair a chave privada em um formato, o openssh pode usar:
Para converter a chave privada em uma chave pública:
Para extrair a chave pública em um formato, o openssh pode usar:
fonte
O OpenSSH não pode usar arquivos PKCS # 12 prontos para uso. Como outros sugeriram, você deve extrair a chave privada no formato PEM, que o leva da região do OpenSSL para o OpenSSH. Outras soluções mencionadas aqui não funcionam para mim. Eu uso o OS X 10.9 Mavericks (10.9.3 no momento) com utilitários "pré-empacotados" (OpenSSL 0.9.8y, OpenSSH 6.2p2).
Primeiro, extraia uma chave privada no formato PEM que será usada diretamente pelo OpenSSH:
Eu sugiro fortemente criptografar a chave privada com senha:
Obviamente, escrever uma senha em texto sem formatação na linha de comando também não é seguro; portanto, você deve excluir o último comando do histórico ou apenas garantir que ele não chegue lá. Conchas diferentes têm maneiras diferentes. Você pode prefixar seu comando com espaço para impedir que ele seja salvo no histórico no Bash e em muitos outros shells. Veja também como excluir o comando do histórico no Bash:
Como alternativa, você pode usar uma maneira diferente de passar uma senha de chave privada para o OpenSSL - consulte a documentação do OpenSSL para obter argumentos de frase secreta .
Em seguida, crie uma chave pública OpenSSH que possa ser adicionada ao arquivo allowed_keys:
fonte
| openssl rsa
serve?~/.ssh/id_rsa
) com algum "cruft" como Bag Attributes sem `| openssl rsa`. Eu acho que o OpenSSH e outros utilitários que usam arquivos de identidade podem lidar com esse problema (eu não tentei), mas eu sou simplesmente usado para fornecer apenas os dados necessários e nada mais, especialmente se houver algo relacionado à segurança.openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts
Solução 1:
Extrair P12 de jks
Extraia o PEM do P12 e edite o arquivo e pem do arquivo crt
Extrair chave de jks
Solução 2:
Extraia o PEM e o criptografadoPrivateKey para o arquivo txt ''
Descriptografar privateKey
fonte
echo hello
.Atualização: notei que minha resposta era apenas uma duplicata ruim de uma pergunta bem explicada em https: //unix.stackexchange.com / ... por BryKKan
Aqui está um extrato:
fonte
Tanto quanto eu sei, o PKCS # 12 é apenas um armazenamento de certificados / chaves públicas / privadas. Se você extraiu uma chave pública do arquivo PKCS # 12, o OpenSSH deve poder usá-la desde que tenha sido extraída no formato PEM . Você provavelmente já sabe que também precisa de uma chave privada correspondente (também no PEM ) para usá-la na autenticação de chave pública ssh.
fonte
A resposta aceita é o comando correto, só quero adicionar uma coisa adicional. Ao extrair a chave, se você deixar a senha do PEM (
"Enter PEM pass phrase:"
) em branco, a chave completa não será extraída, mas apenas alocalKeyID
extraída. Para obter a chave completa, você deve especificar uma senha PEM executando o seguinte comando.Observe que, quando se trata de Importar senha, você pode especificar a senha real
"Enter Import Password:"
ou deixá-la em branco:fonte