Est-il possible de générer une clé RSA sans phrase de passe?

84

Je travaille avec Apache2 et Passenger for a Rails. J'aimerais créer un certificat SSL auto-signé à des fins de test.

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

Quand j'entre la commande ci-dessus, il est dit

writing RSA key
Enter PEM pass phrase:

Si je ne saisis pas la phrase de passe, j'obtiens l'erreur ci-dessous.

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

Est-il possible de générer une clé RSA sans donner pass phrase, étant donné que je ne sais pas comment le /etc/init.d/httpdscript démarrera le serveur HTTP sans intervention humaine (par exemple, si je donne une phrase secrète à 4 caractères, il s'attend à ce que je le fournisse lors du démarrage du serveur HTTP Apache ).

diya
la source
6
Votre ligne de commande opensslvous invite à chiffrer une clé existante. Cela ressemble à autre chose que ce que vous voulez.
David Schwartz
Apache httpd peut être configuré pour obtenir la / les phrase (s) secrète (s) de clé privée de manière non interactive. voir la doc de mod_ssl, ou dans de nombreux cas, des commentaires dans les fichiers de configuration fournis / empaquetés. Cependant, cela n’est généralement pas plus sûr que de laisser la clé privée non chiffrée, ce qui est plus simple.
dave_thompson_085

Réponses:

88

Si vous générez un certificat auto-signé, vous pouvez utiliser la clé et le certificat en une seule commande, comme suit:

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

Oh, et ce que @MadHatter a dit dans sa réponse à propos de l'omission du -des3drapeau.

Tom H
la source
14
La directive nœuds est la raison pour laquelle je suis ici. (Pas de cryptage DES de clé privée)
jorfus
39

Laisser l' -des3indicateur, qui est une instruction à openssl pour chiffrer server.key.new (qui, soit dit en passant, n'est pas une nouvelle clé du tout - c'est exactement la même chose que server.key, mais avec la phrase secrète modifiée / enlevée) .

Chapelier Fou
la source
21

La openssl reqcommande de la réponse de @Tom H est correcte pour créer un certificat auto-signé dans server.certincl. une clé privée RSA sans mot de passe dans server.key:

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

Voici comment cela fonctionne. Omettre -des3comme dans la réponse de @MadHatter ne suffit pas dans ce cas pour créer une clé privée sans phrase secrète. Il est assez à cet effet dans la openssl rsa( « convertir une clé privée ») commande visé par @MadHatter et openssl genrsa( « créer une clé privée ») commande. Juste pas pour la openssl reqcommande ici. Nous avons également besoin de -nodes("Pas de cryptage DES server.keys'il vous plaît!").

Tanius
la source
17

Utilisez le -nodesparamètre, si cette option est spécifiée, la clé privée ne sera pas chiffrée, par exemple:

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
la source
7

Il suffit de le réexécuter via openssl

commencez par générer la clé avec le mot de passe

ensuite openssl rsa -in server.key -out server.key

darethas
la source
Cela ne fonctionne pas sur Ubuntu 16.04
sweetfa
3
J'ai voté vers le bas parce que cette réponse n'est pas ce qui était demandé, la commande nécessite également une entrée et ne génère pas de clé.
Don
L'utilisateur a déjà démontré qu'il sait comment générer une clé. Cette réponse s'appuie sur ces connaissances et je suggère de prendre la clé nouvellement générée et de la transmettre à nouveau. openssl D'où l'objectif de ce qui a été demandé: générer une clé sans phrase secrète.
darethas
Fonctionne pour moi opensslsur Windows 10 de GitBash. Merci pour l'information.
Vert
0

Utilisez la commande suivante pour générer un fichier de clé privée sans mot de passe avec AUCUN cryptage . Le dernier paramètre est la taille de la clé privée.

openssl genrsa -out my-passless-private.key 4096
rien
la source
1
Ce n'est pas sans mot de passe. C'est complètement et entièrement mot de passe.
dave_thompson_085
J'expérimentais avec la position des paramètres. C'est maintenant OK. J'ai changé les emplacements des deux derniers paramètres et testé la commande.
nix
Maintenant, il produit un fichier non crypté . Les options après l'argument de position (uniquement) sont ignorées. Regardez le fichier. ce n'est pas crypté. Remplacer 4096 -des3par 4096 -sillywombatet cela fonctionne toujours et produit le même format, toujours non chiffré (mais une valeur de clé différente bien sûr). Il n’ya aucun moyen d’avoir un fichier de clé privée chiffrée sans mot de passe et des solutions correctes pour un fichier non chiffré sans mot de passe ont été données il ya six ans.
dave_thompson_085
Tu as raison. @ dave_thompson_085. Le dernier paramètre n'a aucune incidence sur la commande. J'ai mis à jour ma réponse. Il génère un fichier de clé privée non crypté base64 et non protégé par mot de passe.
nix le