-
Notifications
You must be signed in to change notification settings - Fork 285
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix permissions issues while reading keys in PKCS#1 format #3289
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -991,19 +991,34 @@ private SslContext buildSSLServerContext( | |
final SslProvider sslProvider, | ||
final ClientAuth authMode | ||
) throws SSLException { | ||
final SecurityManager sm = System.getSecurityManager(); | ||
|
||
final SslContextBuilder _sslContextBuilder = configureSSLServerContextBuilder( | ||
SslContextBuilder.forServer(_cert, _key, pwd), | ||
sslProvider, | ||
ciphers, | ||
authMode | ||
); | ||
|
||
if (_trustedCerts != null) { | ||
_sslContextBuilder.trustManager(_trustedCerts); | ||
if (sm != null) { | ||
sm.checkPermission(new SpecialPermission()); | ||
} | ||
|
||
return buildSSLContext0(_sslContextBuilder); | ||
try { | ||
final SslContextBuilder _sslContextBuilder = AccessController.doPrivileged(new PrivilegedExceptionAction<SslContextBuilder>() { | ||
@Override | ||
public SslContextBuilder run() throws Exception { | ||
return SslContextBuilder.forServer(_cert, _key, pwd) | ||
.ciphers(ciphers) | ||
.applicationProtocolConfig(ApplicationProtocolConfig.DISABLED) | ||
.clientAuth(Objects.requireNonNull(authMode)) // https://github.com/netty/netty/issues/4722 | ||
.sessionCacheSize(0) | ||
.sessionTimeout(0) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Where did these values come from, how can we confirm these are correct? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I just noticed that this is different on 2.x and main. I was testing with changes on the 2.9 branch where the error was seen, but then stashed my changes and applied them on main. I updated this to accommodate for the differences on |
||
.sslProvider(sslProvider); | ||
} | ||
}); | ||
|
||
if (_trustedCerts != null) { | ||
_sslContextBuilder.trustManager(_trustedCerts); | ||
} | ||
|
||
return buildSSLContext0(_sslContextBuilder); | ||
} catch (final PrivilegedActionException e) { | ||
throw (SSLException) e.getCause(); | ||
stephen-crawford marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
} | ||
|
||
private SslContextBuilder configureSSLServerContextBuilder( | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This permission covers read and write for all properties so anything else is redundant
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we investigate these other policy lines separately to minimize the surface area of this change?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The only PropertyPermission this code change removes is
permission java.util.PropertyPermission "org.apache.xml.security.ignoreLineBreaks", "write";
, but this explicit permission isn't required since there's already an item forpermission java.util.PropertyPermission "*","read,write";
near the top of this file. I removed another permission that was commented out as well.