É possível gerar chave RSA sem frase secreta?

84

Estou trabalhando com Apache2 e Passenger para um projeto Rails. Gostaria de criar um certificado SSL autoassinado para fins de teste.

sudo openssl rsa -des3 -in server.key -out server.key.new

Quando insiro o comando acima, ele diz

writing RSA key
Enter PEM pass phrase:

Se eu não inserir o phrse pass, estou recebendo o erro abaixo

unable to write key
3079317228:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:Yo
u must type in 4 to 1024 characters
3079317228:error:0906406D:PEM routines:PEM_def_callback:problems getting passwor
d:pem_lib.c:111:
3079317228:error:0906906F:PEM routines:PEM_ASN1_write_bio:read key:pem_lib.c:382

É possível gerar uma chave RSA sem fornecer pass phrase, pois não tenho certeza de como o /etc/init.d/httpdscript iniciará o servidor HTTP sem intervenção humana (por exemplo, se eu fornecer uma frase secreta de 4 caracteres, ele deverá fornecer isso ao iniciar o servidor HTTP Apache )

diya
fonte
6
Sua linha de comando informa opensslpara criptografar uma chave existente. Isso soa como algo diferente do que você deseja.
David Schwartz
O Apache httpd pode ser configurado para obter a senha das chaves privadas de maneira não interativa; consulte o documento para mod_ssl ou, em muitos casos, comentários nos arquivos de configuração fornecidos / empacotados. No entanto, isso geralmente não é mais seguro do que deixar a chave privada sem criptografia, o que é mais simples.
Dave_thompson_085

Respostas:

88

Se você estiver gerando um certificado autoassinado, poderá executar a chave e o certificado em um comando da seguinte maneira:

openssl req  -nodes -new -x509  -keyout server.key -out server.cert

Ah, e o que @MadHatter disse em sua resposta sobre a omissão da -des3bandeira.

Tom H
fonte
14
A diretiva de nós é o motivo de eu estar aqui. (Sem criptografia DES da chave privada)
jorfus
39

Deixe de fora o -des3sinalizador, que é uma instrução para openssl para criptografar server.key.new (que, aliás, não é uma nova chave - é exatamente o mesmo que server.key, apenas com a senha alterada / removida) .

Chapeleiro Louco
fonte
21

O openssl reqcomando da resposta de @Tom H está correto para criar um certificado autoassinado em server.certincl. uma chave privada RSA sem senha em server.key:

openssl req -nodes -new -x509 -keyout server.key -out server.cert

Aqui está como isso funciona. Omitir -des3como na resposta de @MadHatter não é suficiente neste caso para criar uma chave privada sem senha. Ele é suficiente para este fim no openssl rsacomando ( "converter uma chave privada") referido por @MadHatter eo openssl genrsacomando ( "criar uma chave privada"). Apenas não para o openssl reqcomando aqui. Além disso, precisamos -nodes("Sem criptografia DES, por server.keyfavor!").

tanius
fonte
17

Use o -nodesparâmetro, se esta opção for especificada, a chave privada não será criptografada, por exemplo:

openssl \
    req \
    -nodes \
    -newkey rsa:2048 \
    -keyout www.example.com.key \
    -out www.example.com.csr \
    -subj "/C=DE/ST=NRW/L=Berlin/O=My Inc/OU=DevOps/CN=www.example.com/[email protected]"
panticz.de
fonte
7

Basta executá-lo novamente através do openssl

primeiro gere a chave com a senha

então openssl rsa -in server.key -out server.key

darethas
fonte
Isso não está funcionando no ubuntu 16.04
sweetfa
3
Fiz uma votação baixa porque esta resposta não foi solicitada, também o comando requer uma entrada e não gera uma chave.
Don
O usuário já demonstrou que sabe gerar uma chave. Essa resposta se baseia nesse conhecimento, e sugiro pegar a chave recém-gerada e passá-la novamente através openssl do objetivo de alcançar o objetivo do que foi solicitado: gerar uma chave sem uma frase secreta.
darethas
Funciona para mim, opensslno Windows 10 do GitBash. Obrigado pela informação.
Verde
0

Use o próximo comando para gerar um arquivo de chave privada sem senha e sem criptografia . O último parâmetro é o tamanho da chave privada.

openssl genrsa -out my-passless-private.key 4096
nix
fonte
1
Isso NÃO é sem senha. É completamente e totalmente com senha.
Dave_thompson_085
Eu estava experimentando a posição dos parâmetros. Agora está tudo bem. Mudei os locais dos dois últimos parâmetros e testei o comando.
Nix
Agora, ele produz um arquivo não criptografado . Opções após o (apenas) argumento posicional são ignoradas. Veja o arquivo; não é criptografado. Substitua 4096 -des3por 4096 -sillywombate ele ainda funciona e produz o mesmo formato, ainda não criptografado (mas com um valor-chave diferente, é claro). Não há como ter um arquivo de chave privada criptografada sem senha e as soluções corretas para um arquivo não criptografado sem senha foram fornecidas seis anos atrás.
Dave_thompson_085
Você está certo. @ dave_thompson_085. O último parâmetro não afeta o comando. Eu atualizei minha resposta. Ele não gera nenhum arquivo de chave privada codificado em base64 e não protegido por senha.
Nix