web-dev-qa-db-fra.com

OpenVPN ne peut pas importer des configurations sur la nouvelle installation 14.04

Edit: corrigé à l’époque lorsque le correctif a été déployé avec la configuration add VPN. N'utilisez plus Linux/Ubuntu maintenant.

J'ai installé le gestionnaire de réseau OpenVPN en faisant: Sudo apt-get install network-manager-openvpn, qui installe également le paquet gnome.

Cela permettait d'importer des configurations sous 13.10, mais lors de ma nouvelle installation, je peux pointer sur les fichiers .conf, mais après avoir cliqué sur importer, le gestionnaire disparaît tout simplement et aucune connexion n'est ajoutée.

J'ai essayé de le configurer manuellement, ce qui a bien fonctionné, mais ma connexion a été interrompue au bout d'un moment, car je n'avais pas défini manuellement tous les détails de la configuration très détaillée.

Pour vous connecter via le terminal, procédez comme suit: Sudo openvpn --config /path/to/openvpn.conf m'a demandé un nom d'utilisateur, puis un mot de passe, mais ne se connecte pas.

Que puis-je faire pour résoudre ce problème? J'ai vraiment besoin de mon VPN, toute aide est grandement appréciée.

Edit: C'est un bug/1294899

Pour la file d'attente de réouverture: Quelqu'un a une très bonne solution de contournement et il a utilisé une modification pour l'insérer, mais cela en vaut la peine sa propre réponse: voter pour rouvrir ...

20
vaioonbuntu

Vous avez raison, c'est un bug du gestionnaire de réseau. Mais moi (et vous aussi) pouvons le contourner en exécutant openvpn à partir de la ligne de commande. Vous avez probablement déjà fait au moins quelques-unes de ces étapes, mais au cas où (et pour le bénéfice des autres), je ferais une étape à la fois complète.

Installez d'abord les paquets requis

Sudo apt-get install network-manager network-manager-openvpn network-manager-openvpn-gnome

Créer des fichiers Ces fichiers doivent être gardés en sécurité et confidentiels à tout moment

  1. Créez un répertoire appelé openvpn dans votre répertoire de base Copiez votre fichier client VPN (renommé client.ovpn) dans le répertoire openvpn
  2. Facultatif: conservez une copie originale du fichier - appelez-le client.ovpn.orig
  3. Ensuite, nous allons créer 4 fichiers dans le répertoire openvpn.
  4. Voir la fin de ce fichier pour savoir comment automatiser les étapes suivantes
  5. Ouvrez le fichier client.ovpn dans un éditeur de texte.
  6. Créez un fichier appelé ca.crt - copiez le texte entre <ca> et </ca> de client.ovpn dans ce fichier.
  7. Créez un fichier appelé client.crt - copiez le texte entre <cert> et </cert> de client.ovpn dans ce fichier.
  8. Créez un fichier appelé client.key - Copiez le texte entre <key> et </key> à partir de client.ovpn dans ce fichier.
  9. Créez un fichier appelé ta.key - copiez le texte dans ce fichier entre <tls-auth> et </tls-auth> à partir de client.ovpn. À ce stade, j'ai un total de 6 fichiers dans mon répertoire openvpn (y compris le fichier de sauvegarde).

5-9 Je viens juste de comprendre comment utiliser le script bash. Whoop Copiez le texte suivant dans un fichier texte:

#!/bin/bash
sed '1,/<ca>/d;/<\/ca>/,$d' client.ovpn > ca.crt
sed '1,/<cert>/d;/<\/cert>/,$d' client.ovpn > client.crt
sed '1,/<key>/d;/<\/key>/,$d' client.ovpn > client.key
sed '1,/<tls-auth>/d;/<\/tls-auth>/,$d' client.ovpn > ta.key

J'ai enregistré le fichier en tant que openvpnconvert dans le dossier openvpn avec le fichier client.ovpn. Le rend exécutable avec la commande chmod a + x:

chmod a+x openvpnconvert

Et puis l'a couru:

./openvpnconvert

Modifiez le fichier client.ovpn

Juste avant la ligne ## —–BEGIN RSA SIGNATURE—–, ajoutez les lignes ci-dessous et enregistrez

ca ca.crt
cert client.crt
key client.key
tls-auth ta.key

Enfin, vous devez exécuter openvpn à partir de l'interface de ligne de commande (CLI).

cd dans le dossier openvpn

cd openvpn

Exécutez openvpn, si vous utilisez les noms de fichiers que j'ai spécifiés, voir ci-dessous, sinon utilisez vos noms de fichiers.

Sudo openvpn --client --config ~/openvpn/client.ovpn --ca ~/openvpn/ca.crt

J'utilise actuellement OpenVPN, que j'ai configuré en suivant exactement ces étapes. J'espère que cela fonctionne aussi bien pour les autres.

Sources:

Création de fichiers - http://naveensnayak.wordpress.com/2013/03/04/ubuntu-openvpn-with-ovpn-file/

Exécution de la ligne de commande - http://ubuntuforums.org/showthread.php?t=2206811

26
Tamsyn Michael

Je pensais que l’option manquait à, mais elle a juste déménagé. Choisissez d'abord ajouter une connexion, puis au lieu de choisir OpenVPN (comme je le faisais), faites défiler vers le bas et choisissez la dernière option "importer un vpn enregistré ..."

enter image description here

trouvé la réponse ici - http://torguard.net/knowledgebase.php?action=displayarticle&id=5

5
rogerdodger00

Je n'ai jamais essayé d'importer ces données de connexion, mais j'ai utilisé les éléments suivants à différentes occasions:

  • placez le whatever.conf avec le fichier .crt et les informations d'identification dans /etc/openvpn et démarrez/arrêtez la connexion VPN avec Sudo service openvpn whatever start|stop

  • créer la connexion VPN via NetworkManager en saisissant les données de connexion manuellement. Le fichier de configuration pour la connexion sera placé à /etc/NetworkManager/system-connections et pourra être édité ultérieurement.

2

Script d'extraction:

En réponse à la réponse utile de Tamsyn Michael, j'ai créé un petit programme pour automatiser la tâche d'extraction. Il génère les fichiers appropriés nécessaires à openvpn, puis ajoute ces noms de fichier au fichier de paramètres d'origine.

//woahguy@askubuntu

#include <iostream>
#include <string.h>
#include <stdio.h>

using namespace std;

int i = 0;

string buffer, filename, ca, cert, key, auth;

struct _tags { const char* first; const char* last; };

const char* files[] = { "ca.crt", "client.crt", "client.key", "ta.key" };

_tags tags[] = {
    { "<ca>", "</ca>" },
    { "<cert>", "</cert>" },
    { "<key>", "</key>" },
    { "<tls-auth>", "</tls-auth>" }
};

string string_between( string str, const string& from, const string& to ) {
    size_t first = str.find(from);
    size_t last = str.find(to);
    return( str.substr ( first+from.size(),last-first-to.size()));
}

int read_file_to_buffer( string filename )
{
    char line[12];
    FILE* pFile = fopen( filename.c_str(), "r" );
    if( pFile != NULL ) {
        while( fgets( line, sizeof( line ), pFile ) ) {
            buffer.append( line );
        }
    } else {
        return 1;
    }
    return 0;
}

int write_buffer_to_file( string buffer, string filename )
{
    FILE* pFile = fopen( filename.c_str(), "w" );
    if( pFile != NULL ) {
        fwrite (buffer.c_str(), sizeof(char), buffer.size(), pFile);
        fclose(pFile);
    } else {
        return 1;
    }
    return 0;
}

int append_found_tags_to_main( int type )
{
    FILE* pFile = fopen( filename.c_str(), "a+" );
    if( pFile != NULL ) {
        if( type == 1 ) {
            fprintf( pFile, "\nca %s\r\ncert %s\r\nkey %s\r\n",
                files[0], files[1], files[2] );
        } else {
            fprintf( pFile, "\nca %s\r\ncert %s\r\nkey %s\r\ntls-auth %s\r\n",
                files[0], files[1], files[2], files[3] );
        }
        fclose(pFile);
    }
    return 0;
}

int extract_tags( )
{
    while (buffer.find(tags[i].first) != std::string::npos ) {
        if( i == 0 ) {
            ca = string_between( buffer, tags[i].first, tags[i].last);
        } else if( i == 1 ) {
            cert = string_between( buffer, tags[i].first, tags[i].last);
        } else if( i == 2 ) {
            key = string_between( buffer, tags[i].first, tags[i].last);
        } else if( i == 3 ) {
            auth = string_between( buffer, tags[i].first, tags[i].last);
        } else {
            return 1;
        }
        i++;
    }
    return 0;
}

int write_tags( )
{
    if( !ca.empty() && !cert.empty() && !key.empty() ) {
        write_buffer_to_file( ca, files[0] );
        write_buffer_to_file( cert, files[1] );
        write_buffer_to_file( key, files[2] );
        if( !auth.empty() ) {
            write_buffer_to_file( auth, files[3] );
            append_found_tags_to_main( 0 );
        } else {
            append_found_tags_to_main( 1 );
            return 1;
        }
    } else {
        return 2;
    }
}

int main(int argc, char* argv[])
{
    if( argv[1] == NULL ) {
        printf("certgrabber<: You need to specify a valid filename to extract from.\r\n");
        return 1;
    } else {
        if( argv[2] != NULL && argv[3] != NULL && argv[4] != NULL && argv[5] != NULL) {
            files[0] = argv[2];
            files[1] = argv[3];
            files[2] = argv[4];
            files[2] = argv[5];
        }
        filename = argv[1];
    }
    read_file_to_buffer( argv[1] );
    if( buffer.empty()){
        printf("certgrabber<: You need to specify a valid filename to extract from.\r\n");
        return 2;
    }
    if( extract_tags() == 0 ) {
        int result = write_tags();
        if( result == 0 ) {
            printf("certgrabber<: All certificates and keys successfully extracted.\r\n");
        } else if( result == 1 ) {
            printf("certgrabber<: Unable to find a TLS auth key, but this isn't exactly an error.\r\n");
        } else if( result == 2 ) {
            printf("certgrabber<: Something went totally wrong with the certificate files.\r\n");
        }
    } else {
        printf("certgrabber<: Something went wrong while extracting the tags.\r\n");
        return 3;
    }
    return 0;
}

Compilation et bâtiment:

Vous devrez installer g ++ pour construire ce

Sudo apt-get install g++

Puis du terminal

g++ -c main.cpp -o main.o \ g++ -o certgrabber main.o 

Vous aurez maintenant le programme 'certgrabber' dans le dossier.

tilisation du programme:

Extraire les noms de fichiers par défaut (ca.crt, client.crt, client.key, tls-auth.key)

./certgrabber settings.ovpn

Extraire des noms de fichiers personnalisés

./certgrabber settings.ovpn ca-1.crt client-1.crt client-1.key tls-1.key
2
woahguy

Le problème avec ADDING un VPN à partir d'un fichier .ovpn enregistré échoue toujours.

Il est possible d’en ajouter un manuellement.

  1. Sélectionnez NM Indicateur d'application, -> VPN -> Configurer le VPN -> Ajouter -> OpenVPN
  2. Nommez manuellement votre connexion et entrez l'adresse IP de votre serveur.
  3. Sélectionnez le type d'authentification: Pour moi, c'est Mot de passe + Certificats
  4. Entrez votre nom d'utilisateur et mot de passe
  5. Sélectionnez vos certificats et vos clés pour les trois prochaines cases.
  6. Sélectionnez Avancé à partir du bas
  7. Entrez le PORT (dans le fichier .ovpn, généralement en bas après l'adresse IP dans la position "XX":

    à distance ###. ###. ##. ## XX

  8. Si votre VPN est TCP, cochez la case "Utiliser une connexion TCP"

  9. Sélectionnez OK puis Enregistrer.

À ce stade, la connexion VPN doit être répertoriée dans le NM AppIndicator en tant qu'option. Sélectionnez et testez votre connexion. J'ai pu ajouter un type de connexion TCP et UDP, mais il en a fallu beaucoup plus que si le fichier enregistré .ovpn importé fonctionnait correctement.

Espérons qu'ils régleront cela rapidement afin que je puisse facilement ajouter une autre connexion ... mais au moins c'est un moyen de contourner le problème qui devrait aider les personnes frustrées comme moi.

1
armc

J'ai créé un script ici pour automatiser la récupération du mot de passe et des fichiers Zip de plusieurs sites vpn tels que vpnbook.com , en extrayant les noms ca, cert et key, à partir des fichiers ovpn. et mettre à jour les fichiers opvn pour que les certificats soient importés pour vous. Il pourrait facilement être modifié pour une utilisation avec d'autres fournisseurs.

0
ryry1985