aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2018-08-08 17:11:45 +0900
committerGitHub <noreply@github.com>2018-08-08 17:11:45 +0900
commit54adb0dd7c33d863341570bdc781ead25e2c3a78 (patch)
treef616310088e666df4265593dd7462d893dd1c1a6
parente092ed92cb04980318c229b811d01c346ee44cfb (diff)
parent6fcc6c0efc42d1c6325cf4bb0ca16e2a448cdbed (diff)
downloadruby-openssl-54adb0dd7c33d863341570bdc781ead25e2c3a78.tar.gz
Merge pull request #209 from rhenium/ky/openssl-1.1.1-part2
Test matrix update and additional test fixes for OpenSSL 1.1.1
-rw-r--r--.travis.yml18
-rw-r--r--Dockerfile2
-rw-r--r--test/test_ssl.rb45
-rw-r--r--test/test_ssl_session.rb1
-rw-r--r--tool/ruby-openssl-docker/Dockerfile44
-rwxr-xr-xtool/ruby-openssl-docker/init.sh2
6 files changed, 77 insertions, 35 deletions
diff --git a/.travis.yml b/.travis.yml
index 1342da6d..e6b18af3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -18,14 +18,17 @@ matrix:
fast_finish: true
include:
- env: RUBY_VERSION=ruby-2.3 OPENSSL_VERSION=openssl-1.0.2
- - env: RUBY_VERSION=ruby-2.4 OPENSSL_VERSION=openssl-1.0.0
- - env: RUBY_VERSION=ruby-2.4 OPENSSL_VERSION=openssl-1.0.1
- env: RUBY_VERSION=ruby-2.4 OPENSSL_VERSION=openssl-1.0.2
- - env: RUBY_VERSION=ruby-2.4 OPENSSL_VERSION=openssl-1.1.0
- - env: RUBY_VERSION=ruby-2.4 OPENSSL_VERSION=libressl-2.3
- - env: RUBY_VERSION=ruby-2.4 OPENSSL_VERSION=libressl-2.4
- - env: RUBY_VERSION=ruby-2.4 OPENSSL_VERSION=libressl-2.5
- - env: RUBY_VERSION=ruby-2.4 OPENSSL_VERSION=libressl-2.6
+ - env: RUBY_VERSION=ruby-2.5 OPENSSL_VERSION=openssl-1.0.0
+ - env: RUBY_VERSION=ruby-2.5 OPENSSL_VERSION=openssl-1.0.1
+ - env: RUBY_VERSION=ruby-2.5 OPENSSL_VERSION=openssl-1.0.2
+ - env: RUBY_VERSION=ruby-2.5 OPENSSL_VERSION=openssl-1.1.0
+ - env: RUBY_VERSION=ruby-2.5 OPENSSL_VERSION=openssl-1.1.1
+ - env: RUBY_VERSION=ruby-2.5 OPENSSL_VERSION=libressl-2.3
+ - env: RUBY_VERSION=ruby-2.5 OPENSSL_VERSION=libressl-2.4
+ - env: RUBY_VERSION=ruby-2.5 OPENSSL_VERSION=libressl-2.5
+ - env: RUBY_VERSION=ruby-2.5 OPENSSL_VERSION=libressl-2.6
+ - env: RUBY_VERSION=ruby-2.5 OPENSSL_VERSION=libressl-2.7
- language: ruby
rvm: ruby-head
before_install:
@@ -36,3 +39,4 @@ matrix:
allow_failures:
- language: ruby
rvm: ruby-head
+ - env: RUBY_VERSION=ruby-2.5 OPENSSL_VERSION=openssl-1.1.1
diff --git a/Dockerfile b/Dockerfile
index ab7f09e2..fbf4acec 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1 +1 @@
-FROM zzak/ruby-openssl-docker:2.0
+FROM zzak/ruby-openssl-docker:testing
diff --git a/test/test_ssl.rb b/test/test_ssl.rb
index 7bb32adf..408c7d82 100644
--- a/test/test_ssl.rb
+++ b/test/test_ssl.rb
@@ -48,6 +48,8 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
assert_equal 2, ssl.peer_cert_chain.size
assert_equal @svr_cert.to_der, ssl.peer_cert_chain[0].to_der
assert_equal @ca_cert.to_der, ssl.peer_cert_chain[1].to_der
+
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
ensure
ssl&.close
sock&.close
@@ -77,6 +79,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
sock = TCPSocket.new("127.0.0.1", port)
ssl = OpenSSL::SSL::SSLSocket.new(sock)
ssl.connect
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
ssl.close
assert_not_predicate sock, :closed?
ensure
@@ -88,6 +91,7 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
ssl = OpenSSL::SSL::SSLSocket.new(sock)
ssl.sync_close = true # !!
ssl.connect
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
ssl.close
assert_predicate sock, :closed?
ensure
@@ -179,7 +183,10 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
client_ca_from_server = sslconn.client_ca
[@cli_cert, @cli_key]
end
- server_connect(port, ctx) { |ssl| assert_equal([@ca], client_ca_from_server) }
+ server_connect(port, ctx) { |ssl|
+ assert_equal([@ca], client_ca_from_server)
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
+ }
}
end
@@ -276,21 +283,16 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
}
start_server { |port|
- sock = TCPSocket.new("127.0.0.1", port)
ctx = OpenSSL::SSL::SSLContext.new
ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER
ctx.verify_callback = Proc.new do |preverify_ok, store_ctx|
store_ctx.error = OpenSSL::X509::V_OK
true
end
- ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx)
- ssl.sync_close = true
- begin
- ssl.connect
+ server_connect(port, ctx) { |ssl|
assert_equal(OpenSSL::X509::V_OK, ssl.verify_result)
- ensure
- ssl.close
- end
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
+ }
}
start_server(ignore_listener_error: true) { |port|
@@ -377,6 +379,8 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
start_server { |port|
server_connect(port) { |ssl|
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
+
assert_raise(sslerr){ssl.post_connection_check("localhost.localdomain")}
assert_raise(sslerr){ssl.post_connection_check("127.0.0.1")}
assert(ssl.post_connection_check("localhost"))
@@ -398,6 +402,8 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
@svr_cert = issue_cert(@svr, @svr_key, 4, exts, @ca_cert, @ca_key)
start_server { |port|
server_connect(port) { |ssl|
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
+
assert(ssl.post_connection_check("localhost.localdomain"))
assert(ssl.post_connection_check("127.0.0.1"))
assert_raise(sslerr){ssl.post_connection_check("localhost")}
@@ -418,6 +424,8 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
@svr_cert = issue_cert(@svr, @svr_key, 5, exts, @ca_cert, @ca_key)
start_server { |port|
server_connect(port) { |ssl|
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
+
assert(ssl.post_connection_check("localhost.localdomain"))
assert_raise(sslerr){ssl.post_connection_check("127.0.0.1")}
assert_raise(sslerr){ssl.post_connection_check("localhost")}
@@ -644,6 +652,8 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
ssl.connect
assert_equal @cli_cert.serial, ssl.peer_cert.serial
assert_predicate fooctx, :frozen?
+
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
ensure
ssl&.close
sock.close
@@ -655,6 +665,8 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
ssl.hostname = "bar.example.com"
ssl.connect
assert_equal @svr_cert.serial, ssl.peer_cert.serial
+
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
ensure
ssl&.close
sock.close
@@ -727,7 +739,8 @@ class OpenSSL::TestSSL < OpenSSL::SSLTestCase
ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx)
ssl.hostname = name
if expected_ok
- assert_nothing_raised { ssl.connect }
+ ssl.connect
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
else
assert_handshake_error { ssl.connect }
end
@@ -856,6 +869,7 @@ end
start_server_version(:SSLv23, ctx_proc) { |port|
server_connect(port) { |ssl|
assert_equal(1, num_handshakes)
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
}
}
end
@@ -874,6 +888,7 @@ if openssl?(1, 0, 2) || libressl?
ctx.alpn_protocols = advertised
server_connect(port, ctx) { |ssl|
assert_equal(advertised.first, ssl.alpn_protocol)
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
}
}
end
@@ -996,14 +1011,11 @@ end
end
def test_close_after_socket_close
- server_proc = proc { |ctx, ssl|
- # Do nothing
- }
- start_server(server_proc: server_proc) { |port|
+ start_server { |port|
sock = TCPSocket.new("127.0.0.1", port)
ssl = OpenSSL::SSL::SSLSocket.new(sock)
- ssl.sync_close = true
ssl.connect
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
sock.close
assert_nothing_raised do
ssl.close
@@ -1068,6 +1080,7 @@ end
ctx.ciphers = "DEFAULT:!kRSA:!kEDH"
server_connect(port, ctx) { |ssl|
assert_instance_of OpenSSL::PKey::EC, ssl.tmp_key
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
}
end
end
@@ -1158,6 +1171,7 @@ end
assert_equal "secp384r1", ssl.tmp_key.group.curve_name
end
end
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
}
if openssl?(1, 0, 2) || libressl?(2, 5, 1)
@@ -1173,6 +1187,7 @@ end
server_connect(port, ctx) { |ssl|
assert_equal "secp521r1", ssl.tmp_key.group.curve_name
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
}
end
end
diff --git a/test/test_ssl_session.rb b/test/test_ssl_session.rb
index 6db0c2d1..78b160ed 100644
--- a/test/test_ssl_session.rb
+++ b/test/test_ssl_session.rb
@@ -113,6 +113,7 @@ __EOS__
non_resumable = nil
start_server { |port|
server_connect_with_session(port, nil, nil) { |ssl|
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
non_resumable = ssl.session
}
}
diff --git a/tool/ruby-openssl-docker/Dockerfile b/tool/ruby-openssl-docker/Dockerfile
index b8ed4bca..4e28493a 100644
--- a/tool/ruby-openssl-docker/Dockerfile
+++ b/tool/ruby-openssl-docker/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:18.04
RUN apt-get update && apt-get install -y --no-install-recommends \
autoconf \
@@ -29,21 +29,29 @@ RUN curl -s https://www.openssl.org/source/openssl-1.0.1u.tar.gz | tar -C /build
shared linux-x86_64 && \
make && make install_sw
-RUN curl -s https://www.openssl.org/source/openssl-1.0.2l.tar.gz | tar -C /build/openssl -xzf - && \
- cd /build/openssl/openssl-1.0.2l && \
+RUN curl -s https://www.openssl.org/source/openssl-1.0.2o.tar.gz | tar -C /build/openssl -xzf - && \
+ cd /build/openssl/openssl-1.0.2o && \
./Configure \
--openssldir=/opt/openssl/openssl-1.0.2 \
shared linux-x86_64 && \
make && make install_sw
-RUN curl -s https://www.openssl.org/source/openssl-1.1.0f.tar.gz | tar -C /build/openssl -xzf - && \
- cd /build/openssl/openssl-1.1.0f && \
+RUN curl -s https://www.openssl.org/source/openssl-1.1.0h.tar.gz | tar -C /build/openssl -xzf - && \
+ cd /build/openssl/openssl-1.1.0h && \
./Configure \
--prefix=/opt/openssl/openssl-1.1.0 \
enable-crypto-mdebug enable-crypto-mdebug-backtrace \
linux-x86_64 && \
make && make install_sw
+RUN curl -s https://www.openssl.org/source/openssl-1.1.1-pre8.tar.gz | tar -C /build/openssl -xzf - && \
+ cd /build/openssl/openssl-1.1.1-pre8 && \
+ ./Configure \
+ --prefix=/opt/openssl/openssl-1.1.1 \
+ enable-crypto-mdebug enable-crypto-mdebug-backtrace \
+ linux-x86_64 && \
+ make && make install_sw
+
# Supported libressl versions: 2.3-
RUN curl -s http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.3.10.tar.gz | tar -C /build/openssl -xzf - && \
cd /build/openssl/libressl-2.3.10 && \
@@ -63,30 +71,44 @@ RUN curl -s http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.5.5.tar.gz |
--prefix=/opt/openssl/libressl-2.5 && \
make && make install
-RUN curl -s http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.6.1.tar.gz | tar -C /build/openssl -xzf - && \
- cd /build/openssl/libressl-2.6.1 && \
+RUN curl -s http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.6.5.tar.gz | tar -C /build/openssl -xzf - && \
+ cd /build/openssl/libressl-2.6.5 && \
./configure \
--prefix=/opt/openssl/libressl-2.6 && \
make && make install
+RUN curl -s http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.7.4.tar.gz | tar -C /build/openssl -xzf - && \
+ cd /build/openssl/libressl-2.7.4 && \
+ ./configure \
+ --prefix=/opt/openssl/libressl-2.7 && \
+ make && make install
+
# Supported Ruby versions: 2.3-
RUN mkdir -p /build/ruby
-RUN curl -s https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.gz | tar -C /build/ruby -xzf - && \
- cd /build/ruby/ruby-2.3.5 && \
+RUN curl -s https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.gz | tar -C /build/ruby -xzf - && \
+ cd /build/ruby/ruby-2.3.7 && \
autoconf && ./configure \
--without-openssl \
--prefix=/opt/ruby/ruby-2.3 \
--disable-install-doc && \
make && make install
-RUN curl -s https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.gz | tar -C /build/ruby -xzf - && \
- cd /build/ruby/ruby-2.4.2 && \
+RUN curl -s https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.gz | tar -C /build/ruby -xzf - && \
+ cd /build/ruby/ruby-2.4.4 && \
autoconf && ./configure \
--without-openssl \
--prefix=/opt/ruby/ruby-2.4 \
--disable-install-doc && \
make && make install
+RUN curl -s https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz | tar -C /build/ruby -xzf - && \
+ cd /build/ruby/ruby-2.5.1 && \
+ autoconf && ./configure \
+ --without-openssl \
+ --prefix=/opt/ruby/ruby-2.5 \
+ --disable-install-doc && \
+ make && make install
+
ONBUILD ADD . /home/openssl/code
ONBUILD WORKDIR /home/openssl/code
diff --git a/tool/ruby-openssl-docker/init.sh b/tool/ruby-openssl-docker/init.sh
index 4d97e28c..a6bc6607 100755
--- a/tool/ruby-openssl-docker/init.sh
+++ b/tool/ruby-openssl-docker/init.sh
@@ -2,7 +2,7 @@
if [[ "$RUBY_VERSION" = "" ]]
then
- RUBY_VERSION=ruby-2.4
+ RUBY_VERSION=ruby-2.5
fi
if [[ "$OPENSSL_VERSION" = "" ]]