Récupération d'une key RSA à partir d'une instance en cours d'exécution d'Apache?

J'ai créé un couple de keys RSA pour un certificate SSL et j'ai enregistré la key privée dans /etc/ssl/private/server.key . Malheureusement, c'était la seule copy de la key privée que j'avais.

Ensuite, j'ai accidentellement écrasé le file sur le disque (oui, je le sais).

Apache est toujours en cours d'exécution et continue de répondre aux requests SSL, ce qui me fait croire qu'il y a peut-être un espoir de récupérer la key privée. (Peut-être existe-t-il un lien symbolique quelque part dans /proc ou quelque chose?)

Ce server exécute Ubuntu 12.04 LTS.

2 Solutions collect form web for “Récupération d'une key RSA à partir d'une instance en cours d'exécution d'Apache?”

SUCCÈS!

J'ai pu récupérer la key privée. Mais ce n'était pas facile. Voici ce que vous devez faire:

  1. Assurez-vous de ne pas redémarrer le server ou Apache. Le jeu est terminé à ce moment-là. Cela signifie également s'assurer qu'aucun service de surveillance ne redémarre Apache.
  2. Prenez ce file – code source pour un outil appelé passe-partout .
  3. Extrayez le code source et ajustez la ligne 9 de Makefile.main pour lire:

     $(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS) 

    (Notez que les $(OBJS) et $(LDFLAGS) sont renversés par ordre.)

  4. Exécutez ./build.sh .
  5. Prenez le PID d'Apache en utilisant:

     service apache2 status 
  6. Exécutez la command passe-partout tant que root:

     sudo passe-partout [PID] 

    … où [PID] est la valeur que vous avez récupérée à l'étape 5.

  7. Si le programme réussit, votre directory actuel aura un tas de keys supplémentaires:

     you@server:~# ls id_rsa-0.key id_rsa-1.key id_rsa-2.key 

Si tout s'est bien passé (et j'espère qu'il l'a fait), une de ces keys est celle dont vous avez besoin. Toutefois, si vous aviez plus d'un certificate / file key utilisé, vous devez déterminer lequel est. Voici comment vous faites cela:

Prenez d'abord une copy du certificate qui correspond à la key signée. En supposant que le file s'appelle server.crt , exécutez la command suivante:

 openssl x509 -noout -modulus -in server.crt | openssl md5 

Cela générera une valeur que vous devrez associer à chacune des keys. Pour chaque touche, exécutez la command suivante:

 openssl rsa -noout -modulus -in id_rsa-0.key | openssl md5 

Si l'un d'eux correspond, vous avez trouvé la key.


Crédit: cet article m'a pointé vers passe-partout.

Très probablement, il stocke la key dans la memory, ce qu'elle fait car elle doit conserver une copy après la suppression des privilèges et / ou décrypte la key à l'aide d'une phrase de passe fournie.

En théorie, vous pouvez l'extraire de l'image de process si vous avez attaché un débogueur, mais si elles suivent les meilleures pratiques, elles seront cryptées contre quelque chose en memory.

Cela dit, s'il se trouve qu'il l'a toujours ouvert, /proc/${PID}/fd/${SOMETHING} peut-être. Si vous l'avez écrasé, votre key ne sera pas là car datatables d'écrasement seront. Si vous avez copié autre chose dans sa place (ou l'avez supprimé ou désactivé, ou supprimé de façon récursive son directory parent), il sera là.

  • Mod_rewrite redirection de SSL vers HTTP ne fonctionne pas
  • Configuration Tomcat ssl
  • Comment append SSL pour localhost dans RAILS
  • Désactivé SSLv3 pour combattre Poodle maintenant ne peut pas se connecter à SQL "Connexion fermée de force par hôte distant"
  • Doit-on avoir des fournisseurs SSL Cert? [fermé]
  • Comment désactiver SSLv3 dans Postfix 2.11?
  • Comment puis-je configurer le SSL pour une utilisation avec plusieurs instances du server Amazon EC2 derrière un équilibreur de charge?
  • Ajout d'un cert auto-signé dans une list de certificates approuvés avec powershell sur Windows 7
  • Routines SSL: SSL23_WRITE: échec de la main-d'œuvre ssl
  • L'hôte virtuel Apache Plusieurs Mappage SSL étant ignorés
  • Comment installer un certificate SSL unique pour www et non-www
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.