diff --git a/peyotls.cabal b/peyotls.cabal
--- a/peyotls.cabal
+++ b/peyotls.cabal
@@ -2,7 +2,7 @@
 cabal-version:	>= 1.8
 
 name:		peyotls
-version:	0.0.0.2
+version:	0.0.0.3
 stability:	Experimental
 author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp>
 maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>
@@ -272,7 +272,7 @@
 source-repository	this
     type:	git
     location:	git://github.com/YoshikuniJujo/peyotls.git
-    tag:	peyotls-0.0.0.2
+    tag:	peyotls-0.0.0.3
 
 library
     hs-source-dirs:	src
diff --git a/src/Network/PeyoTLS/Certificate.hs b/src/Network/PeyoTLS/Certificate.hs
--- a/src/Network/PeyoTLS/Certificate.hs
+++ b/src/Network/PeyoTLS/Certificate.hs
@@ -24,13 +24,16 @@
 	encode = B.addLen w24 . cmap (B.addLen w24)
 		. (\(X509.CertificateChainRaw ccr) -> ccr)
 		. X509.encodeCertificateChain
+		. (\(X509.CertificateChain cs) ->
+			X509.CertificateChain $ reverse cs)
 
 instance B.Parsable X509.CertificateChain where
 	parse = do
 		ecc <- X509.decodeCertificateChain . X509.CertificateChainRaw <$>
 			(flip B.list (B.take =<< B.take 3) =<< B.take 3)
 		case ecc of
-			Right cc -> return cc
+			Right (X509.CertificateChain cs) ->
+				return . X509.CertificateChain $ reverse cs
 			Left (n, err) -> fail $ show n ++ " " ++ err
 
 data CertificateRequest
