[ 
https://issues.apache.org/jira/browse/KNOX-3172?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tamás Hanicz updated KNOX-3172:
-------------------------------
    Description: 
The BC FIPS provider causes a SocketException with 'Broken Pipe' message on 
FIPS clusters. When there is a *connection: close* header in the response Knox 
tries to close the connection however there is an exception coming from BC. It 
tries to write to the already closed connection and we get the Broken Pipe 
issue and it results in HTTP 500 responses from Knox.

The solution catches and ignores this exception on the socket level. The 
intercepting socket would only load if FIPS arg is provided for Knox. This arg 
is defaults to com.safelogic.cryptocomply.fips.approved_only=true and can be 
changed in the gateway-site.xml.
{code:java}
java.net.SocketException: Broken pipe (Write failed)at 
java.net.SocketOutputStream.socketWrite0(Native Method)at 
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111)at 
java.net.SocketOutputStream.write(SocketOutputStream.java:155)at 
org.bouncycastle.tls.RecordStream.writeRecord(RecordStream.java:307)at 
org.bouncycastle.tls.TlsProtocol.safeWriteRecord(TlsProtocol.java:927)at 
org.bouncycastle.tls.TlsProtocol.raiseAlertWarning(TlsProtocol.java:1602)at 
org.bouncycastle.tls.TlsProtocol.handleClose(TlsProtocol.java:299)at 
org.bouncycastle.tls.TlsProtocol.close(TlsProtocol.java:1780)at 
org.bouncycastle.jsse.provider.ProvSSLSocketWrap.close(ProvSSLSocketWrap.java:154){code}

  was:
The BC FIPS provider causes a SocketException with 'Broken Pipe' message on 
FIPS clusters. It tries to write to a closed connection and it results in HTTP 
500 responses from Knox.

The solution catches and ignores this exception on the socket level. The 
intercepting socket would only load if FIPS arg is provided for Knox. This arg 
is defaults to com.safelogic.cryptocomply.fips.approved_only=true and can be 
changed in the gateway-site.xml.
{code:java}
java.net.SocketException: Broken pipe (Write failed)at 
java.net.SocketOutputStream.socketWrite0(Native Method)at 
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111)at 
java.net.SocketOutputStream.write(SocketOutputStream.java:155)at 
org.bouncycastle.tls.RecordStream.writeRecord(RecordStream.java:307)at 
org.bouncycastle.tls.TlsProtocol.safeWriteRecord(TlsProtocol.java:927)at 
org.bouncycastle.tls.TlsProtocol.raiseAlertWarning(TlsProtocol.java:1602)at 
org.bouncycastle.tls.TlsProtocol.handleClose(TlsProtocol.java:299)at 
org.bouncycastle.tls.TlsProtocol.close(TlsProtocol.java:1780)at 
org.bouncycastle.jsse.provider.ProvSSLSocketWrap.close(ProvSSLSocketWrap.java:154){code}


> BouncyCastle FIPS provider Broken Pipe exception
> ------------------------------------------------
>
>                 Key: KNOX-3172
>                 URL: https://issues.apache.org/jira/browse/KNOX-3172
>             Project: Apache Knox
>          Issue Type: Bug
>          Components: Server
>    Affects Versions: 2.1.0
>            Reporter: Tamás Hanicz
>            Assignee: Tamás Hanicz
>            Priority: Major
>
> The BC FIPS provider causes a SocketException with 'Broken Pipe' message on 
> FIPS clusters. When there is a *connection: close* header in the response 
> Knox tries to close the connection however there is an exception coming from 
> BC. It tries to write to the already closed connection and we get the Broken 
> Pipe issue and it results in HTTP 500 responses from Knox.
> The solution catches and ignores this exception on the socket level. The 
> intercepting socket would only load if FIPS arg is provided for Knox. This 
> arg is defaults to com.safelogic.cryptocomply.fips.approved_only=true and can 
> be changed in the gateway-site.xml.
> {code:java}
> java.net.SocketException: Broken pipe (Write failed)at 
> java.net.SocketOutputStream.socketWrite0(Native Method)at 
> java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111)at 
> java.net.SocketOutputStream.write(SocketOutputStream.java:155)at 
> org.bouncycastle.tls.RecordStream.writeRecord(RecordStream.java:307)at 
> org.bouncycastle.tls.TlsProtocol.safeWriteRecord(TlsProtocol.java:927)at 
> org.bouncycastle.tls.TlsProtocol.raiseAlertWarning(TlsProtocol.java:1602)at 
> org.bouncycastle.tls.TlsProtocol.handleClose(TlsProtocol.java:299)at 
> org.bouncycastle.tls.TlsProtocol.close(TlsProtocol.java:1780)at 
> org.bouncycastle.jsse.provider.ProvSSLSocketWrap.close(ProvSSLSocketWrap.java:154){code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to