@@ -958,19 +958,32 @@ private SslContext buildSSLServerContext(
958958 final ClientAuth authMode
959959 ) throws SSLException {
960960
961- final SslContextBuilder _sslContextBuilder = SslContextBuilder .forServer (_key , _cert )
962- .ciphers (ciphers )
963- .applicationProtocolConfig (ApplicationProtocolConfig .DISABLED )
964- .clientAuth (Objects .requireNonNull (authMode )) // https://github.com/netty/netty/issues/4722
965- .sessionCacheSize (0 )
966- .sessionTimeout (0 )
967- .sslProvider (sslProvider );
961+ try {
962+ final SslContextBuilder _sslContextBuilder = AccessController .doPrivileged (new PrivilegedExceptionAction <SslContextBuilder >() {
963+ @ Override
964+ public SslContextBuilder run () throws Exception {
965+ return SslContextBuilder .forServer (_key , _cert )
966+ .ciphers (ciphers )
967+ .applicationProtocolConfig (ApplicationProtocolConfig .DISABLED )
968+ .clientAuth (Objects .requireNonNull (authMode )) // https://github.com/netty/netty/issues/4722
969+ .sessionCacheSize (0 )
970+ .sessionTimeout (0 )
971+ .sslProvider (sslProvider );
972+ }
973+ });
968974
969- if (_trustedCerts != null && _trustedCerts .length > 0 ) {
970- _sslContextBuilder .trustManager (_trustedCerts );
971- }
975+ if (_trustedCerts != null && _trustedCerts .length > 0 ) {
976+ _sslContextBuilder .trustManager (_trustedCerts );
977+ }
972978
973- return buildSSLContext0 (_sslContextBuilder );
979+ return buildSSLContext0 (_sslContextBuilder );
980+ } catch (final PrivilegedActionException e ) {
981+ if (e .getCause () instanceof SSLException ) {
982+ throw (SSLException ) e .getCause ();
983+ } else {
984+ throw new RuntimeException (e );
985+ }
986+ }
974987 }
975988
976989 private SslContext buildSSLServerContext (
@@ -982,20 +995,38 @@ private SslContext buildSSLServerContext(
982995 final SslProvider sslProvider ,
983996 final ClientAuth authMode
984997 ) throws SSLException {
998+ final SecurityManager sm = System .getSecurityManager ();
985999
986- final SslContextBuilder _sslContextBuilder = SslContextBuilder .forServer (_cert , _key , pwd )
987- .ciphers (ciphers )
988- .applicationProtocolConfig (ApplicationProtocolConfig .DISABLED )
989- .clientAuth (Objects .requireNonNull (authMode )) // https://github.com/netty/netty/issues/4722
990- .sessionCacheSize (0 )
991- .sessionTimeout (0 )
992- .sslProvider (sslProvider );
993-
994- if (_trustedCerts != null ) {
995- _sslContextBuilder .trustManager (_trustedCerts );
1000+ if (sm != null ) {
1001+ sm .checkPermission (new SpecialPermission ());
9961002 }
9971003
998- return buildSSLContext0 (_sslContextBuilder );
1004+ try {
1005+ final SslContextBuilder _sslContextBuilder = AccessController .doPrivileged (new PrivilegedExceptionAction <SslContextBuilder >() {
1006+ @ Override
1007+ public SslContextBuilder run () throws Exception {
1008+ return SslContextBuilder .forServer (_cert , _key , pwd )
1009+ .ciphers (ciphers )
1010+ .applicationProtocolConfig (ApplicationProtocolConfig .DISABLED )
1011+ .clientAuth (Objects .requireNonNull (authMode )) // https://github.com/netty/netty/issues/4722
1012+ .sessionCacheSize (0 )
1013+ .sessionTimeout (0 )
1014+ .sslProvider (sslProvider );
1015+ }
1016+ });
1017+
1018+ if (_trustedCerts != null ) {
1019+ _sslContextBuilder .trustManager (_trustedCerts );
1020+ }
1021+
1022+ return buildSSLContext0 (_sslContextBuilder );
1023+ } catch (final PrivilegedActionException e ) {
1024+ if (e .getCause () instanceof SSLException ) {
1025+ throw (SSLException ) e .getCause ();
1026+ } else {
1027+ throw new RuntimeException (e );
1028+ }
1029+ }
9991030 }
10001031
10011032 private SslContext buildSSLClientContext (
@@ -1059,7 +1090,11 @@ public SslContext run() throws Exception {
10591090 }
10601091 });
10611092 } catch (final PrivilegedActionException e ) {
1062- throw (SSLException ) e .getCause ();
1093+ if (e .getCause () instanceof SSLException ) {
1094+ throw (SSLException ) e .getCause ();
1095+ } else {
1096+ throw new RuntimeException (e );
1097+ }
10631098 }
10641099
10651100 return sslContext ;
0 commit comments