diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -102,6 +102,24 @@
 
 ```curl-runnings --help ```
 
+
+### Running With Docker
+A dockerfile is included in the root of the project. The Dockerfile will expect the linux based curl-runnings executable in the same directory as the Dockerfile and a `tests.yml` file. You can download the latest executable from the release page : https://github.com/aviaviavi/curl-runnings/releases .
+
+``` docker build . -t curl-runnings-tests```
+
+```  docker run curl-runnings-tests```
+
+If you use docker-compose, you can add this to docker-compose.yml:
+
+```
+tests:
+    build:
+      context: .
+      dockerfile: ./Dockerfile
+```
+
+
 ### Contributing
 
 Contributions in any form are welcome and encouraged. Don't be shy! :D
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -30,9 +30,10 @@
 
 -- | Command line flags
 data CurlRunnings = CurlRunnings
-  { file    :: FilePath
-  , grep    :: Maybe T.Text
-  , upgrade :: Bool
+  { file           :: FilePath
+  , grep           :: Maybe T.Text
+  , upgrade        :: Bool
+  , skip_tls_check :: Bool
   } deriving (Show, Data, Typeable, Eq)
 
 -- | cmdargs object
@@ -42,6 +43,7 @@
   { file = def &= typFile &= help "File to run"
   , grep = def &= help "Regex to filter test cases by name"
   , upgrade = def &= help "Pull the latest version of curl runnings"
+  , skip_tls_check = def &= help "Don't perform a TLS check (USE WITH CAUTION. Only use this if you signed your own certs)"
   } &=
   summary ("curl-runnings " ++ showVersion version) &=
   program "curl-runnings" &=
@@ -72,17 +74,17 @@
 setGithubReqHeaders :: Request -> Request
 setGithubReqHeaders = setRequestHeaders [("User-Agent", "aviaviavi")]
 
-runFile :: FilePath -> Verbosity -> Maybe T.Text -> IO ()
-runFile "" _ _ =
+runFile :: FilePath -> Verbosity -> Maybe T.Text -> TLSCheckType -> IO ()
+runFile "" _ _ _ =
   putStrLn
     "Please specify an input file with the --file (-f) flag or use --help for more information"
-runFile path verbosityLevel regexp = do
+runFile path verbosityLevel regexp tlsType = do
   home <- getEnv "HOME"
   suite <- decodeFile . T.unpack $ T.replace "~" (T.pack home) (T.pack path)
   case suite of
     Right s -> do
       results <-
-        runSuite (s {suiteCaseFilter = regexp}) $ toLogLevel verbosityLevel
+        runSuite (s {suiteCaseFilter = regexp}) (toLogLevel verbosityLevel) $ tlsType
       if any isFailing results
         then putStrLn (T.unpack $ makeRed "Some tests failed") >>
              exitWith (ExitFailure 1)
@@ -188,6 +190,7 @@
 main = do
   userArgs <- cmdArgs argParser
   verbosityLevel <- getVerbosity
+  let tlsCheckType = if skip_tls_check userArgs then SkipTLSCheck else DoTLSCheck
   if upgrade userArgs
     then upgradeCurlRunnings
-    else runFile (file userArgs) verbosityLevel (grep userArgs)
+    else runFile (file userArgs) verbosityLevel (grep userArgs) tlsCheckType
diff --git a/curl-runnings.cabal b/curl-runnings.cabal
--- a/curl-runnings.cabal
+++ b/curl-runnings.cabal
@@ -1,11 +1,13 @@
--- This file has been generated from package.yaml by hpack version 0.28.2.
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.31.1.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 0e66b58842dd3cfc4bba11992201740113a8539e45270702205df083d4feb579
+-- hash: e7cff7f0f8e0a24c815714efc642a28f90928aa4c4dc7cc5743c8bfb9ece772c
 
 name:           curl-runnings
-version:        0.9.2
+version:        0.10.0
 synopsis:       A framework for declaratively writing curl based API tests
 description:    Please see the README on Github at <https://github.com/aviaviavi/curl-runnings#readme>
 category:       Testing
@@ -17,13 +19,12 @@
 license:        MIT
 license-file:   LICENSE
 build-type:     Simple
-cabal-version:  >= 1.10
 extra-source-files:
+    README.md
     examples/example-spec.json
     examples/example-spec.yaml
     examples/importable.yaml
     examples/interpolation-spec.yaml
-    README.md
 
 source-repository head
   type: git
@@ -34,12 +35,14 @@
       src
   build-depends:
       aeson >=1.2.4.0
-    , base >=4.7 && <5
+    , base >=4.0 && <5
     , bytestring >=0.10.8.2
     , case-insensitive >=0.2.1
+    , connection >=0.2.8
     , directory >=1.3.0.2
     , hspec >=2.4.4
     , hspec-expectations >=0.8.2
+    , http-client-tls >=0.3.5.3
     , http-conduit >=2.2.4
     , http-types >=0.9.1
     , megaparsec >=6.3.0
@@ -85,7 +88,7 @@
       test
   ghc-options: -threaded -rtsopts -with-rtsopts=-N
   build-depends:
-      base >=4.7 && <5
+      base >=4.0 && <5
     , curl-runnings
     , directory >=1.3.0.2
     , hspec >=2.4.4
diff --git a/src/Testing/CurlRunnings.hs b/src/Testing/CurlRunnings.hs
--- a/src/Testing/CurlRunnings.hs
+++ b/src/Testing/CurlRunnings.hs
@@ -24,6 +24,8 @@
 import qualified Data.Text                            as T
 import qualified Data.Vector                          as V
 import qualified Data.Yaml.Include                    as YI
+import           Network.Connection                   (TLSSettings (..))
+import           Network.HTTP.Client.TLS              (mkManagerSettings)
 import           Network.HTTP.Conduit
 import           Network.HTTP.Simple
 import qualified Network.HTTP.Types.Header            as HTTP
@@ -35,6 +37,7 @@
 import           Text.Printf
 import           Text.Regex.Posix
 
+
 -- | decode a json or yaml file into a suite object
 decodeFile :: FilePath -> IO (Either String CurlSuite)
 decodeFile specPath =
@@ -48,10 +51,22 @@
              _ -> return . Left $ printf "Invalid spec path %s" specPath
       else return . Left $ printf "%s not found" specPath
 
+
+noVerifyTlsManagerSettings :: ManagerSettings
+noVerifyTlsManagerSettings = mkManagerSettings noVerifyTlsSettings Nothing
+
+noVerifyTlsSettings :: TLSSettings
+noVerifyTlsSettings =
+  TLSSettingsSimple
+  { settingDisableCertificateValidation = True
+  , settingDisableSession = True
+  , settingUseServerName = False
+  }
+
 -- | Run a single test case, and returns the result. IO is needed here since this method is responsible
 -- for actually curling the test case endpoint and parsing the result.
 runCase :: CurlRunningsState -> CurlCase -> IO CaseResult
-runCase state curlCase = do
+runCase state@(CurlRunningsState _ _ _ tlsCheckType) curlCase = do
   let eInterpolatedUrl = interpolateQueryString state $ url curlCase
       eInterpolatedHeaders =
         interpolateHeaders state $ fromMaybe (HeaderSet []) (headers curlCase)
@@ -66,9 +81,11 @@
           return $ CaseFail curlCase Nothing Nothing [QueryFailure curlCase l]
         Right replacedJSON -> do
           initReq <- parseRequest $ T.unpack interpolatedUrl
+          manager <- newManager noVerifyTlsManagerSettings
           let request =
                 setRequestBodyJSON (fromMaybe emptyObject replacedJSON) .
-                setRequestHeaders (toHTTPHeaders interpolatedHeaders) $
+                setRequestHeaders (toHTTPHeaders interpolatedHeaders) .
+                (if tlsCheckType == DoTLSCheck then id else (setRequestManager manager)) $
                 initReq {method = B8S.pack . show $ requestMethod curlCase}
           logger state DEBUG (pShow request)
           logger
@@ -183,8 +200,8 @@
 printR x = print x >> return x
 
 -- | Runs the test cases in order and stop when an error is hit. Returns all the results
-runSuite :: CurlSuite -> LogLevel -> IO [CaseResult]
-runSuite (CurlSuite cases filterRegex) logLevel = do
+runSuite :: CurlSuite -> LogLevel -> TLSCheckType -> IO [CaseResult]
+runSuite (CurlSuite cases filterRegex) logLevel tlsType = do
   fullEnv <- getEnvironment
   let envMap = H.fromList $ map (\(x, y) -> (T.pack x, T.pack y)) fullEnv
       filterNameByRegexp curlCase =
@@ -198,12 +215,12 @@
          Just CaseFail {} -> return prevResults
          Just CasePass {} -> do
            result <-
-             runCase (CurlRunningsState envMap prevResults logLevel) curlCase >>=
+             runCase (CurlRunningsState envMap prevResults logLevel tlsType) curlCase >>=
              printR
            return $ prevResults ++ [result]
          Nothing -> do
            result <-
-             runCase (CurlRunningsState envMap [] logLevel) curlCase >>= printR
+             runCase (CurlRunningsState envMap [] logLevel tlsType) curlCase >>= printR
            return [result])
     []
     (filter filterNameByRegexp cases)
@@ -367,14 +384,14 @@
     Left l           -> Left l
     Right (String s) -> Right $ rawText <> s
     (Right o)        -> Left $ QueryTypeMismatch "Expected a string" o
-getStringValueForQuery (CurlRunningsState env _ _) (InterpolatedQuery rawText (EnvironmentVariable v)) =
+getStringValueForQuery (CurlRunningsState env _ _ _) (InterpolatedQuery rawText (EnvironmentVariable v)) =
   Right $ rawText <> H.lookupDefault "" v env
 
 -- | Lookup the value for the specified query
 getValueForQuery ::
      CurlRunningsState -> InterpolatedQuery -> Either QueryError Value
 getValueForQuery _ (LiteralText rawText) = Right $ String rawText
-getValueForQuery (CurlRunningsState _ previousResults _) full@(NonInterpolatedQuery (Query indexes)) =
+getValueForQuery (CurlRunningsState _ previousResults _ _) full@(NonInterpolatedQuery (Query indexes)) =
   case head indexes of
     (CaseResultIndex i) ->
       let maybeCase = arrayGet previousResults $ fromInteger i
@@ -417,7 +434,7 @@
       T.pack $
       "'$< ... >' queries must start with a RESPONSES[index] query: " ++
       show full
-getValueForQuery (CurlRunningsState env _ _) (NonInterpolatedQuery (EnvironmentVariable var)) =
+getValueForQuery (CurlRunningsState env _ _ _) (NonInterpolatedQuery (EnvironmentVariable var)) =
   Right . String $ H.lookupDefault "" var env
 getValueForQuery state (InterpolatedQuery _ q) =
   case getValueForQuery state (NonInterpolatedQuery q) of
diff --git a/src/Testing/CurlRunnings/Types.hs b/src/Testing/CurlRunnings/Types.hs
--- a/src/Testing/CurlRunnings/Types.hs
+++ b/src/Testing/CurlRunnings/Types.hs
@@ -23,6 +23,7 @@
   , FullQueryText
   , SingleQueryText
   , CurlRunningsState(..)
+  , TLSCheckType(..)
 
   , isFailing
   , isPassing
@@ -391,14 +392,16 @@
 -- | A map of the system environment
 type Environment = H.HashMap T.Text T.Text
 
+data TLSCheckType = SkipTLSCheck | DoTLSCheck deriving (Show, Eq)
+
 -- | The state of a suite. Tracks environment variables, and all the test results so far
-data CurlRunningsState = CurlRunningsState Environment [CaseResult] LogLevel
+data CurlRunningsState = CurlRunningsState Environment [CaseResult] LogLevel TLSCheckType
 
 logger :: CurlRunningsState -> CurlRunningsLogger
-logger (CurlRunningsState _ _ l) = makeLogger l
+logger (CurlRunningsState _ _ l _) = makeLogger l
 
 unsafeLogger :: Show a => CurlRunningsState -> CurlRunningsUnsafeLogger a
-unsafeLogger (CurlRunningsState _ _ l) = makeUnsafeLogger l
+unsafeLogger (CurlRunningsState _ _ l _) = makeUnsafeLogger l
 
 -- | A single lookup operation in a json query
 data Index
