Avant de parler de l'erreur et de sa solution, voici ma configuration OpenCA - C'est une autorité de certification hors ligne. c'est-à-dire RA
(autorité d'enregistrement en ligne qui inclut RA et NODE) et CA
(autorité de certification hors ligne qui inclut CA et NODE) la configuration est installée sur différentes machines. Cela signifie que RA et CA communiquent via la méthode d'échange de données, qui est effectuée par une bibliothèque appelée export-import.lib
. Par exemple, le certificat CA et ses configurations peuvent être exportés depuis la machine CA et importés dans la machine RA. Si tout se passe bien, les données devraient être échangées entre CA et RA sans aucun problème. Mais ce n'est pas le cas, j'ai eu une erreur "Impossible d'appeler la méthode sur une valeur indéfinie à export-import.lib" lors de l'échange de données de CA à RA. Ce didacticiel vous expliquera comment résoudre le problème.
Vous trouverez ci-dessous l'erreur complète lors de l'exécution de l'importation sur la machine RA.
Error Code: 700 The compilation of the command cmdNodeDownloadCert failed. Can't call method "get" on an undefined value at /home/openra/lib/openca/functions/export-import.lib line 2225.
Bien que le certificat CA sous le chemin :/home/openca/var/openca/crypto/cacerts/
et CRL sous /home/openca/var/openca/crypto/crls/
est importé correctement, le certificat CA n'a pas été importé dans la base de données ! Donc, au début, j'ai suspecté que la machine CA ait correctement exporté les données (je veux dire, si le certificat CA a été exporté correctement ?) dans ca-down
fichier tar.
ca-down est le fichier tar utilisé pour l'échange de données entre RA et CA. Il peut s'agir d'un fichier différent dans votre configuration et le même peut être configuré dans node
fichiers de configuration.
Vérifiez le certificat CA dans le fichier tar ca-down
comme indiqué ci-dessous :
tar -tvf /home/openca/var/openca/tmp/ca-down
À partir de la capture d'écran ci-dessus, vous pouvez comprendre que le certificat CA a été correctement exporté. Mais l'importation n'a pas réussi à mettre à jour la même chose dans la base de données.
Après avoir passé beaucoup de temps, je comprends que l'OpenCA utilise deux répertoires "upload"
&"download"
sous /home/openca/var/openca/log/
gérer les échanges de données. Étonnamment, ces deux répertoires manquaient et c'était la raison de l'erreur - Impossible d'appeler la méthode obtenir une valeur indéfinie sur export-import.lib.
Donc tout ce que j'ai à faire est de créer upload
et download
répertoires sous le log
dossier et fournissez les autorisations nécessaires au serveur Web pour y créer un fichier. C'est ça! Maintenant, l'échange de données entre CA et RA s'est déroulé sans heurts.