diff --git a/Network/HTTP/Enumerator.hs b/Network/HTTP/Enumerator.hs
--- a/Network/HTTP/Enumerator.hs
+++ b/Network/HTTP/Enumerator.hs
@@ -109,6 +109,7 @@
 import qualified Data.IORef as I
 import Control.Applicative ((<$>))
 import Data.Certificate.X509 (X509)
+import Network.TLS.Extra (certificateVerifyChain, certificateVerifyDomain)
 
 getSocket :: String -> Int -> IO NS.Socket
 getSocket host' port' = do
@@ -341,13 +342,10 @@
 --
 -- Since this function uses 'Failure', the return monad can be anything that is
 -- an instance of 'Failure', such as 'IO' or 'Maybe'.
-parseUrl :: Failure HttpException m => W.Ascii -> m (Request m')
-parseUrl = parseUrlS . S8.unpack
-
-parseUrlS :: Failure HttpException m => String -> m (Request m')
-parseUrlS s@('h':'t':'t':'p':':':'/':'/':rest) = parseUrl1 s False rest
-parseUrlS s@('h':'t':'t':'p':'s':':':'/':'/':rest) = parseUrl1 s True rest
-parseUrlS x = failure $ InvalidUrlException x "Invalid scheme"
+parseUrl :: Failure HttpException m => String -> m (Request m')
+parseUrl s@('h':'t':'t':'p':':':'/':'/':rest) = parseUrl1 s False rest
+parseUrl s@('h':'t':'t':'p':'s':':':'/':'/':rest) = parseUrl1 s True rest
+parseUrl x = failure $ InvalidUrlException x "Invalid scheme"
 
 parseUrl1 :: Failure HttpException m
           => String -> Bool -> String -> m (Request m')
@@ -364,7 +362,10 @@
         { host = S8.pack hostname
         , port = port'
         , secure = sec
-        , checkCerts = const $ return True
+        , checkCerts = \x ->
+            if certificateVerifyDomain hostname x
+                then certificateVerifyChain x
+                else return False
         , requestHeaders = []
         , path = S8.pack
                     $ if null path'
@@ -424,7 +425,7 @@
 -- This function will 'failure' an 'HttpException' for any response with a
 -- non-2xx status code. It uses 'parseUrl' to parse the input. This function
 -- essentially wraps 'httpLbsRedirect'.
-simpleHttp :: (MonadIO m, Failure HttpException m) => W.Ascii -> m L.ByteString
+simpleHttp :: (MonadIO m, Failure HttpException m) => String -> m L.ByteString
 simpleHttp url = do
     url' <- parseUrl url
     Response sc _ b <- liftIO $ withManager $ httpLbsRedirect url'
@@ -476,7 +477,7 @@
                                 , S8.unpack l''
                                 ]
                             _ -> S8.unpack l''
-                l <- lift $ parseUrlS l'
+                l <- lift $ parseUrl l'
                 let req' = req
                         { host = host l
                         , port = port l
diff --git a/Network/TLS/Client/Enumerator.hs b/Network/TLS/Client/Enumerator.hs
--- a/Network/TLS/Client/Enumerator.hs
+++ b/Network/TLS/Client/Enumerator.hs
@@ -20,6 +20,7 @@
     ( Iteratee (..), Enumerator, Step (..), Stream (..), continue, returnI
     )
 import Data.Certificate.X509 (X509)
+import Network.TLS.Extra (ciphersuite_all)
 
 data ConnInfo = ConnInfo
     { connRead :: IO [ByteString]
@@ -61,7 +62,7 @@
     let tcp = defaultParams
             { pConnectVersion = TLS10
             , pAllowedVersions = [ TLS10, TLS11 ]
-            , pCiphers = ciphers
+            , pCiphers = ciphersuite_all
             , onCertificatesRecv = onCerts
             }
     esrand <- liftIO makeSRandomGen
@@ -79,9 +80,3 @@
         if L.null x
             then recvD istate
             else return $ L.toChunks x
-    ciphers =
-        [ cipher_AES128_SHA1
-        , cipher_AES256_SHA1
-        , cipher_RC4_128_MD5
-        , cipher_RC4_128_SHA1
-        ]
diff --git a/http-enumerator.cabal b/http-enumerator.cabal
--- a/http-enumerator.cabal
+++ b/http-enumerator.cabal
@@ -1,5 +1,5 @@
 name:            http-enumerator
-version:         0.5.1
+version:         0.6.0
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -31,7 +31,8 @@
                  , zlib-enum             >= 0.2     && < 0.3
                  , http-types            >= 0.6     && < 0.7
                  , blaze-builder-enumerator >= 0.2  && < 0.3
-                 , tls                   >= 0.4     && < 0.5
+                 , tls                   >= 0.5.1   && < 0.6
+                 , tls-extra             >= 0.1.6   && < 0.2
                  , monad-control         >= 0.2     && < 0.3
                  , containers            >= 0.2     && < 0.5
                  , certificate           >= 0.7     && < 0.8
diff --git a/test.hs b/test.hs
--- a/test.hs
+++ b/test.hs
@@ -11,7 +11,7 @@
 main :: IO ()
 main = withSocketsDo $ do
     [url] <- getArgs
-    _req2 <- parseUrl $ S8.pack url
+    _req2 <- parseUrl url
     {-
     let req = urlEncodedBody
                 [ ("foo", "bar")
