diff --git a/scripts/prepare.sh b/scripts/prepare.sh
index 1f47f20..5bdd91a 100644
--- a/scripts/prepare.sh
+++ b/scripts/prepare.sh
@@ -89,6 +89,9 @@
 }
 
 function prepare() {
+    if [ "$OS_INSECURE" -eq "1" ] ; then
+    fi
+
     lookup_for_objects
 
     if [ -z "$img_id" ] ; then
diff --git a/wally/discover/discover.py b/wally/discover/discover.py
index 957ecbe..b1feb80 100644
--- a/wally/discover/discover.py
+++ b/wally/discover/discover.py
@@ -75,7 +75,8 @@
                     'name': openrc_dict['username'],
                     'passwd': openrc_dict['password'],
                     'tenant': openrc_dict['tenant_name'],
-                    'auth_url': openrc_dict['os_auth_url']}
+                    'auth_url': openrc_dict['os_auth_url'],
+                    'insecure': openrc_dict.get('insecure', False)}
 
             env_name = clusters_info['fuel']['openstack_env']
             env_f_name = env_name
diff --git a/wally/run_test.py b/wally/run_test.py
index 43e4e43..487fd49 100755
--- a/wally/run_test.py
+++ b/wally/run_test.py
@@ -307,9 +307,9 @@
             if not start_vms.is_connected():
                 os_creds = get_OS_credentials(cfg, ctx)
             else:
-                os_creds = {}
+                os_creds = None
 
-            conn = start_vms.nova_connect(**os_creds)
+            conn = start_vms.nova_connect(os_creds)
             for ip, vm_id in start_vms.find_vms(conn, vm_name_pattern):
                 conn_url = "ssh://{user}@{ip}::{key}".format(user=user_name,
                                                              ip=ip,
@@ -321,39 +321,39 @@
 
 def get_OS_credentials(cfg, ctx):
     creds = None
-    tenant = None
+    os_creds = None
 
     if 'openstack' in cfg.clouds:
         os_cfg = cfg.clouds['openstack']
         if 'OPENRC' in os_cfg:
             logger.info("Using OS credentials from " + os_cfg['OPENRC'])
-            user, passwd, tenant, auth_url = utils.get_creds_openrc(os_cfg['OPENRC'])
+            creds_tuple = utils.get_creds_openrc(os_cfg['OPENRC'])
+            os_creds = start_vms.OSCreds(*creds_tuple)
         elif 'ENV' in os_cfg:
             logger.info("Using OS credentials from shell environment")
-            user, passwd, tenant, auth_url = start_vms.ostack_get_creds()
+            os_creds = start_vms.ostack_get_creds()
         elif 'OS_TENANT_NAME' in os_cfg:
             logger.info("Using predefined credentials")
-            tenant = os_cfg['OS_TENANT_NAME'].strip()
-            user = os_cfg['OS_USERNAME'].strip()
-            passwd = os_cfg['OS_PASSWORD'].strip()
-            auth_url = os_cfg['OS_AUTH_URL'].strip()
+            os_creds = start_vms.OSCreds(os_cfg['OS_USERNAME'].strip(),
+                                         os_cfg['OS_PASSWORD'].strip(),
+                                         os_cfg['OS_TENANT_NAME'].strip(),
+                                         os_cfg['OS_AUTH_URL'].strip(),
+                                         os_cfg.get('OS_INSECURE', False))
 
-    if tenant is None and 'fuel' in cfg.clouds and \
+    if os_creds is None and 'fuel' in cfg.clouds and \
        'openstack_env' in cfg.clouds['fuel'] and \
        ctx.fuel_openstack_creds is not None:
         logger.info("Using fuel creds")
-        creds = ctx.fuel_openstack_creds
-    elif tenant is None:
+        creds = start_vms.OSCreds(**ctx.fuel_openstack_creds)
+    elif os_creds is None:
         logger.error("Can't found OS credentials")
         raise utils.StopTestError("Can't found OS credentials", None)
 
     if creds is None:
-        creds = {'name': user,
-                 'passwd': passwd,
-                 'tenant': tenant,
-                 'auth_url': auth_url}
+        creds = os_creds
 
-    logger.debug("OS_CREDS: user={name} tenant={tenant} auth_url={auth_url}".format(**creds))
+    logger.debug(("OS_CREDS: user={0.name} tenant={0.tenant}" +
+                  "auth_url={0.auth_url} insecure={0.insecure}").format(creds))
 
     return creds
 
@@ -389,9 +389,9 @@
     if not start_vms.is_connected():
         os_creds = get_OS_credentials(cfg, ctx)
     else:
-        os_creds = {}
+        os_creds = None
 
-    nova = start_vms.nova_connect(**os_creds)
+    nova = start_vms.nova_connect(os_creds)
 
     params.update(config)
     params.update(get_vm_keypair(cfg))
@@ -401,7 +401,7 @@
 
     if not config.get('skip_preparation', False):
         logger.info("Preparing openstack")
-        start_vms.prepare_os_subpr(nova, params=params, **os_creds)
+        start_vms.prepare_os_subpr(nova, params, os_creds)
 
     new_nodes = []
     old_nodes = ctx.nodes[:]
diff --git a/wally/start_vms.py b/wally/start_vms.py
index 1457da6..432594a 100644
--- a/wally/start_vms.py
+++ b/wally/start_vms.py
@@ -5,6 +5,7 @@
 import os.path
 import logging
 import subprocess
+import collections
 
 from concurrent.futures import ThreadPoolExecutor
 
@@ -28,50 +29,61 @@
     return NOVA_CONNECTION is not None
 
 
+OSCreds = collections.namedtuple("OSCreds",
+                                 ["name", "passwd",
+                                  "tenant", "auth_url", "insecure"])
+
+
 def ostack_get_creds():
     if STORED_OPENSTACK_CREDS is None:
-        env = os.environ.get
-        name = env('OS_USERNAME')
-        passwd = env('OS_PASSWORD')
-        tenant = env('OS_TENANT_NAME')
-        auth_url = env('OS_AUTH_URL')
-        return name, passwd, tenant, auth_url
+        return OSCreds(os.environ.get('OS_USERNAME'),
+                       os.environ.get('OS_PASSWORD'),
+                       os.environ.get('OS_TENANT_NAME'),
+                       os.environ.get('OS_AUTH_URL'),
+                       os.environ.get('OS_INSECURE', False))
     else:
         return STORED_OPENSTACK_CREDS
 
 
-def nova_connect(name=None, passwd=None, tenant=None, auth_url=None):
+def nova_connect(os_creds=None):
     global NOVA_CONNECTION
     global STORED_OPENSTACK_CREDS
 
     if NOVA_CONNECTION is None:
-        if name is None:
-            name, passwd, tenant, auth_url = ostack_get_creds()
+        if os_creds is None:
+            os_creds = ostack_get_creds()
         else:
-            STORED_OPENSTACK_CREDS = (name, passwd, tenant, auth_url)
+            STORED_OPENSTACK_CREDS = os_creds
 
-        NOVA_CONNECTION = n_client('1.1', name, passwd, tenant, auth_url)
+        NOVA_CONNECTION = n_client('1.1',
+                                   os_creds.name,
+                                   os_creds.passwd,
+                                   os_creds.tenant,
+                                   os_creds.auth_url,
+                                   insecure=os_creds.insecure)
     return NOVA_CONNECTION
 
 
-def cinder_connect(name=None, passwd=None, tenant=None, auth_url=None):
+def cinder_connect(os_creds=None):
     global CINDER_CONNECTION
     global STORED_OPENSTACK_CREDS
 
     if CINDER_CONNECTION is None:
-        if name is None:
-            name, passwd, tenant, auth_url = ostack_get_creds()
+        if os_creds is None:
+            os_creds = ostack_get_creds()
         else:
-            STORED_OPENSTACK_CREDS = (name, passwd, tenant, auth_url)
-        CINDER_CONNECTION = c_client(name, passwd, tenant, auth_url)
+            STORED_OPENSTACK_CREDS = os_creds
+        CINDER_CONNECTION = c_client(os_creds.name,
+                                     os_creds.passwd,
+                                     os_creds.tenant,
+                                     os_creds.auth_url,
+                                     insecure=os_creds.insecure)
     return CINDER_CONNECTION
 
 
-def prepare_os_subpr(nova, params, name=None,
-                     passwd=None, tenant=None,
-                     auth_url=None):
-    if name is None:
-        name, passwd, tenant, auth_url = ostack_get_creds()
+def prepare_os_subpr(nova, params, os_creds):
+    if os_creds is None:
+        os_creds = ostack_get_creds()
 
     MAX_VM_PER_NODE = 8
     serv_groups = " ".join(map(params['aa_group_name'].format,
@@ -81,10 +93,11 @@
     env = os.environ.copy()
 
     env.update(dict(
-        OS_USERNAME=name,
-        OS_PASSWORD=passwd,
-        OS_TENANT_NAME=tenant,
-        OS_AUTH_URL=auth_url,
+        OS_USERNAME=os_creds.name,
+        OS_PASSWORD=os_creds.passwd,
+        OS_TENANT_NAME=os_creds.tenant,
+        OS_AUTH_URL=os_creds.auth_url,
+        OS_INSECURE="1" if os_creds.insecure else "0",
 
         FLAVOR_NAME=params['flavor']['name'],
         FLAVOR_RAM=str(params['flavor']['ram_size']),
diff --git a/wally/utils.py b/wally/utils.py
index 64ddd84..2011a98 100644
--- a/wally/utils.py
+++ b/wally/utils.py
@@ -302,7 +302,7 @@
 def get_creds_openrc(path):
     fc = open(path).read()
 
-    echo = 'echo "$OS_TENANT_NAME:$OS_USERNAME:$OS_PASSWORD@$OS_AUTH_URL"'
+    echo = 'echo "$OS_INSECURE:$OS_TENANT_NAME:$OS_USERNAME:$OS_PASSWORD@$OS_AUTH_URL"'
 
     msg = "Failed to get creads from openrc file"
     with log_error(msg):
@@ -311,12 +311,13 @@
     msg = "Failed to get creads from openrc file: " + data
     with log_error(msg):
         data = data.strip()
-        user, tenant, passwd_auth_url = data.split(':', 2)
+        insecure_str, user, tenant, passwd_auth_url = data.split(':', 3)
+        insecure = (insecure_str in ('1', 'True', 'true'))
         passwd, auth_url = passwd_auth_url.rsplit("@", 1)
         assert (auth_url.startswith("https://") or
                 auth_url.startswith("http://"))
 
-    return user, passwd, tenant, auth_url
+    return user, passwd, tenant, auth_url, insecure
 
 
 os_release = collections.namedtuple("Distro", ["distro", "release", "arch"])
