@@ -835,11 +835,6 @@ def test_post_connection_check_wildcard_san
835835 # buzz.example.net, respectively). ...
836836 assert_equal ( true , OpenSSL ::SSL . verify_certificate_identity (
837837 create_cert_with_san ( 'DNS:baz*.example.com' ) , 'baz1.example.com' ) )
838-
839- # LibreSSL 3.5.0+ doesn't support other wildcard certificates
840- # (it isn't required to, as RFC states MAY, not MUST)
841- return if libressl?
842-
843838 assert_equal ( true , OpenSSL ::SSL . verify_certificate_identity (
844839 create_cert_with_san ( 'DNS:*baz.example.com' ) , 'foobaz.example.com' ) )
845840 assert_equal ( true , OpenSSL ::SSL . verify_certificate_identity (
@@ -923,11 +918,17 @@ def test_post_connection_check_wildcard_cn
923918 end
924919
925920 def create_cert_with_san ( san )
926- ef = OpenSSL ::X509 ::ExtensionFactory . new
927921 cert = OpenSSL ::X509 ::Certificate . new
928922 cert . subject = OpenSSL ::X509 ::Name . parse ( "/DC=some/DC=site/CN=Some Site" )
929- ext = ef . create_ext ( 'subjectAltName' , san )
930- cert . add_extension ( ext )
923+ v = OpenSSL ::ASN1 ::Sequence ( san . split ( "," ) . map { |item |
924+ type , value = item . split ( ":" , 2 )
925+ case type
926+ when "DNS" then OpenSSL ::ASN1 ::IA5String ( value , 2 , :IMPLICIT )
927+ when "IP" then OpenSSL ::ASN1 ::OctetString ( IPAddr . new ( value ) . hton , 7 , :IMPLICIT )
928+ else raise "unsupported"
929+ end
930+ } )
931+ cert . add_extension ( OpenSSL ::X509 ::Extension . new ( "subjectAltName" , v ) )
931932 cert
932933 end
933934
0 commit comments